サービスアカウント
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
サービスアカウントは、個々の人ではなく、人間ではないエンティティを表すユーザーアカウントです。サービスアカウントを使用して、自動化されたアクションを実行したり、データにアクセスしたり、スケジュールされたプロセスを実行したりできます。サービスアカウントは、チームのメンバーシップの変更に関わらず認証情報が安定している必要があるパイプラインやサードパーティの統合でよく使用されます。
サービスアカウントは、パーソナルアクセストークンで認証するします。これらはパッケージとコンテナレジストリと対話したり、Gitオペレーションを実行したり、APIにアクセスしたりできます。
サービスアカウントには、次の特徴があります:
- これらはシートを使用しません。
- これらは請求対象ユーザーでもinternal usersでもありません。
- これらは常にexternal usersとしてマークされます。
- これらはUIを介してGitLabにサインインできません。
- これらはLDAPなどのサービスを介して管理できません。
- これらは、サブグループやプロジェクトによってプロビジョニングされた場合、トップレベルグループや他のサービスアカウントを作成できません。
- これらは、通常のユーザーとしてではなく、サービスアカウントとしてグループおよびプロジェクトのメンバーシップリストに表示されます。
- カスタムメールアドレスを追加しない限り、これらは通知メールを受け取りません。
- これらはGitLabのトライアルバージョンで利用できます。GitLab.comでは、トップレベルグループのオーナーが最初に本人確認を行う必要があります。
サービスアカウントAPIを通じてサービスアカウントを管理することもできます。
作成できるサービスアカウントの数は、サブスクリプションとオファリングによって異なります:
- PremiumとUltimateでは、すべてのオファリングで無制限のサービスアカウントを作成できます。
- GitLab Freeでは、オファリングによって制限が異なります:
- GitLab.comでは、トップレベルグループごとに最大100のサービスアカウントを作成できます。これには、サブグループまたはプロジェクトで作成されたサービスアカウントが含まれます。
- GitLab Self-Managed Enterprise Edition (EE)では、インスタンス全体で最大100のサービスアカウントを作成できます。
- GitLab Self-Managed GitLab CEでは、サービスアカウントを作成できません。
サービスアカウントのタイプ
サービスアカウントには3つのタイプがあり、それぞれ異なるスコープと前提条件があります:
インスタンスサービスアカウントは、管理者エリアを通じて作成され、インスタンス上の任意のグループまたはプロジェクトに招待できます。
前提条件:
- インスタンスへの管理者アクセス権。
グループサービスアカウントは、特定のグループによって作成され、作成されたグループ、またはその子孫のサブグループやプロジェクトに招待できます。これらはトップレベルグループやサービスアカウントを作成できません。
前提条件:
- GitLab.comでは、グループのオーナーロールが必要です。
- GitLab Self-ManagedまたはGitLab Dedicatedでは、次のいずれかの条件を満たす必要があります:
- インスタンスの管理者である。
- グループでオーナーロールを持ち、サービスアカウントを作成することを許可されていること。
プロジェクトサービスアカウントは、特定のプロジェクトによって作成され、そのプロジェクトでのみ利用できます。これらはトップレベルグループやサービスアカウントを作成できません。
前提条件:
- GitLab.comでは、プロジェクトのオーナーまたはメンテナーロールが必要です。
- GitLab Self-ManagedまたはGitLab Dedicatedでは、次のいずれかの条件を満たす必要があります:
- インスタンスの管理者である。
- プロジェクトでオーナーまたはメンテナーロールを持っていること。
サービスアカウントの表示と管理
サービスアカウントページには、グループ、プロジェクト、またはインスタンス内のサービスアカウントに関する情報が表示されます。各グループ、プロジェクト、およびSelf-Managedインスタンスには、個別のサービスアカウントページがあります。これらのページから、次のことができます。
- グループまたはインスタンスのすべてのサービスアカウントを表示する。
- サービスアカウントを削除する
- サービスアカウントの名前またはユーザー名を編集する。
- サービスアカウントのパーソナルアクセストークンを管理する。
インスタンス全体のサービスアカウントを表示するには:
- 右上隅で、管理者を選択します。
- 左サイドバーで、設定 > サービスアカウントを選択します。
グループのサービスアカウントを表示するには:
- 上部のバーで、検索または移動先を選択して、グループを見つけます。
- 設定 > サービスアカウントを選択します。
プロジェクトのサービスアカウントを表示するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > サービスアカウントを選択します。
サービスアカウントを作成する
GitLab.comでは、トップレベルグループのOwnersのみがサービスアカウントを作成できます。
デフォルトでは、GitLab Self-ManagedおよびGitLab Dedicatedでは、管理者の管理者のみがどちらのタイプのサービスアカウントも作成できます。ただし、インスタンスを設定して、トップレベルグループのOwnersがグループサービスアカウントを作成できるようにすることができます。
作成できるサービスアカウントの数は、サブスクリプションとオファリングによって異なります:
- PremiumとUltimateでは、すべてのオファリングで無制限のサービスアカウントを作成できます。
- GitLab Freeでは、オファリングによって制限が異なります:
- GitLab.comでは、トップレベルグループごとに最大100のサービスアカウントを作成できます。これには、サブグループまたはプロジェクトで作成されたサービスアカウントが含まれます。
- GitLab Self-Managed Enterprise Edition (EE)では、インスタンス全体で最大100のサービスアカウントを作成できます。
- GitLab Self-Managed GitLab CEでは、サービスアカウントを作成できません。
サービスアカウントを作成するには:
- サービスアカウントページに移動します。
- サービスアカウントの追加を選択します。
- サービスアカウントの名前を入力します。ユーザー名は、名前に基づいて自動的に生成されます。必要に応じて、ユーザー名を変更できます。
- サービスアカウントの作成を選択します。
サービスアカウントを編集する
サービスアカウントの名前またはユーザー名を編集できます。
複合IDに関連付けられたサービスアカウントのユーザー名を更新することはできません。
サービスアカウントを編集するには:
- サービスアカウントページに移動します。
- サービスアカウントを特定します。
- 縦方向の省略記号( ) > 編集を選択します。
- サービスアカウントの名前またはユーザー名を編集します。
- 変更を保存を選択します。
グループまたはプロジェクトにサービスアカウントを追加する
サービスアカウントは、グループまたはプロジェクトのメンバーとして追加するまでアクセスが制限されます。任意の数のサービスアカウントをグループまたはプロジェクトに追加でき、各サービスアカウントは、各グループ、サブグループ、またはプロジェクトで異なるロールを持つことができます。
サービスアカウントのアクセスは、サービスアカウントのタイプによって異なります:
- インスタンスサービスアカウント: インスタンス上の任意のグループまたはプロジェクトに招待できます。
- グループサービスアカウント: 作成されたグループ、またはその子孫のサブグループやプロジェクトに招待できます。
- プロジェクトサービスアカウント: 作成されたプロジェクトのみに招待できます。
グループが別のグループと共有されると、サービスアカウントを含むそのグループのすべてのメンバーが共有グループにアクセスできます。
サービスアカウントをグループとプロジェクトに割り当てるには、次の方法を使用します:
- GitLab UI:
- API:
グローバルSAMLグループメンバーシップロックまたはグローバルLDAPグループメンバーシップロックの設定が有効になっている場合、サービスアカウントのメンバーシップを制御するにはAPIを使用する必要があります。
サービスアカウントでプロジェクトをフォークする
サービスアカウントは、プロジェクトフォークAPIを通じてプロジェクトをフォークすることができますが、個人のネームスペースにフォークすることはできません。サービスアカウントでフォークする場合、ターゲットグループのネームスペースを指定する必要があります。
前提条件:
- サービスアカウントにはデベロッパーロールがあり、ターゲットグループのメンバーです。
- サービスアカウントのパーソナルアクセストークンに対して
apiスコープがオンになっています。
サービスアカウントを使用してプロジェクトをフォークするには:
フォークが作成されるターゲットグループを特定します。
サービスアカウントが適切な権限を持つそのグループのメンバーであることを確認します。
namespace_idまたはnamespace_pathのいずれかを使用して、プロジェクトフォークAPIを使用します:curl --request POST --header "PRIVATE-TOKEN: <service_account_token>" \ --data "namespace_path=target-group" \ "https://gitlab.example.com/api/v4/projects/<project_id>/fork"
サービスアカウントを削除する
サービスアカウントを削除すると、そのアカウントによる貢献は保持され、所有権はゴーストユーザーに転送されます。これらのコントリビュートには、マージリクエスト、イシュー、プロジェクト、グループなどのアクティビティが含まれます。
サービスアカウントを削除するには:
- サービスアカウントページに移動します。
- サービスアカウントを特定します。
- 縦方向の省略記号( ) > アカウントの削除を選択します。
- サービスアカウントの名前を入力します。
- ユーザーを削除を選択します。
サービスアカウントと、アカウントによって行われたコントリビュートを削除することもできます。これらのコントリビュートには、マージリクエスト、イシュー、グループ、プロジェクトなどのアクティビティが含まれます。
- サービスアカウントページに移動します。
- サービスアカウントを特定します。
- 縦方向の省略記号( ) > アカウントとコントリビュートの削除を選択します。
- サービスアカウントの名前を入力します。
- ユーザーとコントリビュートを削除を選択します。
APIを通じてサービスアカウントを削除することもできます。
- インスタンスサービスアカウントの場合は、ユーザーAPIを使用します。
- グループサービスアカウントの場合は、サービスアカウントAPIを使用します。
サービスアカウントのパーソナルアクセストークンの表示と管理
パーソナルアクセストークンページには、トップレベルグループまたはインスタンスのサービスアカウントに関連付けられたパーソナルアクセストークンに関する情報が表示されます。これらのページから、次のことができます。
- パーソナルアクセストークンをフィルタリングしたり、ソートしたり、その詳細を表示したりする。
- パーソナルアクセストークンをローテーションする。
- パーソナルアクセストークンを取り消す。
APIを通じてサービスアカウントのパーソナルアクセストークンを管理することもできます。
- インスタンスサービスアカウントの場合は、パーソナルアクセストークンAPIを使用します。
- グループサービスアカウントの場合は、サービスアカウントAPIを使用します。
サービスアカウントのパーソナルアクセストークンページを表示するには:
- サービスアカウントページに移動します。
- サービスアカウントを特定します。
- 縦方向の省略記号( ) > アクセストークンを管理を選択します。
サービスアカウントのパーソナルアクセストークンを作成する
サービスアカウントを使用するには、パーソナルアクセストークンを作成してリクエストを認証する必要があります。
サービスアカウントのパーソナルアクセストークンを作成するには:
- サービスアカウントページに移動します。
- サービスアカウントを特定します。
- 縦方向の省略記号( ) > アクセストークンを管理を選択します。
- 新しいトークンを追加を選択します。
- トークン名に、トークンの名前を入力します。
- オプション。トークンの説明に、トークンの説明を入力します。
- 有効期限に、トークンの有効期限を入力します。
- トークンは、その日付のUTC午前0時に期限切れになります。有効期限が2024-01-01のトークンは、2024-01-01の00:00:00 UTCに期限切れになります。
- 有効期限を入力しない場合、有効期限は現在の日付より365日後に自動的に設定されます。
- デフォルトでは、この日付は現在の日付より最大365日後に設定できます。GitLab 17.6以降では、この制限を400日に延長できます。
- 必要なスコープを選択します。
- パーソナルアクセストークンを作成を選択します。
パーソナルアクセストークンをローテーションする
パーソナルアクセストークンをローテーションして、現在のトークンを無効にし、新しい値を生成できます。
これは元に戻せません。回転されたトークンに依存するサービスは動作を停止します。
サービスアカウントのパーソナルアクセストークンをローテーションするには:
- サービスアカウントページに移動します。
- サービスアカウントを特定します。
- 縦方向の省略記号( ) > アクセストークンを管理を選択します。
- アクティブなトークンの横にある縦方向の省略記号 ( ) を選択します。
- ローテーションを選択します。
- 確認ダイアログで、ローテーションを選択します。
パーソナルアクセストークンを取り消す
パーソナルアクセストークンをローテーションして、現在のトークンを無効にすることができます。
これは元に戻せません。失効されたトークンに依存するサービスは動作を停止します。
サービスアカウントのパーソナルアクセストークンを取り消すには:
- サービスアカウントページに移動します。
- サービスアカウントを特定します。
- 縦方向の省略記号( ) > アクセストークンを管理を選択します。
- アクティブなトークンの横にある縦方向の省略記号 ( ) を選択します。
- 取り消しを選択します。
- 確認ダイアログで、取り消しを選択します。
レート制限
レート制限がサービスアカウントに適用されます。
- GitLab.comでは、GitLab.com固有のレート制限が適用されます。
- GitLab Self-ManagedとGitLab Dedicatedでは、次のレート制限が適用されます。