OpenSSH의 AuthorizedPrincipalsCommand를 통한 사용자 조회

Tier: Free, Premium, Ultimate Offering: Self-Managed

기본 GitLab SSH 인증은 사용자가 SSH 전송을 사용하기 전에 SSH 공개 키를 업로드해야 한다는 요구 사항이 있습니다.

중앙 집중식(예: 기업) 환경에서는 특히 SSH 키가 사용자에게 발급되고 24시간 후에 만료되는 임시 키를 포함한 경우에는 운영 상의 문제가 될 수 있습니다.

이러한 설정에서는 GitLab에 지속적으로 새로운 키를 업로드해야 하는 외부 자동화된 프로세스가 필요합니다.

경고: AuthorizedKeysCommand가 지문을 받아들일 수 있어야 하므로 OpenSSH 버전 6.9+이 필요합니다. 서버의 OpenSSH 버전을 확인하세요.

왜 OpenSSH 인증서를 사용해야 하나요?

OpenSSH 인증서를 사용하면 GitLab 사용자 정보가 키 자체에 인코딩되며 OpenSSH 자체가 사용자가 이를 가장하는 것을 방지합니다. 올바르게 설정하면 GitLab에 사용자 SSH 키를 전혀 업로드할 필요가 없어집니다.

GitLab 셸을 통한 SSH 인증서 조회 설정

SSH 인증서를 완전히 설정하는 방법은 본 문서의 범위를 벗어납니다. 예를 들어 OpenSSH의 PROTOCOL.certkeys에서 작동 방식을 볼 수 있으며, 몇 가지 예로는 RedHat의 문서를 참조하십시오.

우리는 이미 SSH 인증서가 설정되어 있고 sshd_config에 CA의 TrustedUserCAKeys가 추가되었다고 가정합니다. 예를 들어:

TrustedUserCAKeys /etc/security/mycompany_user_ca.pub

보통 이러한 설정에서 TrustedUserCAKeysMatch User git 하위에 지정되지 않을 것입니다. 왜냐하면 이는 GitLab 서버 자체의 시스템 로그인에도 사용되기 때문입니다. 그러나 귀하의 설정에 따라 다를 수 있습니다. CA가 GitLab 전용으로 사용되는 경우 Match User git 섹션에 이를 넣는 것을 고려하십시오(아래 설명 참조).

해당 CA로부터 발급된 SSH 인증서는 그 사용자의 GitLab 사용자 이름에 해당하는 “키 ID”를 가져야 합니다. 예를 들어(간략한 출력을 일부 생략한):

$ ssh-add -L | grep cert | ssh-keygen -L -f -

(stdin):1:
        Type: ssh-rsa-cert-v01@openssh.com user certificate
        Public key: RSA-CERT SHA256:[...]
        Signing CA: RSA SHA256:[...]
        Key ID: "aearnfjord"
        Serial: 8289829611021396489
        Valid: from 2018-07-18T09:49:00 to 2018-07-19T09:50:34
        Principals:
                sshUsers
                [...]
        [...]

Turn on the translation for the next section if we have more information.

기타 보안 유의 사항

사용자는 여전히 SSH 인증서를 우회하여 수동으로 SSH 공개 키를 프로필에 업로드하고, ~/.ssh/authorized_keys를 통해 인증하는 방법을 의존할 수 있습니다.

SSH 키를 업로드하지 않은 사용자가 SSH 키를 업로드하지 못하도록 하는 설정을 추가하는 오픈 이슈가 있습니다.

이 제한을 직접 강제 적용할 수 있습니다. 예를 들어, AuthorizedKeysCommand를 제공하여 gitlab-shell-authorized-keys-check에서 반환된 발견된 키 ID가 배포 키인지 여부를 확인하는 검사를 만들 수 있습니다 (배포 키가 아닌 모든 키는 거부되어야 합니다).

사용자가 SSH 키가 없음에 대한 전역 경고를 비활성화

기본적으로 GitLab은 프로필에 SSH 키를 업로드하지 않은 사용자에게 “SSH를 통해 프로젝트 코드를 풀거나 푸시할 수 없습니다”라는 경고를 표시합니다.

이는 SSH 인증서를 사용할 때는 사용자가 자체 키를 업로드할 것으로 기대하지 않기 때문에 역생산적입니다.

이 경고를 전역적으로 비활성화하려면 “응용 프로그램 설정 -> 계정 및 제한 설정”으로 이동하여 “사용자 SSH 키 추가 메시지 표시” 설정을 비활성화하면 됩니다.

이 설정은 특히 SSH 인증서와 함께 사용하기 위해 추가되었지만, 다른 이유로 경고를 숨기고 싶다면 SSH 인증서를 사용하지 않고도 비활성화할 수 있습니다.