Gitaly TLS 지원
Gitaly는 TLS 암호화를 지원합니다. 보안 연결을 수신 대기하는 Gitaly 인스턴스와 통신하려면 GitLab 구성의 해당 리포지터리 항목의 gitaly_address
에서 tls://
URL scheme을 사용하세요.
Gitaly는 TLS 연결에서 서버 인증서를 클라이언트 인증서로 제공합니다. 이는 클라이언트 인증서를 유효성 검사하여 GitLab에 액세스 권한을 부여하는 역방향 프록시(예: NGINX)와 결합하여 상호 TLS 인증 전략의 일부로 사용될 수 있습니다.
자동으로 제공되지 않으므로 사용자가 고유의 인증서를 제공해야 합니다. 각 Gitaly 서버에 해당하는 인증서를 해당 Gitaly 서버에 설치해야 합니다.
또한 해당 인증서(또는 해당 인증서 기관)는 모든 다음 위치에 설치되어야 합니다.
- Gitaly 서버.
- 이와 통신하는 Gitaly 클라이언트.
로드 밸런서를 사용하는 경우 ALPN TLS 확장을 사용하여 HTTP/2를 협상할 수 있어야 합니다.
인증서 요구 사항
- 인증서는 Gitaly 서버에 액세스하는 데 사용하는 주소를 지정해야 합니다. 호스트명 또는 IP 주소를 인증서의 Subject Alternative Name으로 추가해야 합니다.
- Gitaly 서버를 동시에 암호화되지 않은 수신 주소
listen_addr
와 암호화된 수신 주소tls_listen_addr
로 구성할 수 있습니다. 이를 통해 필요시 암호화되지 않은 트래픽에서 점진적으로 암호화된 트래픽으로 전환할 수 있습니다. - 인증서의 공용 이름 필드는 무시됩니다.
TLS로 Gitaly 구성
TLS 지원을 구성하기 전에 Gitaly를 구성하세요.
TLS 지원을 구성하는 프로세스는 설치 유형에 따라 다릅니다.
- Gitaly 서버용 인증서를 생성하세요.
-
Gitaly 클라이언트에서, 인증서(또는 해당 인증서 기관)를
/etc/gitlab/trusted-certs
로 복사하세요.sudo cp cert.pem /etc/gitlab/trusted-certs/
-
Gitaly 클라이언트에서
/etc/gitlab/gitlab.rb
에서git_data_dirs
를 다음과 같이 편집하세요.git_data_dirs({ 'default' => { 'gitaly_address' => 'tls://gitaly1.internal:9999' }, 'storage1' => { 'gitaly_address' => 'tls://gitaly1.internal:9999' }, 'storage2' => { 'gitaly_address' => 'tls://gitaly2.internal:9999' }, })
- 파일을 저장하고 GitLab을 다시 구성하세요.
-
Gitaly 서버에서
/etc/gitlab/ssl
디렉터리를 생성하고 키 및 인증서를 복사하세요.sudo mkdir -p /etc/gitlab/ssl sudo chmod 755 /etc/gitlab/ssl sudo cp key.pem cert.pem /etc/gitlab/ssl/ sudo chmod 644 key.pem cert.pem
-
모든 Gitaly 서버 및 클라이언트에 Gitaly 서버 인증서(또는 해당 인증서 기관)를
/etc/gitlab/trusted-certs
로 복사하여 Gitaly 서버와 클라이언트가 서로 호출하는 경우 또는 다른 Gitaly 서버에 액세스하는 경우에 인증서를 신뢰하도록 하세요.sudo cp cert1.pem cert2.pem /etc/gitlab/trusted-certs/
-
/etc/gitlab/gitlab.rb
를 편집하고 다음을 추가하세요.gitaly['configuration'] = { # ... tls_listen_addr: '0.0.0.0:9999', tls: { certificate_path: '/etc/gitlab/ssl/cert.pem', key_path: '/etc/gitlab/ssl/key.pem', }, }
- 파일을 저장하고 GitLab을 다시 구성하세요.
- Gitaly 클라이언트(예: Rails 애플리케이션)에서
sudo gitlab-rake gitlab:gitaly:check
를 실행하여 Gitaly 서버에 연결할 수 있는지 확인하세요. - Gitaly 연결 유형을 관찰하여 Gitaly 트래픽이 TLS로 제공되는지 확인하세요.
- 선택 사항. 보안을 강화하세요.
-
/etc/gitlab/gitlab.rb
에서gitaly['configuration'][:listen_addr]
의 주석 처리 및 삭제를 통해 비-TLS 연결을 사용하지 않도록 변경하세요. - 파일을 저장하고
- GitLab을 다시 구성하세요.
-
Gitaly 연결 유형 확인
서비스되는 Gitaly 연결 유형을 확인하려면 해당 문서를 참조하세요.