サービスアカウント

サービス・アカウントは、マシン・ユーザーの一種であり、個々のユーザーと結びついていません。

サービスアカウント

  • ライセンスシートを使用しません。
  • ではありません:
    • 請求可能なユーザーではありません。
    • ボットユーザー。
  • サービスアカウントとしてグループメンバーシップに登録されています。
  • UIからGitLabにサインインできません。

パイプラインやインテグレーションでは、ユーザーメンバーシップの変更に影響されることなく認証情報を設定・維持する必要があるため、サービスアカウントを使用する必要があります。

サービスアカウントの作成

作成できるサービスアカウントの数は、ライセンスで許可されているサービスアカウントの数によって制限されます:

  • GitLab Freeでは、サービスアカウントは利用できません。
  • GitLab Premiumでは、有料シート1つにつき1つのサービスアカウントを作成できます。
  • GitLab Ultimateでは、サービスアカウントを無制限に作成できます。

アカウントの作成方法は、GitLab.comかセルフマネージドかによって異なります。

GitLab.com

前提条件

  • トップレベルグループのオーナーロールを持っている必要があります。
  1. サービスアカウントを作成します。

    このサービスアカウントは、トップレベルのグループにのみ関連付けられます。

  2. サービス・アカウント・ユーザーの個人アクセストークンを作成します。

    個人アクセストークンにスコープを設定することで、サービスアカウントのスコープを定義します。

    レスポンスにはパーソナルアクセストークンの値が含まれます。

  3. 返されたパーソナルアクセストークンの値を使用して、サービスアカウントユーザーとして GitLab API で認証を行います。

このサービスアカウントユーザーはトップレベルのグループによってプロビジョニングされますが、まだグループのメンバーではありません。サービスアカウントユーザーを手動でグループに追加する必要があります。

自己管理型 GitLab

前提条件

  • 自己管理インスタンスの管理者である必要があります。
  1. サービスアカウントを作成します。

    このサービス・アカウントは、インスタンス内の特定のグループやプロジェクトではなく、インスタンス全体に関連付けられています。

  2. サービス・アカウント・ユーザーの個人アクセストークンを作成します。

    個人アクセストークンにスコープを設定することで、サービスアカウントのスコープを定義します。

    レスポンスにはパーソナルアクセストークンの値が含まれます。

  3. 返されたパーソナルアクセストークンの値を使用して、サービスアカウントユーザーとして GitLab API で認証を行います。

サブグループまたはプロジェクトにサービスアカウントを追加します。

機能的には、サービスアカウントは外部ユーザーと同じで、最初に作成したときは最小限のアクセス権しかありません。

そのアカウントにアクセスさせたいプロジェクトや グループには、手動でサービスアカウントを追加する必要があります。

プロジェクトやグループに追加できるサービスアカウントの数に制限はありません。

サービスアカウント

  • 同じトップレベルグループの複数のサブグループやプロジェクトで異なるロールを持つことができます。
  • GitLab.comでは、1つのトップレベルグループにのみ所属します。

サブグループやプロジェクトに追加

サービスアカウントをサブグループまたはプロジェクトに追加するには、:

サブグループまたはプロジェクトのサービスアカウントロールの変更

サブグループまたはプロジェクトのサービスアカウントのロールは、UIまたはAPIで変更できます。

UIを使用するには、サブグループまたはプロジェクトのメンバーシップリストに移動し、サービスアカウントのロールを変更します。

APIを使用するには、以下のエンドポイントを呼び出してください:

curl --request POST --header "PRIVATE-TOKEN: <PRIVATE-TOKEN>" \ --data "user_id=<service_account_user_id>&access_level=30" "https://gitlab.example.com/api/v4/projects/<project_id>/members"

属性の詳細については、グループまたはプロジェクトのメンバーの編集に関する API ドキュメントを参照してください。

個人アクセストークンのローテーション

前提条件:

  • GitLab.comでは、トップレベルグループのオーナーロールを持っている必要があります。
  • セルフマネージドGitLabの場合は、セルフマネージドインスタンスの管理者である必要があります。

グループ API を使用して、サービスアカウントユーザーの個人アクセストークンをローテーションします。

サービスアカウントの無効化

サービスアカウントを直接無効にしたり削除したりすることはできません。代わりに

  1. すべてのサブグループとプロジェクトのメンバーとしてサービスアカウントを削除します:

    curl --request DELETE --header "PRIVATE-TOKEN: <access_token_id>" "https://gitlab.example.com/api/v4/groups/<group_id>/members/<service_account_id>"
    

    詳細については、グループやプロジェクトからのメンバーの削除に関するAPIドキュメントを参照してください。

  2. UIまたはAPIを使用して、個人アクセストークンを失効させます。