이중 인증 강제하기

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

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

  • 사용자 이름과 암호.
  • 응용 프로그램에서 생성된 코드와 같은 두 번째 인증 방법.

2FA는 계정에 무단으로 접근하는 것을 더 어렵게 만드는데, 이는 두 가지 요소가 필요하기 때문입니다.

참고: 만약 SSO를 사용하고 강제하는 경우, 실제로 IDP(Identity Provider) 쪽에서 이미 2FA를 강제할 수 있습니다. GitLab에서도 2FA를 강제하는 것은 불필요할 수 있습니다.

모든 사용자에게 2FA 강제하기

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

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

  • 다음 로그인 시에 강제.
  • 다음 로그인 시에 권장하지만 강제하기 전에 약정 기간을 허용.

    구성된 약정 기간이 경과한 후 사용자는 로그인할 수 있지만 /-/profile/two_factor_auth의 2FA 구성 영역을 떠날 수 없습니다.

모든 사용자에게 2FA를 강제하는 데 UI 또는 API를 사용할 수 있습니다.

UI 사용

  1. 왼쪽 사이드바에서 가장 아래에서 관리 영역(Admin Area)을 선택합니다.
  2. 설정 > 일반(General)을 선택합니다.
  3. 로그인 제한(Sign-in restrictions)을 확장합니다:
    • 이 기능을 활성화하려면 이중 인증 강제(Enforce two-factor authentication)를 선택합니다.
    • 2FA 약정 기간(Two-factor grace period)에 시간을 입력합니다. 다음 로그인 시에 2FA를 강제하려면 0을 입력하세요.

API 사용

다음 설정을 수정하려면 application settings 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 Area)을 선택합니다.
  2. 왼쪽 사이드바에서 설정 > 일반(General)을 선택합니다.
  3. 로그인 제한(Sign-in restrictions) 섹션을 확장합니다:
    • 관리자에게 2FA 사용을 요구(Require administrators to enable 2FA)를 선택합니다.
    • 2FA 약정 기간(Two-factor grace period)에 시간을 입력합니다. 다음 로그인 시에 2FA를 강제하려면 0을 입력하세요.
  4. 변경 사항 저장(Save changes)을 선택합니다.

참고: GitLab으로의 로그인을 위해 외부 제공자를 사용하는 경우, 본 설정은 사용자에게 2FA를 강제하지 않습니다. 2FA는 외부 제공자에서 활성화되어야 합니다.

그룹의 모든 사용자에게 2FA 강제하기

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • GitLab 12.0에서 도입되었습니다. 그룹에 대한 2FA 설정은 서브그룹에도 적용됩니다.

전제 조건:

  • 그룹의 Maintainer 또는 Owner 역할이 있어야 합니다.

특정 그룹에 대해 2FA를 강제하려면 다음을 수행하세요:

  1. 왼쪽 사이드바에서 검색 또는 이동(Search or go to)을 선택하여 그룹을 찾습니다.
  2. 설정 > 일반(General)을 선택합니다.
  3. 권한 및 그룹 기능(Permissions and group features)을 확장합니다.
  4. 이 그룹의 모든 사용자는 두 번째 요소 인증을 설정해야 함(All users in this group must set up two-factor authentication)을 선택합니다.
  5. 선택 사항. 2FA 강제 지연 시간(시간)에 약정 기간을 입력합니다. 최상위 그룹 및 그의 서브그룹 및 프로젝트에 여러 다른 약정 기간이 있는 경우 가장 짧은 약정 기간이 사용됩니다.
  6. 변경 사항 저장(Save changes)을 선택합니다.

이로 인해 그룹의 직접 및 상속된 구성원에 영향을 미칩니다.

접근 토큰은 두 번째 인증 방법 제공을 요구하지 않기 때문에 API 기반입니다. 2FA가 강제되기 전에 생성된 토큰은 유효합니다.

GitLab 수신 이메일 기능은 2FA 강제를 준수하지 않습니다. 사용자들은 2FA를 먼저 사용하여 인증하지 않고도 이메일 기능을 사용할 수 있습니다. 심지어 2FA가 강제되더라도 해당됩니다.

서브그룹에서의 2단계 인증 (2FA)

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

서브그룹이 자체 2FA 요구 사항을 설정하는 것을 방지할 수 있습니다:

  1. 최상위 레벨 그룹의 설정 > 일반으로 이동합니다.
  2. 권한 및 그룹 기능 섹션을 확장합니다.
  3. 서브그룹이 자체 이중 요소 인증 규칙을 설정하는 것을 허용 확인란을 선택 해제합니다.

이 작업은 2FA 요구 사항을 갖는 모든 서브그룹이 회원으로부터 2FA를 요구하지 않도록 만듭니다.

프로젝트에서의 2단계 인증 (2FA)

2FA를 활성화하거나 강제로 적용하는 그룹에 속한 프로젝트가 2FA를 활성화하거나 강제로 적용하지 않는 그룹과 공유되는 경우, 2FA를 활성화하지 않은 그룹의 회원은 2FA를 사용하지 않고 해당 프로젝트에 액세스할 수 있습니다. 예를 들어:

  • 그룹 A는 2FA를 활성화하고 강제로 적용합니다. 그룹 B는 2FA를 활성화하지 않습니다.
  • 그룹 A에 속한 프로젝트 P가 그룹 B와 공유되는 경우, 그룹 B의 회원은 2FA 없이 프로젝트 P에 액세스할 수 있습니다.

이러한 상황을 방지하려면 2FA 그룹에 대한 프로젝트 공유 방지를 해야 합니다.

2FA가 활성화된 그룹 또는 서브그룹에 프로젝트의 회원을 추가하는 경우 추가된 개별 회원은 2FA가 필요하지 않습니다.

2단계 인증 (2FA) 비활성화

단일 사용자용

관리자용

GitLab 13.5 이상 버전에서는 단일 관리자의 2FA를 비활성화하려면 Rails 콘솔을 사용합니다.

admin = User.find_by_username('<사용자명>')
user_to_disable = User.find_by_username('<사용자명>')

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

2FA가 비활성화되었음을 관리자에게 알립니다.

비관리자용

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

자체 계정의 2FA를 비활성화할 수 있습니다.

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

모든 사용자용

강제 2FA가 비활성화되어 있어도 모든 사용자의 2FA를 비활성화하려면 다음 Rake 작업을 사용합니다.

  • Linux 패키지를 사용하는 경우:

    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 작업을 위한 2단계 인증 (2FA)

Tier: Premium, Ultimate Offering: Self-managed

플래그: 자체 관리형 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@<호스트명> 2fa_verify

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

성공적으로 인증한 후 15분(기본값) 동안 연결된 SSH 키로 Git over SSH 작업을 수행할 수 있습니다.

보안 제한

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

한 번 OTP가 확인되면, 누구든지 해당 개인 SSH 키로 구성된 세션 기간동안 SSH를 통해 Git을 실행할 수 있습니다.