서비스 계정

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

서비스 계정은 개인 사용자와 연결되지 않은 기계 사용자 유형입니다.

서비스 계정:

  • 라이센스가 있는 좌석을 사용하지 않지만, GitLab.com의 체험판에서는 사용할 수 없습니다. GitLab self-managed의 체험판에서는 사용할 수 있습니다.
  • 다음이 아닙니다:
    • 청구 가능한 사용자.
    • 봇 사용자.
  • 서비스 계정으로 그룹 구성원으로 나열됩니다.
  • UI를 통해 GitLab에 로그인할 수 없습니다.

인간 사용자 구성원의 변경에 영향을 받지 않고 자격 증명을 설정하고 유지해야 하는 파이프라인이나 통합에서 서비스 계정을 사용해야 합니다.

서비스 계정으로 개인 액세스 토큰으로 인증할 수 있습니다. 개인 액세스 토큰을 가진 서비스 계정 사용자는 표준 사용자와 동일한 능력을 가집니다. 여기에는 레지스트리와 상호 작용하고 Git 작업에 개인 액세스 토큰을 사용하는 것이 포함됩니다.

서비스 계정에는 속도 제한이 적용됩니다:

서비스 계정 만들기

생성할 수 있는 서비스 계정의 수는 라이센스에 따라 허용된 서비스 계정 수로 제한됩니다:

  • 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에서는 이 기능을 사용할 수 있습니다.

필수 조건:

  1. 서비스 계정 생성.

    이 서비스 계정은 귀하의 최상위 그룹에만 연결됩니다.

  2. 모든 서비스 계정 사용자 나열.

  3. 서비스 계정 사용자에 대한 개인 액세스 토큰 만들기.

    서비스 계정의 범위는 개인 액세스 토큰의 범위 설정을 통해 정의합니다.

    선택 사항. 유효 기간이 없는 개인 액세스 토큰을 생성할 수 있습니다.

    응답에는 개인 액세스 토큰 값이 포함됩니다.

  4. 그룹 또는 프로젝트에 서비스 계정 사용자 수동 추가를 통해 이 서비스 계정을 그룹 또는 프로젝트 구성원으로 만듭니다.
  5. 반환된 개인 액세스 토큰 값을 사용하여 서비스 계정 사용자로 인증합니다.

GitLab 자체 관리에서의 관리자

Offering: Self-managed

필수 조건:

  • 귀하는 자체 관리 인스턴스의 관리자여야 합니다.
  1. 서비스 계정 생성하기.

    이 서비스 계정은 특정 그룹이나 프로젝트가 아니라 전체 인스턴스와 연관되어 있습니다.

  2. 모든 서비스 계정 사용자 목록 보기.

  3. 서비스 계정 사용자에 대한 개인 액세스 토큰 생성하기.

    개인 액세스 토큰의 범위를 설정하여 서비스 계정의 범위를 정의합니다.

    선택 사항. 만료 날짜가 없는 개인 액세스 토큰을 생성할 수 있습니다.

    응답에는 개인 액세스 토큰 값이 포함됩니다.

  4. 서비스 계정을 특정 그룹이나 프로젝트에 수동으로 추가하여 이 서비스를 그룹 또는 프로젝트의 구성원으로 만듭니다.

  5. 반환된 개인 액세스 토큰 값을 사용하여 서비스 계정 사용자로 인증합니다.

서브그룹 또는 프로젝트에 서비스 계정 추가하기

기능적인 측면에서, 서비스 계정은 외부 사용자와 동일하며 처음 생성했을 때 최소한의 접근 권한을 가집니다.

서비스 계정에 접근할 수 있도록 하려면 각 프로젝트 또는 그룹에 수동으로 추가해야 합니다.

프로젝트나 그룹에 추가할 수 있는 서비스 계정의 숫자에 제한이 없습니다.

서비스 계정:

  • 동일한 최고 수준 그룹의 여러 서브그룹 및 프로젝트에서 다양한 역할을 가질 수 있습니다.
  • 최고 수준 그룹 소유자에 의해 생성된 경우, 오직 하나의 최고 수준 그룹에만 속합니다.

서브그룹 또는 프로젝트에 추가하기

서비스 계정을 서브그룹 또는 프로젝트에 추가할 수 있는 방법:

서브그룹 또는 프로젝트에서 서비스 계정 역할 변경하기

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를 사용하여 서비스 계정 사용자 삭제합니다.

서비스 계정 비활성화

전제 조건:

  • 서비스 계정이 연결된 그룹에서 소유자 역할을 가져야 합니다.

서비스 계정이 연결된 인스턴스나 그룹의 관리자가 아닌 경우, 해당 서비스 계정을 직접 삭제할 수 없습니다. 대신:

  1. 모든 하위 그룹 및 프로젝트에서 서비스 계정을 구성원에서 제거합니다:

    curl --request DELETE --header "PRIVATE-TOKEN: <access_token_id>" "https://gitlab.example.com/api/v4/groups/<group_id>/members/<service_account_id>"
    

    자세한 내용은 그룹 또는 프로젝트에서 구성원 제거에 대한 API 문서를 참조하십시오.

관련 주제