로그인 제한
GitLab v19.5Offering: GitLab Self-Managed
요약
로그인 제한으로 웹 인터페이스와 HTTP(S)를 통한 Git의 인증 제한을 사용자 환경에 맞게 설정합니다. 이 설정은 기본적으로 활성화되어 있습니다. 웹 인터페이스에 대한 비밀번호 및 패스키 인증을 허용하는 방법은 다음과 같습니다.
로그인 제한으로 웹 인터페이스와 HTTP(S)를 통한 Git의 인증 제한을 사용자 환경에 맞게 설정합니다.
사전 요구 사항:
- 관리자 접근 권한이 있어야 합니다.
비밀번호 및 패스키 인증#
웹 인터페이스에 대한 비밀번호 및 패스키 인증 허용#
이 설정은 기본적으로 활성화되어 있습니다. 비활성화하면 사용자가 표준 로그인 화면을 사용할 수 없고, 대신 외부 인증 공급자를 사용해야 합니다. 이 경우 이중 인증에 패스키를 사용하는 것도 함께 비활성화됩니다.
웹 인터페이스에 대한 비밀번호 및 패스키 인증을 허용하는 방법은 다음과 같습니다.
- 오른쪽 위에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Settings > General을 선택합니다.
- Sign-in restrictions 섹션을 확장합니다.
- Allow password and passkey authentication for the web interface 체크박스를 선택합니다.
- Save changes를 선택합니다.
외부 인증 공급자에 장애가 발생하면 GitLab Rails 콘솔에서
표준 웹 로그인 폼을 다시 활성화합니다.
애플리케이션 설정 API로
password_authentication_enabled_for_web 설정을 구성할 수도 있습니다.
HTTP(S)를 통한 Git에 대한 비밀번호 인증 허용#
이 설정은 기본적으로 활성화되어 있습니다. 비활성화하면 사용자는 개인 액세스 토큰이나 LDAP 비밀번호로 인증해야 합니다.
HTTP(S)를 통한 Git에 대한 비밀번호 인증을 허용하는 방법은 다음과 같습니다.
- 오른쪽 위에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Settings > General을 선택합니다.
- Sign-in restrictions 섹션을 확장합니다.
- Allow password authentication for Git over HTTP(S) 체크박스를 선택합니다.
- Save changes를 선택합니다.
SSO 신원을 가진 사용자의 비밀번호 및 패스키 인증 비활성화#
조직에 따라 SSO 사용자가 비밀번호나 패스키로 로그인하지 못하게 하고 외부 인증 공급자를 사용하도록 요구할 수 있습니다. 이 설정은 웹 인터페이스와 HTTP(S)를 통한 Git 양쪽의 비밀번호 인증을 제한하고, 웹 인터페이스의 패스키 인증도 제한합니다. 패스키는 HTTP(S)를 통한 Git에서는 사용할 수 없습니다.
SSO 신원을 가진 사용자의 비밀번호 및 패스키 인증을 비활성화하는 방법은 다음과 같습니다.
- 오른쪽 위에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Settings > General을 선택합니다.
- Sign-in restrictions 섹션을 확장합니다.
- Disable password and passkey authentication for users with an SSO identity 체크박스를 선택합니다.
- Save changes를 선택합니다.
이중 인증#
사용자가 계정에 이중 인증(2FA) 수단을 등록하도록 요구할 수 있습니다.
모든 사용자에게 이중 인증 시행#
이 설정은 관리자를 포함한 모든 사용자에게 2FA 수단 등록을 요구합니다.
모든 사용자에게 이중 인증을 시행하는 방법은 다음과 같습니다.
- 오른쪽 위에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Settings > General을 선택합니다.
- Sign-in restrictions 섹션을 확장합니다.
- Enforce two-factor authentication 체크박스를 선택합니다.
- 선택 사항. Two-factor grace period에 시간을 입력합니다. 사용자는 이 기간이 끝날 때까지 2FA
수단을 등록해야 합니다.
0으로 설정하면 다음 로그인 시점에 등록을 강제합니다. - Save changes를 선택합니다.
관리자에게 이중 인증 시행#
이 설정은 관리자에게만 2FA 수단 등록을 요구합니다. 사용자 정의 관리자 권한을 가진 사용자도 포함됩니다.
관리자에게 이중 인증을 시행하는 방법은 다음과 같습니다.
- 오른쪽 위에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Settings > General을 선택합니다.
- Sign-in restrictions 섹션을 확장합니다.
- Enforce two-factor authentication for administrators 체크박스를 선택합니다.
- 선택 사항. Two-factor grace period에 시간을 입력합니다. 사용자는 이 기간이 끝날 때까지 2FA
수단을 등록해야 합니다.
0으로 설정하면 다음 로그인 시점에 등록을 강제합니다. - Save changes를 선택합니다.
이메일 OTP 활성화#
사용자가 이메일 일회용 비밀번호를 구성하도록 허용하는 방법은 다음과 같습니다.
- 오른쪽 위에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Settings > General을 선택합니다.
- Sign-in restrictions 섹션을 확장합니다.
- Enable email-based one-time passwords 체크박스와 Require email verification when account is locked 체크박스를 모두 선택합니다.
- Save changes를 선택합니다.
Admin Mode#
관리자라면 관리자 접근 권한 없이 GitLab에서 작업하고 싶을 수 있습니다. 이때 관리자 접근 권한이 없는 별도의 사용자 계정을 만들거나 Admin Mode를 사용할 수 있습니다.
Admin Mode를 사용하면 계정에 기본적으로 관리자 접근 권한이 없습니다. 멤버로 속한 그룹과 프로젝트에는 계속 접근할 수 있습니다. 다만 관리 작업을 하려면 본인 인증을 해야 합니다(일부 기능은 예외입니다).
Admin Mode를 활성화하면 인스턴스의 모든 관리자에게 적용됩니다.
인스턴스에 Admin Mode가 활성화되면 관리자는 다음과 같습니다.
- 멤버로 속한 그룹과 프로젝트에 접근할 수 있습니다.
- Admin 영역에는 접근할 수 없습니다.
인스턴스에 Admin Mode 활성화#
관리자는 API, Rails 콘솔, UI로 Admin Mode를 활성화할 수 있습니다.
API를 사용하여 Admin Mode 활성화#
인스턴스 엔드포인트에 다음 요청을 보냅니다.
curl --request PUT --header "PRIVATE-TOKEN:$ADMIN_TOKEN" "<gitlab.example.com>/api/v4/application/settings?admin_mode=true"
<gitlab.example.com>을 인스턴스 URL로 바꿉니다.
자세한 내용은 API 호출로 접근할 수 있는 설정 목록을 참고합니다.
Rails 콘솔을 사용하여 Admin Mode 활성화#
Rails 콘솔을 열고 다음을 실행합니다.
::Gitlab::CurrentSettings.update!(admin_mode: true)
UI를 사용하여 Admin Mode 활성화#
UI에서 Admin Mode를 활성화하는 방법은 다음과 같습니다.
- 오른쪽 위에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Settings > General을 선택합니다.
- Sign-in restrictions를 확장합니다.
- Enable Admin Mode를 선택합니다.
- Save changes를 선택합니다.
세션에 Admin Mode 켜기#
현재 세션에 Admin Mode를 켜서 위험할 수 있는 리소스에 접근하는 방법은 다음과 같습니다.
- 오른쪽 위에서 아바타를 선택합니다.
- Enter Admin Mode를 선택합니다.
- URL에
/admin이 포함된 UI 영역에 접근해 봅니다(관리자 접근 권한이 필요합니다).
Admin Mode 상태가 비활성화되거나 꺼져 있으면 관리자는 명시적으로 접근 권한을 받은 리소스가
아니면 접근할 수 없습니다. 예를 들어 관리자가 비공개 그룹이나 프로젝트를 열려고 하면
해당 그룹이나 프로젝트의 멤버가 아닌 한 404 오류가 발생합니다.
관리자는 2FA를 활성화해야 합니다. Admin Mode는 2FA, OmniAuth 공급자, LDAP 인증을 지원합니다. Admin Mode 상태는 현재 사용자 세션에 저장되며 다음 중 하나가 발생할 때까지 유지됩니다.
- 명시적으로 비활성화됩니다.
- 6시간 후에 자동으로 비활성화됩니다.
세션의 Admin Mode 활성화 여부 확인#
히스토리
- GitLab 16.10에서
show_admin_mode_within_active_sessions라는 기능 플래그와 함께 도입되었습니다. 기본값으로 비활성화되어 있습니다. - GitLab 16.10에서 GitLab.com에 활성화되었습니다.
- GitLab 17.0에서 일반적으로 사용할 수 있게 되었습니다. 기능 플래그
show_admin_mode_within_active_sessions는 제거되었습니다.
활성 세션 목록으로 이동합니다.
- 오른쪽 위에서 아바타를 선택합니다.
- Edit profile을 선택합니다.
- 왼쪽 사이드바에서 Access > Active sessions를 선택합니다.
Admin Mode가 켜진 세션에는 Signed in on date of session with Admin Mode 텍스트가 표시됩니다.
세션의 Admin Mode 끄기#
현재 세션의 Admin Mode를 끄는 방법은 다음과 같습니다.
- 오른쪽 위에서 아바타를 선택합니다.
- Leave Admin Mode를 선택합니다.
알려진 문제#
Admin Mode는 6시간 후에 만료되며 이 시간 제한은 변경할 수 없습니다.
다음 접근 방식은 Admin Mode의 보호를 받지 않습니다.
- Git 클라이언트 접근(공개 키를 사용하는 SSH 또는 개인 액세스 토큰을 사용하는 HTTPS)
즉, Admin Mode로 제한을 받는 관리자라도 추가 인증 절차 없이 Git 클라이언트를 사용할 수 있습니다.
GitLab REST API나 GraphQL API를 사용하려면 관리자가 admin_mode 스코프를 가진 개인 액세스 토큰이나 OAuth 토큰을 생성해야 합니다.
admin_mode 스코프를 가진 개인 액세스 토큰을 보유한 관리자가 관리자 접근 권한을 잃으면, 해당 스코프의 토큰이 남아 있더라도 관리자로 API에 접근할 수 없습니다.
자세한 내용은 에픽 2158을 참고합니다.
또한 GitLab Geo가 활성화되어 있으면 보조 노드에서 프로젝트와 디자인의 복제 상태를 확인할 수 없습니다. 프로젝트(이슈 367926)와 디자인(이슈 355660)이 새 Geo 프레임워크로 이전되면 해결될 예정입니다.
Admin Mode 문제 해결#
필요하다면 관리자로서 다음 두 방법 중 하나로 Admin Mode를 비활성화할 수 있습니다.
-
API:
curl --request PUT --header "PRIVATE-TOKEN:$ADMIN_TOKEN" "<gitlab-url>/api/v4/application/settings?admin_mode=false" -
::Gitlab::CurrentSettings.update!(admin_mode: false)
알 수 없는 로그인에 대한 이메일 알림#
이 설정을 활성화하면 GitLab이 알 수 없는 IP 주소나 기기에서의 로그인을 사용자에게 알립니다. 자세한 내용은 알 수 없는 로그인에 대한 이메일 알림을 참고합니다.

로그인 정보#
히스토리
- Sign-in text 설정이 GitLab 17.0에서 더 이상 사용되지 않습니다.
Home page URL 값이 비어 있지 않으면 로그인하지 않은 모든 사용자는 해당 설정이 가리키는 페이지로 리디렉션됩니다.
Sign-out page URL 값이 비어 있지 않으면 모든 사용자는 로그아웃 후 해당 설정이 가리키는 페이지로 리디렉션됩니다.
로그인 페이지에 도움말 메시지를 추가하려면 로그인 및 가입 페이지를 사용자 환경에 맞게 설정합니다.
문제 해결#
rails 콘솔에서 표준 웹 로그인 폼 다시 활성화#
로그인 제한으로 비활성화한 표준 사용자 이름·비밀번호 기반 로그인 폼을 다시 활성화합니다.
구성된 외부 인증 공급자(SSO 또는 LDAP 구성)에 장애가 발생해 GitLab에 직접 로그인해야 할 때 rails 콘솔에서 이 방법을 사용할 수 있습니다.
Gitlab::CurrentSettings.update!(password_authentication_enabled_for_web: true)