서비스 계정

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

서비스 계정은 개별 사용자와 연결되지 않은 머신 사용자의 유형입니다.

서비스 계정:

  • 라이선스가 있는 좌석을 사용하지 않지만 체험판 버전에서는 사용할 수 없습니다.
  • 과금 대상 사용자나 봇 사용자가 아닙니다.
  • 서비스 계정으로 그룹 멤버십에 디렉터리으로 표시됩니다.
  • UI를 통해 GitLab에 로그인할 수 없습니다.

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

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

서비스 계정 생성

라이선스에 허용된 서비스 계정 수에 따라 생성할 수 있는 서비스 계정 수가 제한됩니다.

  • GitLab Free에서는 서비스 계정을 사용할 수 없습니다.
  • GitLab Premium에서는 지불 좌석당 하나의 서비스 계정을 생성할 수 있습니다.
  • GitLab Ultimate에서는 무제한으로 서비스 계정을 생성할 수 있습니다.

계정을 생성하는 방법은 GitLab.com 또는 Self-Managed형 형에 따라 다릅니다.

GitLab.com

필수 컴포넌트:

  • 최상위 그룹에서 소유자 역할이어야 합니다.
  1. 서비스 계정 생성.

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

  2. 서비스 계정 사용자용 개인 액세스 토큰 생성.

    이를 통해 개인 액세스 토큰의 스코프를 정의하여 서비스 계정의 스코프를 설정할 수 있습니다.

    선택 사항으로 만료일이 없는 개인 액세스 토큰을 생성할 수 있습니다.

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

  3. 그룹 또는 프로젝트에 서비스 계정 사용자를 매뉴얼으로 추가하여 서비스 계정을 그룹 또는 프로젝트의 멤버로 만들어야 합니다.

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

Self-Managed형 형 GitLab

필수 컴포넌트:

  • Self-Managed형 형 인스턴스의 관리자이어야 합니다.
  1. 서비스 계정 생성.

    이 서비스 계정은 특정 그룹이나 프로젝트가 아닌 전체 인스턴스와 연관됩니다.

  2. 서비스 계정 사용자용 개인 액세스 토큰 생성.

    이를 통해 개인 액세스 토큰의 스코프를 정의하여 서비스 계정의 스코프를 설정할 수 있습니다.

    선택 사항으로 만료일이 없는 개인 액세스 토큰을 생성할 수 있습니다.

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

  3. 그룹 또는 프로젝트에 서비스 계정 사용자를 매뉴얼으로 추가하여 서비스 계정을 그룹 또는 프로젝트의 멤버로 만들어야 합니다.

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

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

기능적으로 서비스 계정은 외부 사용자와 동일하며 생성시 접근 권한이 상당히 제한됩니다.

서비스 계정을 사용하려면 각 프로젝트 또는 그룹에 서비스 계정을 매뉴얼으로 추가해야 합니다.

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

서비스 계정:

  • 동일한 최상위 그룹의 여러하위 그룹과 프로젝트에서 다른 역할을 가질 수 있습니다.
  • GitLab.com에서는 하나의 최상위 그룹에만 속합니다.

하위 그룹이나 프로젝트에 추가

서비스 계정을 하위 그룹이나 프로젝트에 추가하는 방법은 다음과 같습니다.

하위 그룹이나 프로젝트에서 서비스 계정 역할 변경

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 문서를 참조하십시오.

개인 액세스 토큰 회전

필수 컴포넌트:

  • GitLab.com의 경우 최상위 그룹에서 소유자 역할이어야 합니다.
  • Self-Managed형 형 GitLab의 경우 Self-Managed형 형 인스턴스의 관리자이어야 합니다.

그룹 API를 사용하여 서비스 계정 사용자의 개인 액세스 토큰을 회전할 수 있습니다.

서비스 계정 삭제

필수 컴포넌트:

  • 서비스 계정이 연관된 인스턴스의 관리자이어야 합니다.

서비스 계정을 삭제하려면 서비스 계정 사용자를 삭제하기 위해 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 문서를 참조하십시오.

  2. API를 사용하여 개인 액세스 토큰을 폐기하십시오.

관련 주제