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 지원을 구성하는 프로세스는 설치 유형에 따라 다릅니다.

  1. Gitaly 서버용 인증서를 생성하세요.
  2. Gitaly 클라이언트에서, 인증서(또는 해당 인증서 기관)를 /etc/gitlab/trusted-certs로 복사하세요.

    sudo cp cert.pem /etc/gitlab/trusted-certs/
    
  3. 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' },
    })
    
  4. 파일을 저장하고 GitLab을 다시 구성하세요.
  5. 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
    
  6. 모든 Gitaly 서버 및 클라이언트에 Gitaly 서버 인증서(또는 해당 인증서 기관)를 /etc/gitlab/trusted-certs로 복사하여 Gitaly 서버와 클라이언트가 서로 호출하는 경우 또는 다른 Gitaly 서버에 액세스하는 경우에 인증서를 신뢰하도록 하세요.

    sudo cp cert1.pem cert2.pem /etc/gitlab/trusted-certs/
    
  7. /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',
       },
    }
    
  8. 파일을 저장하고 GitLab을 다시 구성하세요.
  9. Gitaly 클라이언트(예: Rails 애플리케이션)에서 sudo gitlab-rake gitlab:gitaly:check를 실행하여 Gitaly 서버에 연결할 수 있는지 확인하세요.
  10. Gitaly 연결 유형을 관찰하여 Gitaly 트래픽이 TLS로 제공되는지 확인하세요.
  11. 선택 사항. 보안을 강화하세요.
    1. /etc/gitlab/gitlab.rb에서 gitaly['configuration'][:listen_addr]의 주석 처리 및 삭제를 통해 비-TLS 연결을 사용하지 않도록 변경하세요.
    2. 파일을 저장하고
    3. GitLab을 다시 구성하세요.

Gitaly 연결 유형 확인

서비스되는 Gitaly 연결 유형을 확인하려면 해당 문서를 참조하세요.