グループアクセストークン

グループアクセストークンを使用すると、1つのトークンで以下のことが可能です:

  • グループに対するアクションの実行。
  • グループ内のプロジェクトを管理します。

認証にはグループアクセストークンを使用できます:

  • GitLab APIを使用します。
  • GitLab 14.2以降では、Git over HTTPSで認証します。使用します:

    • 空白でない任意の値をユーザー名として使用します。
    • パスワードはグループアクセストークン。

グループアクセストークンは、プロジェクトアクセストークンや 個人アクセストークンと似ていますが、プロジェクトやユーザーではなくグループに関連付けられている点が異なります。

自己管理インスタンスでは、グループアクセストークンに個人アクセストークンと同じ最大有効期限が設定されている場合、その制限が適用されます。

caution
有効期限のないグループアクセストークンを作成する機能は、GitLab 15.4で非推奨となり、GitLab 16.0で削除されました。GitLab 16.0以降では、有効期限のない既存のグループアクセストークンには、現在の日付より365日後の有効期限が自動的に付与されます。有効期限の自動追加は、16.0のマイルストーン中にGitLab.com上で行われます。有効期限の自動追加は、セルフマネージドインスタンスがGitLab 16.0にアップグレードされたときに発生します。この変更はブレークチェンジです。

グループアクセストークンを使用することができます:

グループアクセストークンを使用して、他のグループ、プロジェクト、または個人のアクセストークンを作成することはできません。

グループアクセストークンは、個人アクセストークンに設定されたデフォルトのプレフィックス設定を継承します。

UIを使用してグループアクセストークンを作成します。

  • GitLab 14.7 で導入されました
  • GitLab 15.3で導入さ、デフォルトの有効期限は30日、デフォルトのロールはGuestがUIに入力されます。
  • GitLab 16.0で、有効期限なしのグループアクセストークンを作成する機能が削除されました。
caution
プロジェクトアクセストークンは内部ユーザーとして扱われます。内部ユーザーがプロジェクトアクセストークンを作成した場合、そのトークンは可視性レベルがInternal に設定されているすべてのプロジェクトにアクセスできます。

グループアクセストークンを作成するには、以下の手順に従います:

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 設定] > [アクセストークン]を選択します。
  3. 名前を入力します。トークン名は、グループを表示する権限を持つすべてのユーザーに表示されます。
  4. トークンの有効期限を入力します:
    • トークンの有効期限はその日の午前0時(UTC)です。
    • 有効期限を入力しない場合、有効期限は自動的に現在の日付より365日後に設定されます。
    • デフォルトでは、この日付は現在の日付より最大 365 日遅くなります。
    • インスタンス全体の最大有効期間の設定により、自己管理インスタンスで許容される最大有効期間を制限できます。
  5. トークンのロールを選択します。
  6. 必要なスコープを選択します。
  7. グループアクセストークンの作成」を選択します。

グループアクセストークンが表示されます。グループアクセストークンは安全な場所に保存してください。ページを離れたり更新したりすると、二度と表示できなくなります。

Railsコンソールを使ったグループアクセストークンの作成

GitLab 14.6以前では、UIやAPIを使ったグループアクセストークンの作成はサポートされていません。しかし、管理者は回避策を使うことができます:

  1. Railsコンソールで以下のコマンドを実行してください:

    # Set the GitLab administration user to use. If user ID 1 is not available or is not an administrator, use 'admin = User.admins.first' instead to select an administrator.
    admin = User.find(1)
       
    # Set the group group you want to create a token for. For example, group with ID 109.
    group = Group.find(109)
       
    # Create the group bot user. For further group access tokens, the username should be `group_{group_id}_bot_{random_string}` and email address `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
       
    # Confirm the group bot.
    bot.confirm
       
    # Add the bot to the group with the required role.
    group.add_member(bot, :maintainer)
       
    # Give the bot a personal access token.
    token = bot.personal_access_tokens.create(scopes:[:api, :write_repository], name: 'group_token')
       
    # Get the token value.
    gtoken = token.token
    
  2. 生成されたグループアクセストークンが機能するかテストします:

    1. GitLab REST API でPRIVATE-TOKEN ヘッダーのグループアクセストークンを使用してください。例えば

    2. グループトークンを使用して、グループのプロジェクトをHTTPS でクローンします。

UIを使用してグループアクセストークンを失効させます。

GitLab 14.7 で導入されました

グループのアクセストークンを失効させるには

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 設定] > [アクセストークン]を選択します。
  3. 取り消すグループアクセストークンの横にある「取り消す」を選択します。

Railsコンソールを使ってグループアクセストークンを失効させます。

GitLab 14.6以前では、UIやAPIを使ったグループアクセストークンの失効に対応していません。しかし、管理者は回避策を使うことができます。

グループアクセストークンを失効させるには、Railsコンソールで以下のコマンドを実行します:

bot = User.find_by(username: 'group_109_bot') # the owner of the token you want to revoke
token = bot.personal_access_tokens.last # the token you want to revoke
token.revoke!

グループアクセストークンのスコープ

スコープは、グループアクセストークンで認証したときに実行できるアクションを決定します。

スコープ説明
apiスコープ付きグループおよび関連プロジェクトAPI (パッケージレジストリを含む) への完全な読み書きを許可します。
read_api パッケージレジストリを含む、スコープ付きグループと関連プロジェクトAPIへの読み込みアクセスを許可します。
read_registryグループ内のプロジェクトが非公開で作成者の認証が必要な場合、コンテナレジストリ画像への読み取りアクセス (pull) を許可します。
write_registry コンテナレジストリへの書き込みアクセス (push) を許可します。
read_repositoryグループ内のすべてのリポジトリに読み取りアクセス (pull) を許可します。
write_repositoryグループ内のすべてのリポジトリに読み取りと書き込みのアクセス権(pullとpush)を付与します。
create_runnerグループ内にランナーを作成する権限を付与します。

グループアクセストークン作成の有効化または無効化

トップレベルグループ内のすべてのサブグループに対してグループアクセストークンの作成を有効または無効にするには、以下の手順に従います:

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 設定] > [全般]を選択します。
  3. 権限とグループ機能] を展開します。
  4. 権限] で、[ユーザーはこのグループでプロジェクト アクセストークンとグループ アクセストークンを作成できる] をオンまたはオフにします。

作成が無効になっている場合でも、既存のグループアクセストークンを使用したり、取り消したりすることができます。

グループ用ボットユーザー

グループのボットユーザーはGitLabが作成したサービスアカウントです。グループアクセストークンを作成するたびにボットユーザーが作成され、グループに追加されます。これらのボットユーザーはプロジェクト用のボットユーザーと似ていますが、プロジェクトではなくグループに追加される点が異なります。グループのボットユーザー:

  • 課金対象ユーザーではないため、ライセンス上限にはカウントされません。
  • グループの最大ロールはオーナーです。詳細については、グループアクセストークンの作成を参照してください。
  • ユーザ名が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

その他のプロパティは、プロジェクトのボットユーザーと同様です。

トークンの利用可能性

グループアクセストークンは有償サブスクリプションでのみ利用可能で、トライアルサブスクリプションでは利用できません。詳しくは、GitLabトライアルFAQの「何が含まれていますか」をご覧ください。