사설 인증기관
조직 이 자체 인증기관을 운영하거나, TLS를 끊고 다시 서명하는 프록시를 두고 있다면, 포털이 그 인증기관을 신뢰하기 전까지 바깥으로 나가는 연결이 검증에 실패합니다. 대개 저장소를 내려받는 단계에서 스캔이 멈추거나, 취약점 데이터 갱신이 되지 않는 증상으로 나타납니다.
이 문서는 그 경우를 다룹니다. 바깥으로 나가는 연결 자체가 없는 망 분리 환경과는 다릅니다.
두 단계이고 순서가 있습니다
먼저 인증서를 컨테이너 안에 넣고, 그다음 도구들이 그 파일을 보게 합니다.
하나만 해서는 동작하지 않습니다. 두 번째가 틀리기 쉬운 쪽인데, 도구마다 읽는 변수가 다르고 같은 변수라도 도구마다 뜻이 다르기 때문입니다.
인증서를 넣습니다
backend, 두 워커, beat 컨테이너에 읽기 전용으로 마운트하고, 도구들이 그
파일을 보게 하는 변수도 같은 곳에 설정합니다. Docker Compose는
docker-compose.yml 옆에 덮어쓰기 파일을 두면 됩니다.
# docker-compose.override.yml
x-corp-ca-env: &corp-ca-env
SSL_CERT_FILE: /etc/ssl/corp-ca.pem
NODE_EXTRA_CA_CERTS: /etc/ssl/corp-ca.pem
REQUESTS_CA_BUNDLE: /etc/ssl/corp-ca.pem
GIT_SSL_CAINFO: /etc/ssl/corp-ca.pem
services:
backend:
volumes:
- /etc/ssl/corp/ca-bundle.pem:/etc/ssl/corp-ca.pem:ro
environment: *corp-ca-env
worker-scan:
volumes:
- /etc/ssl/corp/ca-bundle.pem:/etc/ssl/corp-ca.pem:ro
environment: *corp-ca-env
worker-default:
volumes:
- /etc/ssl/corp/ca-bundle.pem:/etc/ssl/corp-ca.pem:ro
environment: *corp-ca-env
beat:
volumes:
- /etc/ssl/corp/ca-bundle.pem:/etc/ssl/corp-ca.pem:ro
environment: *corp-ca-env
Compose가 docker-compose.override.yml을 자동으로 읽으므로, 업그레이드가
docker-compose.yml을 교체해도 이 설정은 그대로 남습니다. 이 변수들은 각
서비스의 기존 환경에 더해지며, 기존 환경을 대체하지 않습니다. 바꾼 뒤에는
docker-compose up -d로 반영합니다. bomlens-engine 프로필을 쓴다면
worker-engine에도 같은 항목을 추가합니다. 이 서비스는 그 프로필로 시작하지
않으면 실행되지 않습니다.
이 파일에는 사내 인증기관과 공용 루트 인증서를 함께 이어 붙여 둡니다. 이유는 다음 절에 있습니다.
cat /path/to/corp-root-ca.pem /etc/ssl/certs/ca-certificates.crt \
> /etc/ssl/corp/ca-bundle.pem