이중 인증

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed

이중 인증(2FA)은 GitLab 계정에 추가적인 보안 수준을 제공합니다. 다른 사용자가 귀하의 계정에 접근하려면 귀하의 사용자 이름과 암호와 함께 귀하의 두 번째 인증 요소에 액세스해야 합니다.

GitLab은 다음과 같은 두 번째 인증 요소를 지원합니다:

  • 시간 기반 일회용 비밀번호(TOTP) (RFC 6238). 활성화하면 로그인할 때 코드를 입력하라는 GitLab의 프롬프트가 표시됩니다. 코드는 일회용 비밀번호 인증기(예: 귀하의 기기 중 하나에 있는 암호 관리자)에 의해 생성됩니다.
  • WebAuthn 기기. 로그인할 때 사용자 이름과 암호를 제공하면 WebAuthn 기기를 활성화하라는 메시지가 표시됩니다(일반적으로 버튼을 누르는 방식). 이는 귀하를 대신하여 안전한 인증을 수행합니다.

기기를 설정하면 기기를 분실한 경우에도 계정에 여전히 액세스할 수 있도록 TOTP도 설정하세요.

개인 액세스 토큰과 함께 이중 인증 사용

2FA가 활성화된 상태에서는 HTTPS를 통해 Git 또는 GitLab API에 대해 암호를 사용할 수 없습니다. 대신 개인 액세스 토큰을 사용할 수 있습니다.

OAuth 자격 증명 도우미

다음 Git 자격 증명 도우미는 OAuth를 사용하여 GitLab에 인증합니다. 이는 이중 인증과 호환됩니다. 처음으로 인증할 때 도우미는 웹 브라우저를 열고 GitLab이 앱을 승인하도록 요청합니다. 그 다음부터는 상호 작용이 필요하지 않습니다.

Git 자격 증명 관리자

Git 자격 증명 관리자 (GCM)은 기본적으로 OAuth를 사용하여 인증합니다. GCM은 어떠한 수동 구성 없이 GitLab.com을 지원합니다. Self-Managed GitLab에서 GCM을 사용하려면 GitLab 지원을 참조하세요.

모든 푸시에서 다시 인증할 필요가 없도록 GCM은 세션 간 지속되는 캐싱과 다양한 플랫폼별 자격 증명 저장소를 지원합니다. 이 기능은 개인 액세스 토큰이나 OAuth를 사용하든 유용합니다.

Git for Windows에는 Git 자격 증명 관리자가 포함되어 있습니다.

Git 자격 증명 관리자는 주로 GitHub, Inc.에서 개발되었으며 커뮤니티에서 지원을 받고 있는 오픈 소스 프로젝트입니다.

git-credential-oauth

git-credential-oauth는 GitLab.com 및 여러 인기 있는 공개 호스트를 어떠한 수동 구성 없이 지원합니다. Self-Managed GitLab에서 사용하려면 git-credential-oauth 사용자 정의 호스트 문서를 참조하세요.

많은 Linux 배포에는 git-credential-oauth가 패키지로 포함되어 있습니다.

git-credential-oauth는 커뮤니티에서 지원을 받고 있는 오픈 소스 프로젝트입니다.

이중 인증 활성화

다음 중 하나를 사용하여 2FA를 활성화할 수 있습니다:

  • 일회용 비밀번호 인증기. 2FA를 활성화한 후 복구 코드를 백업하세요.
  • WebAuthn 기기.

2FA를 활성화하려면 계정 이메일을 확인해야 합니다.

일회용 비밀번호 활성화

일회용 비밀번호로 2FA를 활성화하려면:

  1. GitLab에서:
    1. 사용자 설정에 액세스합니다.
    2. 계정을 선택합니다.
    3. 이중 인증 활성화를 선택합니다.
  2. 기기(일반적으로 귀하의 휴대폰)에서:
    1. 호환되는 응용 프로그램을 설치하세요. 예:
    2. 응용 프로그램에서 새 항목을 다음 두 가지 방법 중 하나로 추가합니다:
      • GitLab이 표시하는 코드를 기기 카메라로 스캔하여 항목을 자동으로 추가합니다.
      • 제공된 세부 정보를 입력하여 항목을 수동으로 추가합니다.
  3. GitLab에서:
    1. 기기에 있는 항목으로부터 6자리 핀 번호를 입력하세요.
    2. 현재 암호를 입력하세요.
    3. 제출을 선택하세요.

올바른 핀을 입력한 경우, GitLab은 복구 코드 목록을 표시합니다. 이를 다운로드하여 안전한 위치에 보관하세요.

FortiAuthenticator를 사용하여 일회용 비밀번호 활성화

Self-Managed GitLab에서는 기본적으로 이 기능을 사용할 수 없습니다. 사용자당 사용하도록 하려면 관리자가 forti_authenticator라는 기능 플래그를 활성화할 수 있습니다. GitLab.com 및 GitLab Dedicated에서는 본 기능을 사용할 수 없습니다.

FortiAuthenticator를 GitLab에서 일회용 비밀번호 (OTP) 제공자로 사용할 수 있습니다. 사용자는 다음을 준수해야 합니다:

  • 동일한 사용자 이름으로 FortiAuthenticator 및 GitLab에 존재해야 합니다.
  • FortiAuthenticator에 FortiToken이 구성되어 있어야 합니다.

FortiAuthenticator의 사용자 이름과 엑세스 토큰이 필요합니다. 아래 표시된 access_token은 FortAuthenticator 액세스 키입니다. 토큰을 얻으려면 Fortinet 문서 라이브러리의 REST API 솔루션 가이드를 참조하세요. FortAuthenticator 버전 6.2.0에서 테스트되었습니다.

GitLab에서 FortiAuthenticator를 구성합니다. 귀하의 GitLab 서버에서:

  1. 구성 파일을 엽니다.

    Linux 패키지 설치의 경우:

    sudo editor /etc/gitlab/gitlab.rb
    

    자체 컴파일 설치의 경우:

    cd /home/git/gitlab
    sudo -u git -H editor config/gitlab.yml
    
  2. 공급자 구성을 추가합니다.

    Linux 패키지 설치의 경우:

    gitlab_rails['forti_authenticator_enabled'] = true
    gitlab_rails['forti_authenticator_host'] = 'forti_authenticator.example.com'
    gitlab_rails['forti_authenticator_port'] = 443
    gitlab_rails['forti_authenticator_username'] = '<some_username>'
    gitlab_rails['forti_authenticator_access_token'] = 's3cr3t'
    

    자체 컴파일 설치의 경우:

    forti_authenticator:
      enabled: true
      host: forti_authenticator.example.com
      port: 443
      username: <some_username>
      access_token: s3cr3t
    
  3. 구성 파일을 저장합니다.
  4. 구성을 다시 설정 (Linux 패키지 설치)하거나 다시 시작 (자체 컴파일 설치)합니다.

Cisco Duo를 사용하여 일회용 비밀번호 활성화

자체 관리형 GitLab의 경우, 기본적으로 이 기능이 사용 가능합니다. 그러나 GitLab.com에서는 이 기능을 사용할 수 없습니다.

GitLab에서 OTP(일회용 비밀번호) 공급자로 Cisco Duo를 사용할 수 있습니다.

DUO®는 Cisco Systems, Inc.의 등록 상표이며, 미국 및 특정 다른 국가에서 해당됩니다.

사전 요구 사항

Cisco Duo를 OTP 공급자로 사용하려면:

  • 여러분의 계정이 Cisco Duo 및 GitLab 모두에 동일한 사용자 이름으로 존재해야 합니다.
  • Cisco Duo를 구성하고 통합 키, 비밀 키 및 API 호스트명이 있어야 합니다.

자세한 내용은 Cisco Duo API 설명서를 참조하십시오.

GitLab 15.10은 Cisco Duo 버전 D261.14와 테스트되었습니다.

GitLab에서 Cisco Duo 구성

여러분의 GitLab 서버에서:

  1. 구성 파일을 엽니다.

    Linux 패키지 설치의 경우:

    sudo editor /etc/gitlab/gitlab.rb
    

    직접 컴파일한 설치의 경우:

    cd /home/git/gitlab
    sudo -u git -H editor config/gitlab.yml
    
  2. 공급자 구성을 추가합니다.

    Linux 패키지 설치의 경우:

     gitlab_rails['duo_auth_enabled'] = false
     gitlab_rails['duo_auth_integration_key'] = '<duo_integration_key_value>'
     gitlab_rails['duo_auth_secret_key'] = '<duo_secret_key_value>'
     gitlab_rails['duo_auth_hostname'] = '<duo_api_hostname>'
    

    직접 컴파일한 설치의 경우:

    duo_auth:
      enabled: true
      hostname: <duo_api_hostname>
      integration_key: <duo_integration_key_value>
      secret_key: <duo_secret_key_value>
    
  3. 구성 파일을 저장합니다.
  4. Linux 패키지 설치의 경우, GitLab을 다시 구성합니다. 직접 컴파일한 설치의 경우, GitLab을 다시 시작합니다.

FortiToken Cloud를 사용하여 일회용 비밀번호 활성화

Offering: Self-managed
자체 관리형 GitLab의 경우, 기본적으로 이 기능이 사용할 수 없습니다. 사용자 당 사용 가능하게 만들려면 관리자가 forti_token_cloud라는 기능 플래그를 활성화할 수 있습니다. GitLab.com 및 GitLab Dedicated의 경우, 이 기능을 사용할 수 없습니다. 이 기능은 운영에 사용할 준비가 되어 있지 않습니다.

GitLab에서 일회용 비밀번호(OTP) 공급자로 FortiToken Cloud를 사용할 수 있습니다. 사용자는 다음을 준수해야 합니다:

  • FortiToken Cloud 및 GitLab에 동일한 사용자 이름으로 존재해야 합니다.
  • FortiToken Cloud에서 FortiToken이 구성되어 있어야 합니다.

FortiToken Cloud를 구성하려면 client_idclient_secret이 필요합니다. 이를 얻으려면 Fortinet 문서 라이브러리에서 REST API 가이드를 참조하십시오.

GitLab에서 FortiToken Cloud를 구성합니다. 여러분의 GitLab 서버에서:

  1. 구성 파일을 엽니다.

    Linux 패키지 설치의 경우:

    sudo editor /etc/gitlab/gitlab.rb
    

    직접 컴파일한 설치의 경우:

    cd /home/git/gitlab
    sudo -u git -H editor config/gitlab.yml
    
  2. 공급자 구성을 추가합니다.

    Linux 패키지 설치의 경우:

    gitlab_rails['forti_token_cloud_enabled'] = true
    gitlab_rails['forti_token_cloud_client_id'] = '<your_fortinet_cloud_client_id>'
    gitlab_rails['forti_token_cloud_client_secret'] = '<your_fortinet_cloud_client_secret>'
    

    직접 컴파일한 설치의 경우:

    forti_token_cloud:
      enabled: true
      client_id: YOUR_FORTI_TOKEN_CLOUD_CLIENT_ID
      client_secret: YOUR_FORTI_TOKEN_CLOUD_CLIENT_SECRET
    
  3. 구성 파일을 저장합니다.
  4. 다시 구성합니다(Linux 패키지 설치의 경우) 또는 다시 시작합니다(직접 컴파일한 설치의 경우).

WebAuthn 디바이스 설정

  • 웹사이트에서 선택적일회용 비밀번호 인증을 도입됨 (기능 플래그: webauthn_without_totp)한 GitLab 15.10.
자체 관리형 GitLab의 경우, 기본적으로 웹사이트에서 선택적으로 WebAuthn 디바이스의 일회용 비밀번호 인증을 사용할 수 없습니다. 이 기능을 사용하려면 관리자가 webauthn_without_totp라는 기능 플래그를 활성화해야 합니다. GitLab.com에서는 이 기능을 사용할 수 있습니다. GitLab Dedicated의 경우, 이 기능을 사용할 수 없습니다.

WebAuthn은 다음에서 지원됨:

  • 데스크탑 브라우저:
    • Chrome
    • Edge
    • Firefox
    • Opera
    • Safari
  • 모바일 브라우저:
    • Android용 Chrome
    • Android용 Firefox
    • iOS 13.3부터의 Safari

WebAuthn 호환 디바이스를 사용하여 2단계 인증을 설정하려면:

  1. 선택 사항. 일회용 비밀번호 설정.
  2. 사용자 설정에 액세스합니다.
  3. 계정을 선택합니다.
  4. 이중 인증 활성화를 선택합니다.
  5. WebAuthn 디바이스를 연결합니다.
  6. 디바이스 이름을 입력하고 GitLab 15.10부터는 GitLab 계정 암호를 입력합니다. 신원 공급자를 통해 로그인한 경우, 이 암호를 입력할 필요가 없을 수 있습니다.
  7. 새 WebAuthn 장치 설정을 선택합니다.
  8. 디바이스에 따라 버튼을 누르거나 센서를 터치해야 할 수 있습니다.

성공적으로 장치를 설정했음을 나타내는 메시지를 받아야 합니다.

WebAuthn 호환 장치로 2단계 인증을 설정하면 해당 장치가 특정 컴퓨터의 특정 브라우저에 연결됩니다. 브라우저 및 WebAuthn 장치에 따라 브라우저나 컴퓨터를 변경하여 WebAuthn 장치를 사용하는 설정을 구성할 수도 있습니다.

이번이 2단계 인증을 설정한 첫 번째 경우라면, 브라우저 데이터를 지우면 계정에 액세스 권한을 되찾기 위해 복구 코드를 다운로드해야 합니다.

경고: 브라우저 데이터를 지우면 계정에 액세스할 수 없게 됩니다.

복구 코드

2FA(이중 인증)를 성공적으로 활성화한 직후에는 일회용 비밀번호로 복구 코드 세트를 다운로드할 것을 요청받습니다. 일회용 비밀번호 인증기에 대한 액세스 권한을 잃는 경우 이러한 복구 코드 중 하나를 사용하여 계정에 로그인할 수 있습니다.

경고: 각 코드는 계정에 로그인하는 데 한 번만 사용할 수 있습니다.

복구 코드를 복사하고 인쇄하거나 코드 다운로드를 선택하여 안전한 위치에 저장하십시오. 코드를 다운로드하는 경우 파일은 gitlab-recovery-codes.txt로 호출됩니다.

  • 복구 코드는 WebAuthn 기기에 대해 생성되지 않습니다.
  • gitlab-sshd는 복구 코드를 다시 생성하는 데 적합하지 않습니다.

복구 코드를 분실하거나 새로 생성하려면 다음 중 하나를 사용할 수 있습니다.

이중 인증 복구 코드 다시 생성

2FA 복구 코드를 다시 생성하려면 데스크톱 브라우저에 액세스해야 합니다.

  1. 사용자 설정에 액세스합니다.
  2. 계정 > 이중 인증(2FA)을 선택합니다.
  3. 이미 2FA를 구성했다면 이중 인증 관리를 선택합니다.
  4. 이중 인증 해제 섹션에서 복구 코드 다시 생성을 선택합니다.
  5. 대화 상자에서 현재 암호를 입력하고 복구 코드 다시 생성을 선택합니다.

참고: 2FA 복구 코드를 다시 생성하면 저장해야 합니다. 이전에 생성된 2FA 코드는 사용할 수 없습니다.

이중 인증이 활성화된 상태에서 로그인

2FA로 로그인하는 것은 일반적인 로그인 프로세스와 약간 다릅니다. 사용자 이름과 암호를 입력한 후에는 2FA를 활성화했는지에 따라 두 번째 프롬프트가 표시됩니다.

일회용 비밀번호 사용하여 로그인

요청 시 일회용 비밀번호 인증 응용 프로그램 또는 복구 코드를 입력하여 로그인합니다.

WebAuthn 기기 사용하여 로그인

지원되는 브라우저에서 자격 증명을 입력한 후에는 WebAuthn 기기를 자동으로 활성화하도록 요청될 것입니다(예: 터치하거나 버튼을 누릅니다).

장치가 인증 요청에 응답했다는 메시지가 표시되고 자동으로 로그인됩니다.

이중 인증 비활성화

TOTP(시간 기반 일회용 비밀번호) 인증기 및 WebAuthn 기기를 개별적으로 또는 동시에 비활성화할 수 있습니다. 동시에 비활성화하려면 다음을 수행합니다.

  1. 사용자 설정에 액세스합니다.
  2. 계정을 선택합니다.
  3. 이중 인증 관리를 선택합니다.
  4. 이중 인증 비활성화 섹션에서 이중 인증 비활성화를 선택합니다.
  5. 대화 상자에서 현재 암호를 입력하고 이중 인증 비활성화를 선택합니다.

이렇게 하면 모바일 애플리케이션 및 WebAuthn 기기를 포함한 모든 2FA 등록이 지워집니다.

GitLab 관리자를 위한 정보

Tier: Free, Premium, Ultimate Offering: Self-managed
  • GitLab 백업을 복원한 후 2FA가 계속 작동하는지 주의하세요.
  • 시간 기반 일회용 비밀번호(TOTP) 서버에서 2FA가 올바르게 인가되도록 하려면 NTP와 같은 서비스를 사용하여 GitLab 서버의 시간을 동기화하십시오. 그렇지 않으면 시간 차이때문에 항상 인가에 실패할 수 있습니다.
  • GitLab WebAuthn 구현은 GitLab 인스턴스가 여러 호스트 이름 또는 FQDN(전체 품질 도메인 이름)에서 액세스되는 경우에 작동하지 않습니다. 각 WebAuthn 등록은 등록 시의 _현재 호스트 이름_에 연결되며 다른 호스트 이름이나 FQDN에 사용할 수 없습니다.

    예를 들어 사용자가 first.host.xyzsecond.host.xyz에서 GitLab 인스턴스에 액세스하려고 하는 경우:

    • 사용자가 first.host.xyz를 통해 로그인하고 WebAuthn 키를 등록합니다.
    • 사용자가 로그아웃한 후 first.host.xyz를 사용하여 로그인하려고 하면 WebAuthn 인증이 성공합니다.
    • 사용자가 로그아웃한 후 second.host.xyz를 통해 로그인하려고 하면 WebAuthn 인증이 first.host.xyz에 키가 등록되었기 때문에 실패합니다.
  • 시스템 또는 그룹 수준에서 2FA를 강제로 적용하려면 이중 인증 강제 적용을 참조하세요.