그룹 접근 토큰

Offering: GitLab.com, Self-managed, GitLab Dedicated

그룹 접근 토큰을 사용하면 단일 토큰으로 다음 작업을 수행할 수 있습니다:

  • 그룹에 대한 작업 수행
  • 그룹 내의 프로젝트 관리

그룹 접근 토큰을 사용하여 인증할 수 있습니다:

  • GitLab API와 함께
  • HTTPS를 통한 Git 인증.
    사용 방법:

    • 사용자 이름으로 빈 값이 아닌 모든 값을 사용합니다.
    • 비밀번호로 그룹 접근 토큰을 사용합니다.

GitLab.com에서는 Premium 또는 Ultimate 라이선스 등급을 보유한 경우 그룹 접근 토큰을 사용할 수 있습니다. 그룹 접근 토큰은 트라이얼 라이선스와 함께 사용할 수 없습니다.
GitLab Dedicated 및 자체 관리 인스턴스에서는 모든 라이선스 등급으로 그룹 접근 토큰을 사용할 수 있습니다. 무료 등급을 보유한 경우:

그룹 접근 토큰은 프로젝트 접근 토큰개인 접근 토큰과 유사하지만, 프로젝트나 사용자 대신 그룹에 연결되어 있습니다.

자체 관리 인스턴스에서 그룹 접근 토큰은 설정된 경우 개인 접근 토큰과 동일한 최대 수명 제한을 따릅니다.

그룹 접근 토큰을 사용하여 다른 그룹, 프로젝트 또는 개인 접근 토큰을 생성할 수 없습니다.

그룹 접근 토큰은 개인 접근 토큰에 대해 구성된 기본 접두사 설정을 상속합니다.

UI를 사용하여 그룹 접근 토큰 생성

  • GitLab 15.3에서 도입되었으며, UI에서 기본 만료일은 30일, 기본 역할은 Guest로 설정됩니다.
  • 만료되지 않는 그룹 접근 토큰 생성 기능은 GitLab 16.0에서 제거되었습니다.

경고:
만료일 없이 그룹 접근 토큰을 생성하는 기능은 GitLab 15.4에서 사용 중단되었으며, GitLab 16.0에서 제거되었습니다. 기존 토큰에 추가된 만료일에 대한 더 많은 정보는 접근 토큰 만료에 대한 문서를 참조하세요.

그룹 접근 토큰을 생성하려면:

  1. 왼쪽 사이드바에서 Search or go to를 선택하고 그룹을 찾습니다.
  2. Settings > Access tokens를 선택합니다.
  3. Add new token을 선택합니다.
  4. 이름을 입력합니다. 토큰 이름은 그룹을 볼 수 있는 권한이 있는 모든 사용자에게 표시됩니다.
  5. 토큰의 만료일을 입력합니다:
    • 토큰은 해당 날짜의 자정 UTC에 만료됩니다. 2024-01-01의 만료일을 가진 토큰은 2024-01-01 00:00:00 UTC에 만료됩니다.
    • 만료일을 입력하지 않으면 만료일이 현재 날짜보다 365일 후로 자동 설정됩니다.
    • 기본적으로 이 날짜는 현재 날짜보다 최대 365일 후가 될 수 있습니다.
    • 인스턴스 전체의 최대 수명 설정이 자기 관리 인스턴스에서 최대 허용 수명을 제한할 수 있습니다.
  6. 토큰의 역할을 선택합니다.
  7. 원하는 범위를 선택합니다.
  8. Create group access token을 선택합니다.

그룹 접근 토큰이 표시됩니다. 그룹 접근 토큰을 안전한 장소에 저장하십시오. 페이지를 떠나거나 새로 고침하면 다시 볼 수 없습니다.

경고:
그룹 접근 토큰은 내부 사용자로 취급됩니다.
내부 사용자가 그룹 접근 토큰을 생성하는 경우 해당 토큰은 Internal로 설정된 가시성 수준이 있는 모든 프로젝트에 접근할 수 있습니다.

그룹 액세스 토큰을 Rails 콘솔을 사용하여 생성하기

관리자라면 Rails 콘솔에서 그룹 액세스 토큰을 생성할 수 있습니다:

  1. Rails 콘솔에서 다음 명령어를 실행하세요:

    # 사용할 GitLab 관리 사용자 설정. 사용자 ID 1이 사용 가능하지 않거나 관리자가 아닌 경우 'admin = User.admins.first'를 사용하여 관리자를 선택하세요.
    admin = User.find(1)
    
    # 토큰을 생성할 그룹 설정. 예를 들어, ID가 109인 그룹입니다.
    group = Group.find(109)
    
    # 그룹 봇 사용자 생성. 추가 그룹 액세스 토큰의 경우, 사용자 이름은 `group_{group_id}_bot_{random_string}`이고 이메일 주소는 `group_{group_id}_bot_{random_string}@noreply.{Gitlab.config.gitlab.host}` 여야 합니다.
    random_string = SecureRandom.hex(16)
    bot = Users::CreateService.new(admin, { name: 'group_token', username: "group_#{group.id}_bot_#{random_string}", email: "group_#{group.id}_bot_#{random_string}@noreply.#{Gitlab.config.gitlab.host}", user_type: :project_bot }).execute
    
    # 그룹 봇 확인.
    bot.confirm
    
    # 필수 역할로 그룹에 봇 추가.
    group.add_member(bot, :maintainer)
    
    # 봇에게 개인 액세스 토큰 부여.
    token = bot.personal_access_tokens.create(scopes:[:api, :write_repository], name: 'group_token')
    
    # 토큰 값을 가져옵니다.
    gtoken = token.token
    
  2. 생성된 그룹 액세스 토큰이 작동하는지 테스트합니다:

    1. GitLab REST API에 PRIVATE-TOKEN 헤더에서 그룹 액세스 토큰을 사용합니다. 예:

    2. 그룹 토큰을 사용하여 그룹의 프로젝트 클론하기 HTTPS를 사용하여 클론합니다.

그룹 액세스 토큰 취소하기

  • 취소된 토큰 보기 기능은 도입됨 GitLab 17.3에서 retain_resource_access_token_user_after_revoke라는 플래그와 함께. 기본적으로 비활성화되어 있습니다.

UI 또는 Rails 콘솔을 사용하여 그룹 액세스 토큰을 취소할 수 있습니다.

GitLab 17.3 이상에서는 retain_resource_access_token_user_after_revoke 기능 플래그를 활성화하면 액세스 토큰 페이지에서 활성 및 비활성 취소된 그룹 액세스 토큰을 모두 볼 수 있습니다.

기능 플래그를 활성화하지 않으면 활성 토큰만 볼 수 있습니다. 비활성 그룹 액세스 토큰 테이블:

  • 포함 내용:
    • 취소되었지만 아직 만료되지 않은 기존 토큰. 이러한 토큰이 만료되면 더 이상 테이블에 나타나지 않습니다.
    • 기능 플래그가 활성화된 후 생성된 취소된 토큰. 이러한 토큰은 만료된 후에도 테이블에 남아 있습니다.
  • 포함되지 않는 내용:
    • 이미 만료되었거나 취소된 토큰.
    • 미래에 만료될 기존 토큰이나 취소되지 않은 토큰.

UI 사용하기

그룹 액세스 토큰을 취소하려면:

  1. 왼쪽 사이드바에서 검색하거나 이동하기를 선택하고 귀하의 그룹을 찾습니다.
  2. 설정 > 액세스 토큰을 선택합니다.
  3. 취소할 그룹 액세스 토큰 옆에서 취소( )를 선택합니다.

Rails 콘솔 사용하기

전제 조건:

  • 관리자인 경우만 가능합니다.

그룹 액세스 토큰을 취소하려면 다음 명령을 실행하세요.
Rails 콘솔에서:

bot = User.find_by(username: 'group_109_bot') # 취소하려는 토큰의 소유자
token = bot.personal_access_tokens.last # 취소하려는 토큰
token.revoke!

그룹 액세스 토큰의 범위

  • k8s_proxy 도입됨 GitLab 16.4에서 k8s_proxy_pat이라는 플래그와 함께. 기본적으로 활성화되어 있습니다.
  • 기능 플래그 k8s_proxy_pat 제거됨 GitLab 16.5에서.

범위는 그룹 액세스 토큰으로 인증할 때 수행할 수 있는 작업을 결정합니다.

범위 설명
api 스코프된 그룹 및 관련 프로젝트 API에 대한 전체 읽기 및 쓰기 액세스를 부여하며, 컨테이너 레지스트리, 의존성 프록시패키지 레지스트리를 포함합니다.
read_api 스코프된 그룹 및 관련 프로젝트 API에 대한 읽기 액세스를 부여하며, 패키지 레지스트리를 포함합니다.
read_registry 그룹 내의 프로젝트가 비공식적이며 권한 인증이 필요한 경우 컨테이너 레지스트리 이미지에 대한 읽기 액세스(풀)를 부여합니다.
write_registry 컨테이너 레지스트리에 대한 쓰기 액세스(푸시)를 부여합니다. 이미지를 푸시하려면 읽기 및 쓰기 액세스가 모두 필요합니다.
read_repository 그룹 내의 모든 리포지토리에 대한 읽기 액세스(풀)를 부여합니다.
write_repository 그룹 내의 모든 리포지토리에 대한 읽기 및 쓰기 액세스(풀 및 푸시)를 부여합니다.
create_runner 그룹에서 러너를 생성할 수 있는 권한을 부여합니다.
manage_runner 그룹에서 러너를 관리할 수 있는 권한을 부여합니다.
ai_features GitLab Duo의 API 작업을 수행할 수 있는 권한을 부여합니다. 이 범위는 JetBrains의 GitLab Duo Plugin과 함께 작동하도록 설계되었습니다. 다른 확장에 대한 범위 요구 사항은 보십시오.
k8s_proxy 그룹 내의 Kubernetes에 대한 에이전트를 사용하여 Kubernetes API 호출을 수행할 수 있는 권한을 부여합니다.

그룹 액세스 토큰 생성 활성화 또는 비활성화

최상위 그룹 내의 모든 하위 그룹에 대한 그룹 액세스 토큰 생성을 활성화하거나 비활성화하려면:

  1. 왼쪽 사이드바에서 검색하거나 이동하기를 선택하고 귀하의 그룹을 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 권한 및 그룹 기능을 확장합니다.
  4. 권한 아래에서 사용자는 이 그룹에서 프로젝트 액세스 토큰 및 그룹 액세스 토큰을 생성할 수 있습니다의 설정을 켜거나 끕니다.
  5. 변경 사항 저장을 선택합니다.

생성이 비활성화된 경우에도 기존 그룹 액세스 토큰을 사용하고 취소할 수 있습니다.

액세스 토큰 만료

기존 그룹 액세스 토큰에 자동으로 만료일이 적용되는지는 사용 중인 GitLab 제공 사항과 GitLab 16.0 또는 이후로 업그레이드한 시점에 따라 다릅니다:

  • GitLab.com에서는 16.0 마일스톤 중에 만료일이 없는 기존 그룹 액세스 토큰에 현재 날짜로부터 365일 후의 만료일이 자동으로 부여되었습니다.
  • GitLab 자체 관리형에서는 GitLab 15.11 이하에서 GitLab 16.0 또는 이후로 업그레이드한 경우:
    • 2024년 7월 23일 이전에는 만료일이 없는 기존 그룹 액세스 토큰에 현재 날짜로부터 365일 후의 만료일이 자동으로 부여되었습니다. 이 변경은 파괴적인 변경입니다.
    • 2024년 7월 24일 이후에는 만료일이 없는 기존 그룹 액세스 토큰에 만료일이 설정되지 않았습니다.

GitLab 자체 관리형에서 다음 GitLab 버전 중 하나를 새로 설치하는 경우, 기존 그룹 액세스 토큰에 자동으로 만료일이 적용되지 않습니다:

  • 16.0.9
  • 16.1.7
  • 16.2.10
  • 16.3.8
  • 16.4.6
  • 16.5.9
  • 16.6.9
  • 16.7.9
  • 16.8.9
  • 16.9.10
  • 16.10.9
  • 16.11.7
  • 17.0.5
  • 17.1.3
  • 17.2.1

그룹의 봇 사용자

그룹의 봇 사용자는 GitLab이 생성한 청구되지 않는 사용자입니다.

그룹 액세스 토큰을 생성할 때마다, 봇 사용자가 생성되어 그룹에 추가됩니다.

이러한 봇 사용자는 프로젝트의 봇 사용자와 유사하지만, 프로젝트 대신 그룹에 추가됩니다.

그룹의 봇 사용자는:

  • 청구 사용자이 아니므로 라이센스 한도에 포함되지 않습니다.
  • 그룹에 대해 최대 역할이 소유자(Owner)가 될 수 있습니다. 자세한 내용은 그룹 액세스 토큰 생성을 참조하세요.
  • 사용자 이름은 group_{group_id}_bot_{random_string}로 설정됩니다. 예: group_123_bot_4ffca233d8298ea1.
  • 이메일은 group_{group_id}_bot_{random_string}@noreply.{Gitlab.config.gitlab.host}로 설정됩니다. 예: group_123_bot_4ffca233d8298ea1@noreply.example.com.

모든 기타 속성은 프로젝트의 봇 사용자와 유사합니다.

토큰 사용 가능성

그룹 액세스 토큰은 유료 구독에서만 사용 가능하며, 체험판 구독에서는 사용할 수 없습니다. 자세한 내용은 “What is included” 섹션 of the GitLab Trial FAQ를 참조하세요.