サービスアカウント
サービスアカウントは、マシン間の 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