プロジェクトアクセストークン
- プラン: Free、Premium、Ultimate 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
プロジェクトアクセストークンは、特定のプロジェクトへの認証されたアクセスを提供します。これらはグループアクセストークンやパーソナルアクセストークンに似ていますが、グループやユーザーではなく関連するプロジェクトにスコープされています。他のプロジェクトのプロジェクトアクセストークンを使用してリソースにアクセスしたり、他のグループアクセストークン、プロジェクトアクセストークン、またはパーソナルアクセストークンを作成したりすることはできません。
プロジェクトアクセストークンを使用して認証できるのは以下のとおりです:
- GitLab APIで認証。
- HTTPS経由でのGit。使用方法:
- 任意の空白以外の値をユーザー名として使用します。
- パスワードとしてプロジェクトアクセストークンを使用します。
前提条件:
- プロジェクトのメンテナーまたはオーナーのロール。
GitLab.comでは、プロジェクトアクセストークンにはPremiumまたはUltimateサブスクリプションが必要です。トライアル期間中は、プロジェクトアクセストークンは1つに制限されます。
GitLab Self-ManagedおよびGitLab Dedicatedでは、プロジェクトアクセストークンは任意のライセンスで利用できます。
アクセストークンを表示
プロジェクトアクセストークンページには、アクセストークンに関する情報が表示されます。
このページから、以下の操作を実行できます:
- プロジェクトアクセストークンの作成、ローテーション、および失効。
- すべてのアクティブおよび非アクティブなプロジェクトアクセストークンを表示。
- トークン情報(スコープ、割り当てられたロール、有効期限を含む)を表示。
- 利用状況の情報(利用日、および過去5件の固有の接続IPアドレスを含む)を表示。
プロジェクトアクセストークンを表示するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > アクセストークンを選択します。
アクティブで利用可能なアクセストークンは、アクティブなプロジェクトアクセストークンセクションに保存されます。期限切れ、ローテーションされた、または失効されたトークンは、無効なプロジェクトアクセストークンセクションに保存されます。
プロジェクトアクセストークンを作成する
拡張された最大許容ライフタイム制限の利用可能性は、機能フラグによって制御されます。詳細については、履歴を参照してください。
プロジェクトアクセストークンを作成するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > アクセストークンを選択します。
- 新しいトークンを追加を選択します。
- トークン名に名前を入力します。トークン名は、プロジェクトを表示する権限を持つすべてのユーザーに表示されます。
- オプション。トークンの説明に、トークンの説明を入力します。
- 有効期限に、トークンの有効期限を入力します。
- トークンは、その日付のUTC真夜中に期限切れになります。
- 日付を入力しない場合、有効期限は今日から365日後に設定されます。
- デフォルトでは、有効期限は今日から365日を超えることはできません。GitLab 17.6以降、管理者はアクセストークンの最大ライフタイムを修正できます。
- トークンのロールを選択します。
- 1つ以上のプロジェクトアクセストークンのスコープを選択します。
- プロジェクトアクセストークンを作成を選択します。
プロジェクトアクセストークンが表示されます。プロジェクトアクセストークンを安全な場所に保存します。ページを離れるか更新すると、再度表示することはできません。
すべてのプロジェクトアクセストークンは、パーソナルアクセストークン用に設定されたデフォルトのプレフィックス設定を継承します。
プロジェクトアクセストークンは内部ユーザーとして扱われます。内部ユーザーがプロジェクトアクセストークンを作成した場合、そのトークンは表示レベルがInternalに設定されているすべてのプロジェクトにアクセスできます。
プロジェクトアクセストークンのスコープ
スコープは、プロジェクトアクセストークンで認証する際に利用できるアクションを定義します。
| スコープ | 説明 |
|---|---|
api | スコープ付きプロジェクトAPIへの完全な読み取り/書き込みアクセスを許可します(コンテナレジストリ、依存プロキシ、パッケージレジストリを含む)。 |
read_api | パッケージレジストリを含む、スコープ付きプロジェクトAPIへの読み取りアクセスを許可します。 |
read_registry | プロジェクトがプライベートで認可が必要な場合、コンテナレジストリイメージへの読み取りアクセス(プル)を付与します。コンテナレジストリが有効になっている場合にのみ使用できます。 |
write_registry | コンテナレジストリへの書き込みアクセス(プッシュ)を許可します。イメージをプッシュするには、read_registryスコープを含める必要があります。コンテナレジストリが有効になっている場合にのみ使用できます。 |
read_repository | プロジェクト内のリポジトリへの読み取りアクセス(プル)を付与します。 |
write_repository | プロジェクト内のリポジトリへの読み取りおよび書き込みアクセス(プルおよびプッシュ)を付与します。 |
create_runner | プロジェクトでRunnerを作成する権限を付与します。 |
manage_runner | プロジェクトでRunnerを管理する権限を付与します。 |
ai_features | GitLab Duo、コード提案API、およびGitLab Duo Chat APIのアクションを実行する権限を付与します。JetBrains用GitLab Duoプラグインで動作するように設計されています。その他のすべての拡張機能については、個別の拡張機能ドキュメントを参照してください。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時にチェックを実行し、まもなく期限切れになるプロジェクトアクセストークンを特定します。オーナーまたはメンテナーロールを持つ直接のメンバーには、トークンの期限が切れる7日前にメールで通知されます。GitLab 17.6以降では、トークンの期限が切れる30日前と60日前にも通知が送信されます。
GitLab 17.7以降では、継承されたオーナーまたはメンテナーロールを持つメンバーもこれらのメールを受信できます。これは、GitLabインスタンス上のすべてのグループとプロジェクト、または特定の親グループに対して設定できます。親グループに適用された場合、この設定はすべての子孫グループおよびプロジェクトに継承されます。
期限切れのトークンは、自動的に削除されるまで非アクティブなプロジェクトアクセストークンセクションに表示されます。GitLab Self-Managedでは、この保持期間を変更できます。
プロジェクトのボットユーザー
プロジェクトアクセストークンを作成すると、GitLabはボットユーザーを作成し、それをトークンに関連付けます。
ボットユーザーには以下のプロパティがあります:
- 関連付けられたアクセストークンのロールとスコープに対応する権限が付与されます。
- それらはプロジェクトのメンバーですが、プロジェクトから削除したり、他のグループやプロジェクトに直接追加したりすることはできません。
- それらは非請求対象ユーザーであり、ライセンス制限には含まれません。
- 彼らのコントリビュートはボットユーザーアカウントに関連付けられています。
- 削除されると、彼らのコントリビュートはゴーストユーザーに移動されます。
ボットユーザーが作成されると、以下の属性が定義されます:
| 属性 | 値 | 例 |
|---|---|---|
| 名前 | 関連付けられたアクセストークンの名前。 | Main token - Read registry |
| ユーザー名 | この形式で生成されます: project_{project_id}_bot_{random_string} | project_123_bot_4ffca233d8298ea1 |
| メール | この形式で生成されます: project_{project_id}_bot_{random_string}@noreply.{Gitlab.config.gitlab.host} | project_123_bot_4ffca233d8298ea1@noreply.example.com |
プロジェクトアクセストークンの作成を制限する
悪用を防ぐため、トップレベルグループ内のプロジェクトに対するアクセストークンの作成をユーザーに制限できます。既存のトークンは、期限切れになるか手動で失効されるまで有効です。
詳細については、グループおよびプロジェクトアクセストークンの作成を制限するを参照してください。