서비스 계정
서비스 계정은 개인 사용자와 연결되지 않은 기계 사용자 유형입니다.
서비스 계정:
- 라이센스가 있는 좌석을 사용하지 않지만, GitLab.com의 체험판에서는 사용할 수 없습니다. GitLab self-managed의 체험판에서는 사용할 수 있습니다.
- 다음이 아닙니다:
- 청구 가능한 사용자.
- 봇 사용자.
- 서비스 계정으로 그룹 구성원으로 나열됩니다.
- UI를 통해 GitLab에 로그인할 수 없습니다.
인간 사용자 구성원의 변경에 영향을 받지 않고 자격 증명을 설정하고 유지해야 하는 파이프라인이나 통합에서 서비스 계정을 사용해야 합니다.
서비스 계정으로 개인 액세스 토큰으로 인증할 수 있습니다. 개인 액세스 토큰을 가진 서비스 계정 사용자는 표준 사용자와 동일한 능력을 가집니다. 여기에는 레지스트리와 상호 작용하고 Git 작업에 개인 액세스 토큰을 사용하는 것이 포함됩니다.
서비스 계정에는 속도 제한이 적용됩니다:
- GitLab.com에서는 GitLab.com 전용 속도 제한이 있습니다.
- self-managed GitLab과 GitLab Dedicated에서는 다음 두 가지가 있습니다:
서비스 계정 만들기
생성할 수 있는 서비스 계정의 수는 라이센스에 따라 허용된 서비스 계정 수로 제한됩니다:
- GitLab Free에서는 서비스 계정을 사용할 수 없습니다.
- GitLab Premium에서는 유료 좌석 하나당 하나의 서비스 계정을 만들 수 있습니다.
- GitLab Ultimate에서는 무제한 개수의 서비스 계정을 만들 수 있습니다.
계정을 만드는 방법은 다음과 같은지 여부에 따라 다릅니다:
- 최상위 그룹 소유자입니다.
- GitLab self-managed의 경우, 관리자인지 여부.
최상위 그룹 소유자
- GitLab.com에서 GitLab 16.3에 도입됨
- GitLab Self-Managed에 대해
allow_top_level_group_owners_to_create_service_accounts
라는 기능 플래그로 도입됨. 기본적으로 비활성화됨.
GitLab self-managed에서는 기본적으로 이 기능을 사용할 수 없습니다. 기능을 사용 가능하게 하려면 관리자가 기능 플래그
allow_top_level_group_owners_to_create_service_accounts
를 활성화할 수 있습니다. GitLab.com에서는 이 기능을 사용할 수 있습니다.필수 조건:
- 최상위 그룹에서 소유자 역할을 가져야 합니다.
- GitLab self-managed의 경우, 최상위 그룹 소유자는 서비스 계정을 생성할 수 있어야 합니다.
-
이 서비스 계정은 귀하의 최상위 그룹에만 연결됩니다.
-
서비스 계정 사용자에 대한 개인 액세스 토큰 만들기.
서비스 계정의 범위는 개인 액세스 토큰의 범위 설정을 통해 정의합니다.
선택 사항. 유효 기간이 없는 개인 액세스 토큰을 생성할 수 있습니다.
응답에는 개인 액세스 토큰 값이 포함됩니다.
- 그룹 또는 프로젝트에 서비스 계정 사용자 수동 추가를 통해 이 서비스 계정을 그룹 또는 프로젝트 구성원으로 만듭니다.
- 반환된 개인 액세스 토큰 값을 사용하여 서비스 계정 사용자로 인증합니다.
GitLab 자체 관리에서의 관리자
필수 조건:
- 귀하는 자체 관리 인스턴스의 관리자여야 합니다.
-
이 서비스 계정은 특정 그룹이나 프로젝트가 아니라 전체 인스턴스와 연관되어 있습니다.
-
모든 서비스 계정 사용자 목록 보기.
-
서비스 계정 사용자에 대한 개인 액세스 토큰 생성하기.
개인 액세스 토큰의 범위를 설정하여 서비스 계정의 범위를 정의합니다.
선택 사항. 만료 날짜가 없는 개인 액세스 토큰을 생성할 수 있습니다.
응답에는 개인 액세스 토큰 값이 포함됩니다.
-
서비스 계정을 특정 그룹이나 프로젝트에 수동으로 추가하여 이 서비스를 그룹 또는 프로젝트의 구성원으로 만듭니다.
-
반환된 개인 액세스 토큰 값을 사용하여 서비스 계정 사용자로 인증합니다.
서브그룹 또는 프로젝트에 서비스 계정 추가하기
기능적인 측면에서, 서비스 계정은 외부 사용자와 동일하며 처음 생성했을 때 최소한의 접근 권한을 가집니다.
서비스 계정에 접근할 수 있도록 하려면 각 프로젝트 또는 그룹에 수동으로 추가해야 합니다.
프로젝트나 그룹에 추가할 수 있는 서비스 계정의 숫자에 제한이 없습니다.
서비스 계정:
- 동일한 최고 수준 그룹의 여러 서브그룹 및 프로젝트에서 다양한 역할을 가질 수 있습니다.
- 최고 수준 그룹 소유자에 의해 생성된 경우, 오직 하나의 최고 수준 그룹에만 속합니다.
서브그룹 또는 프로젝트에 추가하기
서비스 계정을 서브그룹 또는 프로젝트에 추가할 수 있는 방법:
서브그룹 또는 프로젝트에서 서비스 계정 역할 변경하기
UI 또는 API를 통해 서브그룹 또는 프로젝트에서 서비스 계정의 역할을 변경할 수 있습니다.
UI를 사용하려면 서브그룹 또는 프로젝트의 구성원 목록으로 이동하여 서비스 계정의 역할을 변경합니다.
API를 사용하려면 다음 엔드포인트를 호출합니다:
curl --request POST --header "PRIVATE-TOKEN: <PRIVATE-TOKEN>" \ --data "user_id=<service_account_user_id>&access_level=30" "https://gitlab.example.com/api/v4/projects/<project_id>/members"
속성에 대한 자세한 내용은 그룹 또는 프로젝트 구성원 편집에 대한 API 문서를 참조하세요.
개인 액세스 토큰 회전하기
필수 조건:
- 최고 수준 그룹 소유자에 의해 생성된 서비스 계정의 경우, 최고 수준 그룹에서 소유자 역할이 있거나 관리자여야 합니다.
- 관리자가 생성한 서비스 계정의 경우, 귀하는 자체 관리 인스턴스의 관리자여야 합니다.
그룹 API를 사용하여 서비스 계정 사용자의 개인 액세스 토큰을 회전합니다.
개인 접근 토큰 취소
전제 조건:
- 서비스 계정 사용자로 로그인해야 합니다.
개인 접근 토큰을 취소하려면 개인 접근 토큰 API를 사용하십시오. 다음 방법 중 하나를 사용할 수 있습니다:
-
개인 접근 토큰 ID를 사용합니다. 취소를 수행하는 데 사용된 토큰은
admin_mode
범위가 있어야 합니다. - 요청 헤더를 사용합니다. 요청을 수행하는 데 사용된 토큰은 취소됩니다.
서비스 계정 삭제
최상위 그룹 소유자
전제 조건:
- 최상위 그룹에서 소유자 역할을 가져야 합니다.
서비스 계정을 삭제하려면 서비스 계정 API를 사용하여 서비스 계정 사용자 삭제합니다.
GitLab 자체 관리 관리자
전제 조건:
- 서비스 계정이 연결된 인스턴스의 관리자가 되어야 합니다.
서비스 계정을 삭제하려면 사용자 API를 사용하여 서비스 계정 사용자 삭제합니다.
서비스 계정 비활성화
전제 조건:
- 서비스 계정이 연결된 그룹에서 소유자 역할을 가져야 합니다.
서비스 계정이 연결된 인스턴스나 그룹의 관리자가 아닌 경우, 해당 서비스 계정을 직접 삭제할 수 없습니다. 대신:
-
모든 하위 그룹 및 프로젝트에서 서비스 계정을 구성원에서 제거합니다:
curl --request DELETE --header "PRIVATE-TOKEN: <access_token_id>" "https://gitlab.example.com/api/v4/groups/<group_id>/members/<service_account_id>"
자세한 내용은 그룹 또는 프로젝트에서 구성원 제거에 대한 API 문서를 참조하십시오.