サービスアカウント
サービスアカウントは、マシン間の API アクセス向けに設計された ID です。通常のユーザーアカウントと異なり、サービスアカウントは個々のユーザーではなく組織が所有します。これは、Cloud Intelligence へのプログラムによるアクセスが必要な CI/CD パイプライン・モニタリングエージェント・請求データエクスポータなどの自動化ワークフローに有用です。
各サービスアカウントには 、それぞれ独自の名前・説明・権限セットがあり、アカウントがアクセスできる内容を決定します。サービスアカウントには、ライフサイクル状態(アクティブ・無効・期限切れ)が独立した複数の API トークンを保持できます。トークン自体には独自の権限スコープはありません。アクティブなトークンはサービスアカウントとして認証され、各リクエストはサービスアカウントに現在割り当てられている権限を使って認可されます。
例:Cloud Analytics(クラウド分析)レポートの夜間エクスポート
FinOps チームは毎晩、スケジュールされたジョブを実行し、Cloud Analytics レポート を DoiT Reports API から取得して、社内のデータベースまたはデータウェアハウスにロードします。ジョブは共通インフラストラクチャ(たとえば GitHub Actions・Apache Airflow・サーバー上の cron ジョブなど)上で実行され、設定した担当者がロール変更や退職をしても動作し続ける必要があります。
このようなケースでは、パーソナル API トークン よりもサービスアカウントの方が適しています。
-
Service Account Creator 権限を持ち、かつすでに Cloud Analytics User を持っているユーザーが、
finops-report-exportという名前のサービスアカウントを作成し、(Nightly export of allocation report to internal warehouse などの)短い説明を追加します。 -
Permissions scope では、管理者は Cloud Analytics User のみを割り当てます。Reports API にはこの権限が必要だからです。権限はトークンごとではなく、サービスアカウントに対して設定されます。
-
レポートの所有者は、組織全体に対して Viewer として レポートを共有 するか、組織で利用可能な プリセットレポート をジョブの対象にします。サービスアカウントのトークンにはユーザーのメールアドレスがないため、組織全体に共有されていないプライベートレポートには API からアクセスできません。
-
サービスアカウントの API tokens タブで、管理者がトークン(例:
github-actions-prod)を作成し、セキュリティポリシーでローテーションが求められる場合は有効期限を設定し、トークン値をシークレットマネージャーまたは CI/CD のシークレットストアに保存します。トークンをソースコード管理にコミットすることはありません。 -
スケジュールされたワークフローは、そのシークレットストアからトークンを読み取り、
AuthorizationヘッダーにBearer <token>を指定して Reports API を呼び出します。認証の詳細については DoiT Developer Hub: Get started、エンドポイントリファレンスについては Get report results を参照してください。 -
トークンの有効期限が近づいたら、Service Account Manager 権限を持つユーザーが新しいトークンを作成し、シークレットストアを更新し、ジョブが成功することを確認してから、古いトークンを無効化または削除します。
認証情報は組織に属し、API アクセスはサービスアカウントに割り当てられた権限に限定されます。また、自動化を特定のユーザープロファイルに紐づけることなく認証情報をローテーションできます。
制限事項
組織は必要なだけ多くのサービスアカウントを作成できます。サービスアカウント数に制限はありません。
各サービスアカウントには、削除されていない API トークンを最大 10 個まで保持できます(アクティブ・無効・期限切れのトークンはすべてこのリミットに含まれます)。詳細は サービスアカウントの API トークンを管理する を参照してください。
必要な権限
サービスアカウントには 2 つの権限レイヤーが関係します。サービスアカウントと API トークンの権限 を参照してください。
コンソールでサービスアカウントを管理する
次の権限によって、サービスアカウントとそのトークンを閲覧または変更できるユーザーが決まります。
サービスアカウントへアクセスして管理するには、Users Manager 権限が必要です。
| 権限 | アクセスできる内容 |
|---|---|
| Service Account Viewer | サービスアカウント一覧とサービスアカウント詳細ページを表示 |
| Service Account Creator | Viewer のすべてに加え、新しいサービスアカウントと API トークンを作成 |
| Service Account Manager | Viewer のすべてに加え、サービスアカウントおよびその API トークンの編集・無効化・削除 |
Service Account Creator と Service Account Manager には、それぞれ Service Account Viewer アクセスが含まれます。サービスアカウントを作成または管理できるユーザーに対して、Viewer 権限を別途付与する必要はありません。
Creator 権限と Manager 権限は、それ以外は互いに独立し ています。Service Account Creator のみを持つユーザーは、新しいサービスアカウントとトークンを作成できますが、Service Account Manager も持っていない限り、その後サービスアカウントを編集したり、トークンを無効化または削除したりすることはできません。
これらの権限はパーソナル API トークンには適用されません。API アクセス権を持つ任意のユーザーは、自分の API トークンを独立して作成・管理できます。
サービスアカウントに割り当てられる権限
サービスアカウントを作成または編集する際、そのアカウント(およびそのトークン)が持つ API 権限(例:Cloud Analytics User)を選択します。割り当て可能なのは、自分自身のユーザーアカウントがすでに持っている権限のみです。自分が持っていない権限は Permissions scope に表示されず、サービスアカウントに付与することもできません。
各サービスアカウントには、そのワークロードに必要な最低限の権限のみを付与してください。