グループアクセストークン
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
グループアクセストークンは、グループとそのプロジェクトへの認証されたアクセスを提供します。それらはパーソナルアクセストークンおよびプロジェクトアクセストークンに似ていますが、ユーザーやプロジェクトではなくグループに紐付けられています。グループアクセストークンを使用して、他のグループ、プロジェクト、またはパーソナルアクセストークンを作成することはできません。
グループアクセストークンを使用すると、次の認証が可能です。
- GitLab APIで認証。
- HTTPSを介したGitの場合。使用方法:
- 任意の空白以外の値をユーザー名として使用します。
- グループアクセストークンをパスワードとして使用します。
前提条件:
- グループのオーナーロール。
GitLab.comでは、グループアクセストークンにはPremiumまたはUltimateプランのサブスクリプションが必要です。それらはトライアル期間中は利用できません。
GitLab Self-ManagedおよびGitLab Dedicatedでは、グループアクセストークンはどのライセンスでも利用できます。
あなたのアクセストークンを表示する
グループアクセストークンページには、あなたのアクセストークンに関する情報が表示されます。
このページから、以下の操作を実行できます:
- グループアクセストークンの作成、ローテーション、および失効。
- すべてのアクティブなグループアクセストークンと無効なグループアクセストークンを表示します。
- トークン情報(スコープ、割り当てられたロール、有効期限を含む)を表示します。
- 使用状況の情報(使用日、および最後の5つの異なる接続IPアドレスを含む)を表示します。
あなたのグループアクセストークンを表示するには:
- 上部のバーで、検索または移動先を選択して、グループを見つけます。
- 設定 > アクセストークンを選択します。
アクティブで利用可能なアクセストークンは、アクティブなグループアクセストークンセクションに保存されます。期限切れ、ローテーション済み、または失効したトークンは、無効なグループアクセストークンセクションに保存されます。
グループアクセストークンの作成
拡張された最大許容ライフタイム制限の利用可能性は、機能フラグによって制御されます。詳細については、履歴を参照してください。
UIを使用する場合
グループアクセストークンを作成するには:
- 上部のバーで、検索または移動先を選択して、グループを見つけます。
- 設定 > アクセストークンを選択します。
- 新しいトークンを追加を選択します。
- トークン名に、名前を入力します。トークン名は、グループを表示する権限を持つすべてのユーザーに表示されます。
- オプション。トークンの説明に、トークンの説明を入力します。
- 有効期限に、トークンの有効期限を入力します。
- トークンは、その日のUTC深夜に期限が切れます。
- 日付を入力しない場合、有効期限は今日から365日後に設定されます。
- デフォルトでは、有効期限は今日から365日を超えることはできません。GitLab 17.6以降では、管理者はアクセストークンの最大ライフタイムを変更できます。
- トークンのロールを選択します。
- 1つまたは複数のグループアクセストークンのスコープを選択します。
- グループアクセストークンを作成を選択します。
グループアクセストークンが表示されます。グループアクセストークンを安全な場所に保存します。ページを離れるか更新すると、再度表示することはできません。
すべてのグループアクセストークンは、パーソナルアクセストークンに設定されたデフォルトのプレフィックス設定を継承します。
グループアクセストークンは内部ユーザーとして扱われます。内部ユーザーがグループアクセストークンを作成した場合、そのトークンは、表示レベルがInternalに設定されているすべてのプロジェクトにアクセスできます。
Railsコンソールを使用する場合
管理者の場合は、Railsコンソールでグループアクセストークンを作成できます。
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 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) service_response = 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 = service_response.payload[:user] if service_response.success? # 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生成されたグループアクセストークンが動作するかテストします。
GitLab REST APIで、
PRIVATE-TOKENヘッダーでグループアクセストークンを使用します。例:- グループにエピックを作成します。
- グループのプロジェクトの1つにプロジェクトパイプラインを作成します。
- グループのプロジェクトの1つにイシューを作成します。
グループトークンを使用して、HTTPSを使ってグループのプロジェクトを複製します。
グループアクセストークンのスコープ
スコープは、グループアクセストークンで認証するときに利用可能なアクションを定義します。
| スコープ | 説明 |
|---|---|
api | スコープ付きグループおよび関連するプロジェクトAPIへの完全な読み取り/書き込みアクセスを許可します(コンテナレジストリ、依存プロキシ、パッケージレジストリを含む)。 |
read_api | パッケージレジストリを含む、スコープ付きグループおよび関連プロジェクトAPIへの読み取りアクセスを許可します。 |
read_repository | グループ内のすべてのリポジトリに対する読み取りアクセス(プル)を付与します。 |
write_repository | グループ内のすべてのリポジトリに対する読み取り/書き込みアクセス(プルおよびプッシュ)を付与します。 |
read_registry | グループ内のいずれかのプロジェクトがプライベートで認可が必要な場合、コンテナレジストリイメージへの読み取りアクセス(プル)を付与します。コンテナレジストリが有効になっている場合にのみ使用できます。 |
write_registry | コンテナレジストリへの書き込みアクセス(プッシュ)を許可します。イメージをプッシュするには、read_registryスコープを含める必要があります。コンテナレジストリが有効になっている場合にのみ使用できます。 |
read_virtual_registry | 依存プロキシを介したコンテナイメージへの読み取りアクセス(プル)を付与します。依存プロキシが有効になっている場合にのみ使用できます。 |
write_virtual_registry | 依存プロキシを介したコンテナイメージへの読み取りおよび書き込みアクセス(プル、プッシュ、削除)を付与します。依存プロキシが有効になっている場合にのみ使用できます。 |
create_runner | グループ内にRunnerを作成する権限を付与します。 |
manage_runner | グループ内のRunnerを管理する権限を付与します。 |
ai_features | GitLab Duo、コード提案API、およびGitLab Duo Chat APIのアクションを実行する権限を付与します。GitLab Duoプラグインfor JetBrainsと連携するように設計されています。その他のすべての拡張機能については、個々の拡張機能のドキュメントを参照してください。GitLab Self-Managedバージョン16.5、16.6、16.7では動作しません。 |
k8s_proxy | グループ内のKubernetes用エージェントを使用してKubernetes APIコールを実行する権限を付与します。 |
self_rotate | パーソナルアクセストークンAPIを使用して、このトークンをローテーションする権限を付与します。他のトークンのローテーションは許可しません。 |
グループアクセストークンをローテーションする
トークンをローテーションして、元のトークンと同じ権限とスコープを持つ新しいトークンを作成します。元のトークンは直ちに無効になり、GitLabは監査目的で両方のバージョンを保持します。アクセストークンページで、アクティブなトークンと無効なトークンの両方を表示できます。
GitLab Self-ManagedおよびGitLab Dedicatedでは、無効なトークンの保持期間を変更できます。
このアクションは元に戻せません。ローテーションされたアクセストークンに依存するツールは、新しいトークンを参照するまで機能しなくなります。
グループアクセストークンをローテーションするには:
- 上部のバーで、検索または移動先を選択して、グループを見つけます。
- 設定 > アクセストークンを選択します。
- 関連するトークンのローテーション( )を選択します。
- 確認ダイアログで、ローテーションを選択します。
グループアクセストークンを失効する
トークンを失効すると、直ちに無効になり、それ以降の使用が防止されます。トークンはすぐに削除されませんが、トークンリストをフィルタリングしてアクティブなトークンのみを表示できます。デフォルトでは、GitLabは失効したグループアクセストークンおよびプロジェクトアクセストークンを30日後に削除します。詳細については、無効なトークンの保持を参照してください。
このアクションは元に戻せません。失効したアクセストークンに依存するツールは、新しいトークンを追加するまで機能しなくなります。
グループアクセストークンを失効するには:
- 上部のバーで、検索または移動先を選択して、グループを見つけます。
- 設定 > アクセストークンを選択します。
- 関連するトークンの取り消し( )を選択します。
- 確認ダイアログで、取り消しを選択します。
アクセストークンの有効期限
パーソナルアクセストークン、グループアクセストークン、およびプロジェクトアクセストークンは、有効期限のUTC深夜に期限が切れます。期限切れになると、それらはリクエストを認証するために使用できなくなります。
GitLab 16.0以降では、新しいアクセストークンには有効期限が必要です。有効期限がトークン作成時に明示的に設定されていない場合、今日から365日間の有効期限が適用されます。Ultimateでは、管理者はアクセストークンの最大許容ライフタイムを設定できます。
あなたのGitLabバージョンと提供内容によっては、GitLabバージョンのアップグレード時に既存のアクセストークンに有効期限が自動的に適用される場合があります。詳細については、期限切れにならないアクセストークンを参照してください。
グループアクセストークンの有効期限に関するメール
GitLabは、まもなく期限切れになるグループアクセストークンを特定するために、UTC午前1:00に毎日チェックを実行します。オーナーロールを持つ直接のメンバーには、トークンの期限が切れる7日前にメールで通知されます。GitLab 17.6以降では、トークンの期限が切れる30日前と60日前にも通知が送信されます。
GitLab 17.7以降では、オーナーロールを持つ継承されたメンバーもこれらのメールを受け取ることができます。これは、GitLabインスタンス上のすべてのグループ、または特定のグループに対して設定できます。親グループに適用された場合、この設定はすべての子孫グループとプロジェクトに継承されます。
期限切れのトークンは、自動的に削除されるまで無効なグループアクセストークンセクションに表示されます。GitLab Self-Managedでは、この保持期間を変更できます。
グループのボットユーザー
グループアクセストークンを作成すると、GitLabはボットユーザーを作成し、それをトークンに関連付けます。
ボットユーザーは以下のプロパティを持っています:
- それらには、関連付けられたアクセストークンのロールとスコープに対応する権限が付与されます。
- それらはグループのメンバーであり、サブグループとプロジェクトのメンバーシップを継承しますが、他のグループやプロジェクトに直接追加することはできません。
- それらは非請求対象ユーザーであり、ライセンス制限にはカウントされません。
- 彼らのコントリビュートは、ボットユーザーアカウントに関連付けられています。
- 削除されると、彼らのコントリビュートはゴーストユーザーに移動されます。
ボットユーザーが作成されると、以下の属性が定義されます:
| 属性 | 値 | 例 |
|---|---|---|
| 名前 | 関連付けられたアクセストークンの名前。 | Main token - Read registry |
| ユーザー名 | この形式で生成されます: 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 |
グループアクセストークンとプロジェクトアクセストークンの作成を制限する
潜在的な悪用を制限するために、トップレベルグループおよび任意の子孫サブグループやプロジェクトでのアクセストークンの作成をユーザーに制限できます。既存のトークンは、期限が切れるか手動で失効されるまで有効です。
アクセストークンの作成を制限するには:
- 上部のバーで検索または移動先を選択し、トップレベルグループを見つけます。
- 設定 > 一般を選択します。
- 権限とグループ機能を展開します。
- Users can create group access tokens and project access tokens in this groupチェックボックスをオフにします。
- 変更を保存を選択します。