이중 인증 강제하기
이중 인증(2FA)은 사용자가 자신의 신원을 증명하기 위해 두 가지 다른 요소를 제공해야 하는 인증 방법입니다.
- 사용자 이름과 비밀번호.
- 응용 프로그램에 의해 생성된 코드와 같은 두 번째 인증 방법.
2FA는 무단으로 계정에 접근하는 것을 더 어렵게 만들어 줍니다.
모든 사용자에게 2FA 강제하기
관리자는 두 가지 다른 방법으로 모든 사용자에게 2FA를 강제할 수 있습니다:
- 다음 로그인 시에 강제.
-
다음 로그인 시 건의하되, 강제하기 전에 약정 기간을 허용.
구성된 약정 기간이 지나면 사용자는 로그인 할 수 있지만,
/−/profile/two_factor_auth
의 2FA 설정 영역을 떠날 수 없습니다.
모든 사용자에게 2FA를 강제하는데 UI나 API를 사용할 수 있습니다.
UI 사용
- 왼쪽 사이드바에서 맨 아래에서 관리자 영역을 선택합니다.
- 설정 > 일반을 선택합니다.
-
로그인 제한을 확장합니다.:
- 이 기능을 활성화하려면 이중 인증 강제를 선택합니다.
-
Two-factor grace period에서 시간을 입력합니다. 다음 로그인 시에 2FA를 강제하려면
0
을 입력하세요.
API 사용
다음 설정을 수정하려면 application settings API를 사용하세요:
-
require_two_factor_authentication
. -
two_factor_grace_period
.
자세한 정보는 API 호출을 통해 액세스할 수 있는 설정 디렉터리을 참조하세요.
관리자 사용자에게 2FA 강제하기
관리자는 Self-Managed형 인스턴스에서 관리자 사용자에게 2FA를 강제할 수 있습니다.
- 왼쪽 사이드바에서 맨 아래에서 관리자 영역을 선택합니다.
- 왼쪽 사이드바에서 설정 > 일반을 선택합니다.
-
로그인 제한 섹션을 확장합니다.:
- 관리자에게 2FA 사용을 요구를 선택합니다.
-
Two-factor grace period에서 시간을 입력합니다. 다음 로그인 시에 2FA를 강제하려면
0
을 입력하세요.
- 변경 사항 저장을 선택합니다.
그룹의 모든 사용자에게 2FA 강제하기
전제 조건:
- 그룹에서 Maintainer 또는 Owner 역할이 있어야 합니다.
특정 그룹에만 2FA를 강제하려면 다음 단계를 따르세요:
- 왼쪽 사이드바에서 검색 또는 이동하여 그룹을 찾습니다.
- 설정 > 일반을 선택합니다.
- 권한 및 그룹 기능을 확장합니다.
- 이 그룹의 모든 사용자가 2단계 인증을 설정해야 함을 선택합니다.
- 2FA 강제 연기 (시간)에서 허용할 약정 기간을 입력합니다. 최상위 그룹 및 해당 하위 그룹 및 프로젝트에서 다양한 약정 기간이 있는 경우, 가장 짧은 약정 기간이 사용됩니다.
- 변경 사항 저장을 선택합니다.
이 규정은 그룹의 직접 및 상속된 구성원에 영향을 미칩니다.
접근 토큰은 두 번째 인증 요소를 제공할 필요가 없습니다. 이는 API 기반입니다. 2FA가 강제되기 전에 생성된 토큰은 유효합니다.
GitLab의 수신 이메일 기능은 2FA 강제를 준수하지 않습니다. 사용자는 2FA로 인증하지 않고도 이메일 수신 기능을 사용할 수 있습니다. 이것은 2FA가 강제되더라도 적용됩니다.
하위 그룹에서의 2FA
최상위 그룹과 마찬가지로 개별 하위 그룹에 대해 2FA를 활성화하고 강제할 수 있습니다.
하위 그룹이 자체 2FA 요구를 설정할 수 없도록 막을 수 있습니다:
- 최상위 그룹의 설정 > 일반으로 이동합니다.
- 권한 및 그룹 기능 섹션을 확장합니다.
- 하위 그룹이 자체 2단계 인증 규칙 설정을 할 수 있는 것을 허용 확인란을 해제합니다.
이 작업은 하위 그룹의 모든 멤버가 2FA를 요구하지 않도록 만듭니다.
프로젝트에서의 2FA
2FA를 활성화하거나 강제하는 그룹에 속한 프로젝트가 2FA를 설정하지 않거나 강제하지 않는 그룹과 공유되는 경우, 2FA를 사용하지 않은 그룹의 구성원은 2FA를 사용하지 않고도 해당 프로젝트에 액세스할 수 있습니다. 예를 들어:
- 그룹 A는 2FA를 활성화하고 강제합니다. 그룹 B에는 2FA가 활성화되어 있지 않습니다.
- 그룹 A에 속한 프로젝트 P가 그룹 B와 공유되는 경우, 그룹 B의 구성원은 2FA를 사용하지 않고도 프로젝트 P에 액세스할 수 있습니다.
이러한 일이 발생하지 않도록 하려면 프로젝트 공유 방지를 해야 합니다.
그룹 또는 하위 그룹에 있는 프로젝트에 멤버를 추가하면 2FA가 필요하지 않습니다.
2FA 비활성화
개별 사용자 또는 모든 사용자에 대해 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 이상에서 비관리자에 대해 2FA를 비활성화하려면 Rails 콘솔이나 API 엔드포인트를 사용할 수 있습니다.
본인의 계정에 대해 2FA를 비활성화할 수 있습니다.
API 엔드포인트를 사용하여 관리자의 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 SSH 작업용 2단계 인증(2FA)
- 기본으로 비활성화된 feature flag 뒤에 배포됩니다.
- 푸시 알림 지원은 GitLab 15.3에서 소개되었습니다.
two_factor_for_cli
라는 피처 플래그를 활성화할 수 있습니다. GitLab.com 및 GitLab Dedicated의 경우, 이 기능을 사용할 수 없습니다. 이 기능은 아직 프로덕션 환경에 사용하기에 적합하지 않습니다. 또한, 이 피처 플래그는 2FA 활성화 시 Git 작업의 세션 기간에도 영향을 미칩니다.Git SSH 작업에 대한 2FA를 강제할 수 있습니다. 다만, ED25519_SK 또는 ECDSA_SK SSH 키를 사용해야 합니다. 2FA는 Git 작업에 대해서만 강제됩니다. 그리고 personal_access_token
과 같은 내부 명령은 제외됩니다.
일회용 비밀번호(OTP) 확인을 수행하려면 다음을 실행하십시오.
ssh git@<hostname> 2fa_verify
그런 다음 다음 중 하나로 인증하세요.
- 올바른 OTP 입력
- GitLab 15.3 이상의 경우, FortiAuthenticator가 활성화된 경우 장치 푸시 알림에 응답
인증에 성공하면 연관된 SSH 키로 15분(기본) 동안 Git SSH 작업을 수행할 수 있습니다.
보안 제한
2FA는 침해된 개인 SSH 키를 가진 사용자를 보호하지 않습니다.
한 번 OTP가 확인된 후에는 구성된 세션 기간 동안 해당 개인 SSH 키로 누구나 Git SSH를 실행할 수 있습니다.