サービスアカウント
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
サービスアカウントは、個々の人ではなく、人間ではないエンティティを表すユーザーアカウントです。自動化されたアクションの実行、データアクセス、またはスケジュールされたプロセスの実行には、サービスアカウントを使用します。サービスアカウントは、チームのメンバーシップの変更に関わらず認証情報を安定させる必要があるパイプラインやサードパーティインテグレーションで一般的に使用されます。
サービスアカウントはパーソナルアクセストークンを使用して認証します。これらはパッケージとコンテナレジストリと対話し、Gitオペレーションを実行し、APIにアクセスできます。
サービスアカウント:
- シートを使用しません。
- UIからGitLabにサインインできません。
- LDAPなどのサービスを通じて管理することはできません。
- グループおよびプロジェクトのメンバーシップリストにサービスアカウントとして表示されます。
- カスタムメールアドレスを追加しない限り、通知メールは受信しません。
- 請求対象ユーザーや内部ユーザーではありません。
- GitLabのトライアルバージョンで利用できます。GitLab.comでは、トップレベルグループのオーナーが最初に本人確認を行う必要があります。
- サブグループまたはプロジェクトによってプロビジョニングされた場合、トップレベルグループやその他のサービスアカウントを作成することはできません。
サービスアカウントAPIを通じてサービスアカウントを管理することもできます。
サービスアカウントの種類
サービスアカウントには3つの種類があり、それぞれ異なるスコープと前提条件があります:
インスタンスサービスアカウントは管理者エリアを通じて作成され、インスタンス上の任意のグループまたはプロジェクトに招待できます。
前提条件:
- インスタンスへの管理者アクセス権。
グループサービスアカウントは特定のグループによって作成され、作成されたグループ、または任意の子孫サブグループやプロジェクトに招待できます。それらはトップレベルグループやサービスアカウントを作成することはできません。
前提条件:
- GitLab.comでは、グループのオーナーロールが必要です。
- GitLab Self-ManagedまたはGitLab Dedicatedでは、次のいずれかである必要があります:
- インスタンスの管理者である。
- グループでオーナーロールを持ち、サービスアカウントを作成する権限があること。
プロジェクトサービスアカウントは特定のプロジェクトによって作成され、そのプロジェクトでのみ利用できます。それらはトップレベルグループやサービスアカウントを作成することはできません。
前提条件:
- GitLab.comでは、プロジェクトのオーナーまたはメンテナーロールが必要です。
- GitLab Self-ManagedまたはGitLab Dedicatedでは、次のいずれかである必要があります:
- インスタンスの管理者である。
- プロジェクトでオーナーまたはメンテナーロールを持っていること。
サービスアカウントの表示と管理
サービスアカウントページには、グループ、プロジェクト、またはインスタンス内のサービスアカウントに関する情報が表示されます。各グループ、プロジェクト、およびGitLab Self-Managedインスタンスには、個別のサービスアカウントページがあります。これらのページから、次のことができます。
- グループまたはインスタンスのすべてのサービスアカウントを表示する。
- サービスアカウントを削除する
- サービスアカウントの名前またはユーザー名を編集する。
- サービスアカウントのパーソナルアクセストークンを管理する。
インスタンス全体のサービスアカウントを表示するには:
- 右上隅で、管理者を選択します。
- 設定 > サービスアカウントを選択します。
グループのサービスアカウントを表示するには:
- 上部のバーで、検索または移動先を選択して、グループを見つけます。
- 設定 > サービスアカウントを選択します。
プロジェクトのサービスアカウントを表示するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > サービスアカウントを選択します。
サービスアカウントを作成する
GitLab.comでは、トップレベルグループのオーナーのみがサービスアカウントを作成できます。
デフォルトでは、GitLab Self-ManagedおよびGitLab Dedicatedでは、管理者のみがどちらかの種類のサービスアカウントを作成できます。ただし、インスタンスをトップレベルグループのオーナーがグループサービスアカウントを作成できるように設定できます。
作成できるサービスアカウントの数は、ライセンスによって制限されます。
- GitLab Freeでは、サービスアカウントを作成できません。
- GitLab PremiumおよびUltimateでは、無制限のサービスアカウントを作成できます。
サービスアカウントを作成するには:
- サービスアカウントページに移動します。
- サービスアカウントの追加を選択します。
- サービスアカウントの名前を入力します。ユーザー名は、名前に基づいて自動的に生成されます。必要に応じて、ユーザー名を変更できます。
- サービスアカウントの作成を選択します。
サービスアカウントを編集する
サービスアカウントの名前またはユーザー名を編集できます。
複合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では、次のレート制限が適用されます。