이중 확인 인증 강제 시행

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

이중 확인 인증(2FA)
은 사용자가 자신의 신원을 증명하기 위해 두 가지 서로 다른 요소를 제공해야 하는 인증 방법입니다:

  • 사용자명 및 비밀번호.
  • 애플리케이션에 의해 생성된 코드와 같은 두 번째 인증 방법.

2FA는 무단 사용자가 계정에 액세스하기 어렵게 만듭니다.
왜냐하면 두 가지 요소가 모두 필요하기 때문입니다.

note
만약 SSO를 사용하고 시행하고 있다면, 이미 IDP(Identity Provider) 측에서 2FA를 시행하고 있을 수 있습니다. GitLab에서도 2FA를 시행하는 것은 필요하지 않을 수 있습니다.

모든 사용자에 대한 2FA 강제 시행

Tier: Free, Premium, Ultimate Offering: Self-managed, GitLab Dedicated

관리자는 두 가지 방법으로 모든 사용자에 대해 2FA를 강제 시행할 수 있습니다:

  • 다음 로그인 시 강제 시행.
  • 다음 로그인 시 제안하되, 강제 시행 전에 유예 기간을 허용합니다.

    설정한 유예 기간이 경과한 후에는 사용자가 로그인할 수 있지만
    /-/profile/two_factor_auth에서 2FA 설정 영역을 벗어날 수 없습니다.

UI 또는 API를 사용하여 모든 사용자에 대해 2FA를 강제 시행할 수 있습니다.

UI 사용

  1. 왼쪽 사이드바에서 하단의 Admin을 선택합니다.
  2. Settings > General을 선택합니다.
  3. Sign-in restrictions을 확장합니다:
    • 이중 확인 인증 강제 시행을 선택하여 이 기능을 활성화합니다.
    • Two-factor grace period에 시간을 입력합니다. 다음 로그인 시 2FA를 시행하고 싶다면 0을 입력합니다.

API 사용

어플리케이션 설정 API를 사용하여 다음 설정을 수정합니다:

  • require_two_factor_authentication.
  • two_factor_grace_period.

자세한 내용은 API 호출을 통해 접근할 수 있는 설정 목록을 참조하세요.

관리자 사용자에 대한 2FA 강제 시행

Tier: Free, Premium, Ultimate Offering: Self-managed, GitLab Dedicated

관리자는 Self-managed 인스턴스의 관리자 사용자에 대해 2FA를 강제 시행할 수 있습니다.

  1. 왼쪽 사이드바에서 하단의 Admin을 선택합니다.
  2. 왼쪽 사이드바에서 Settings > General을 선택합니다.
  3. Sign-in restrictions 섹션을 확장합니다:
    1. 관리자가 2FA를 활성화해야 함을 선택합니다.
    2. Two-factor grace period에 시간을 입력합니다. 다음 로그인 시 2FA를 시행하고 싶다면 0을 입력합니다.
  4. 변경 사항 저장을 선택합니다.
note
외부 공급자를 사용하여 GitLab에 로그인하는 경우, 이 설정은 사용자에게 2FA를 강제 시행 하지 않습니다. 2FA는 해당 외부 공급자에서 활성화되어야 합니다.

그룹 내 모든 사용자에 대한 2FA 강제 시행

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

선행 조건:

  • 해당 그룹에 대해 Maintainer 또는 Owner 역할이 있어야 합니다.

특정 그룹에 대해서만 2FA를 강제 시행하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. Settings > General을 선택합니다.
  3. Permissions and group features을 확장합니다.
  4. 이 그룹의 모든 사용자는 이중 확인 인증을 설정해야 합니다를 선택합니다.
  5. 선택 사항. 2FA 시행 지연(시간)에 유예 기간을 원하시는 시간 수를 입력합니다.
    최상위 그룹과 하위 그룹 및 프로젝트에 여러 다른 유예 기간이 있는 경우, 가장 짧은 유예 기간이 사용됩니다.
  6. 변경 사항 저장을 선택합니다.

강제 시행은 그룹 내 모든 직접 및 상속된 구성원에게 영향을 미칩니다.

액세스 토큰은 API 기반이므로 인증을 위한 두 번째 요소를 제공하는 데 필요하지 않습니다.
2FA가 강제 시행되기 전에 생성된 토큰은 유효성을 유지합니다.

GitLab의 수신 이메일 기능은 2FA 강제 시행을 따르지 않습니다.
사용자는 2FA를 먼저 인증하지 않고도 문제를 생성하거나 병합 요청에 댓글을 달 수 있습니다.
이것은 2FA가 강제 시행되더라도 해당됩니다.

하위 그룹의 2FA

상위 그룹과 동일한 방식으로 개별 하위 그룹에 대해 2FA를 활성화하고 적용할 수 있습니다.

하위 그룹이 자체 2FA 요구 사항을 설정하지 못하도록 방지할 수 있습니다:

  1. 상위 그룹의 설정 > 일반으로 이동합니다.
  2. 권한 및 그룹 기능 섹션을 확장합니다.
  3. 하위 그룹이 자체 2단계 인증 규칙을 설정할 수 있도록 허용 체크 박스를 해제합니다.

이 작업은 2FA 요구 사항이 있는 모든 하위 그룹이 회원에게 2FA를 요구하지 않도록 합니다.

프로젝트의 2FA

2FA를 활성화하거나 적용하는 그룹에 속하는 프로젝트가 2FA를 활성화하거나 적용하지 않는 그룹과 공유되는 경우, 비 2FA 그룹의 회원은 해당 프로젝트에 2FA 없이 접근할 수 있습니다. 예를 들어:

  • 그룹 A는 2FA를 활성화하고 적용합니다. 그룹 B는 2FA가 활성화되지 않았습니다.
  • 그룹 A에 속하는 프로젝트, P가 그룹 B와 공유되면, 그룹 B의 회원은 2FA 없이 프로젝트 P에 접근할 수 있습니다.

이러한 일이 발생하지 않도록 프로젝트 공유 방지를 2FA 그룹에 대해 설정하세요.

2FA가 활성화된 그룹 또는 하위 그룹의 프로젝트에 회원을 추가하면, 개별적으로 추가된 회원에게는 2FA가 필수가 아닙니다.

2FA 비활성화

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

단일 사용자 또는 모든 사용자에 대해 2FA를 비활성화할 수 있습니다.

이는 영구적이고 복구할 수 없는 작업입니다. 사용자는 다시 사용하기 위해 2FA를 재활성화해야 합니다.

경고: 사용자에 대한 2FA 비활성화는 모든 사용자에 대한 2FA 적용 또는 그룹 내 모든 사용자에 대한 2FA 적용 설정을 비활성화하지 않습니다. 사용자가 GitLab에 다시 로그인할 때 2FA를 다시 설정하라는 요청을 받지 않도록 강제 적용된 2FA 설정도 비활성화해야 합니다.

단일 사용자에 대해

관리자

단일 관리자의 2FA를 비활성화하기 위해 Rails 콘솔을 사용할 수 있습니다:

admin = User.find_by_username('<USERNAME>')
user_to_disable = User.find_by_username('<USERNAME>')

TwoFactor::DestroyService.new(admin, user: user_to_disable).execute

관리자는 2FA가 비활성화되었음을 통보받습니다.

비관리자

GitLab 15.2 이후 버전에서는 Rails 콘솔 또는 API 엔드포인트를 사용하여 비관리자의 2FA를 비활성화할 수 있습니다.

자신의 계정에 대해 2FA를 비활성화할 수 있습니다.

관리자의 2FA를 비활성화하기 위해 API 엔드포인트를 사용할 수 없습니다.

모든 사용자에 대해

강제로 2FA가 비활성화된 경우에도 모든 사용자에 대해 2FA를 비활성화하려면 다음 Rake 작업을 사용합니다.

  • 리눅스 패키지를 사용하는 설치의 경우:

    sudo gitlab-rake gitlab:two_factor:disable_for_all_users
    
  • 스스로 컴파일한 설치의 경우:

    sudo -u git -H bundle exec rake gitlab:two_factor:disable_for_all_users RAILS_ENV=production
    

Git over SSH 작업을 위한 2FA

Tier: Premium, Ultimate Offering: Self-managed
  • 기본적으로 비활성화된 상태로 기능 플래그 뒤에 배포됩니다.
  • GitLab 15.3에서 도입된 푸시 알림 지원 소개됨.

자체 관리되는 GitLab에서는 기본적으로 이 기능이 제공되지 않습니다. 이를 활성화하려면 관리자가 two_factor_for_cli라는 기능 플래그를 활성화할 수 있습니다. GitLab.com 및 GitLab Dedicated에서는 이 기능이 제공되지 않습니다. 이 기능은 생산 사용 준비가 되지 않았습니다. 이 기능 플래그는 2FA가 활성화된 경우 Git 작업의 세션 지속 시간에도 영향을 미칩니다.

Git over SSH 작업에 대해 2FA를 강제 적용할 수 있습니다. 그러나 ED25519_SK 또는 ECDSA_SK SSH 키를 사용하는 것이 좋습니다. 2FA는 Git 작업에 대해서만 강제 적용되며, personal_access_token과 같은 내부 명령은 제외됩니다.

일회성 비밀번호(OTP) 인증을 수행하려면 다음을 실행하십시오:

ssh git@<hostname> 2fa_verify

그런 다음 다음 중 하나로 인증합니다:

인증에 성공하면 연결된 SSH 키를 사용하여 15분(기본값) 동안 Git over SSH 작업을 수행할 수 있습니다.

보안 제한 사항

2FA는 손상된 개인 SSH 키를 가진 사용자를 보호하지 않습니다.

OTP가 확인된 후에는 누구나 해당 개인 SSH 키로 Git over SSH를 실행할 수 있으며, 설정된 세션 지속 시간 동안 사용할 수 있습니다.