サービスアカウント
サービスアカウントは、マシン同士の API アクセス向けに設計されたアイデンティティです。通常のユーザーアカウントと異なり、サービスアカウントは個々のユーザーではなく組織に所有されます。これは、CI・CD パイプライン、モニタリングエージェント、DoiT Cloud Intelligence へのプログラムによるアクセスを必要とする請求データエクスポーターなど、自動化されたワークフローに有用です。
各サービスアカウントには固有の名前、説明、およびそのアカウントがアクセスできる内容を決定する権限セットがあります。サービスアカウントは、独立したライフサイクル状態 (有効、無効、期限切れ) を持つ複数の API トークンを保持できます。トークン自体には専用の権限スコープはありません。有効なトークンはサービスアカウントとして認証され、各リクエストはサービスアカウントに現在割り当てられている権限に基づいて認可されます。
例: Cloud Analytics レポートの毎晩のエクスポート
FinOps チームは毎晩、スケジュールされたジョブを実行し、Cloud Analytics レポートを DoiT Reports API から取得して、結果を社内のデータベースまたはデータウェアハウスにロードしています。ジョブは共通のインフラストラクチャ (GitHub Actions、Apache Airflow、サーバー上の cron ジョブなど) 上で実行され、セットアップした担当者がロール変更や退職をしても動作し続ける必要があります。
このようなケースでは、Personal API token よりもサービスアカウントの方が適しています。
-
Service Account Creator 権限を持ち、かつすでに Cloud Analytics User 権限を持っているユーザーが、
finops-report-exportという名前のサービスアカウントを作成し、(例: Nightly export of allocation report to internal warehouse) のような短い説明を追加します。 -
Permissions scope では、Reports API にその権限が必要であるため、管理者は Cloud Analytics User のみをサービスアカウントに割り当てます。権限はトークン単位ではなく、サービスアカウント単位で設定されます。
-
レポートの所有者が、レポートを組織全体に対して Viewer として共有するか、ジョブが組織で利用可能な preset report を対象とします。サービスアカウントのトークンにはユーザーのメールアドレスがないため、組織全体に共有されていないプライベートレポートには 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 個まで保持できます (有効、無効、期限切れのトークンはすべてこのリミットに含まれます)。詳細は Manage service account API tokens を参照してください。
必要な権限
サービスアカウントには 2 つの権限レイヤーが関係します。詳しくは Service account and API token permissions を参照してください。
コンソールでサービスアカウントを管理する
次の権限によって、サービスアカウントおよびそのトークンを閲覧または変更できるユーザーが決まります。
サービスアカウントへアクセスし管理するには、Users Manager 権限が必要です。
| Permission | Grants access to |
|---|---|
| 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 も併せて持っていない限り、その後 サービスアカウントを編集したり、トークンを無効化または削除したりすることはできません。
これらの権限は Personal API tokens には適用されません。API へのアクセス権を持つユーザーは誰でも、自身の API トークンを独立して作成および管理できます。
サービスアカウントに割り当てられる権限
サービスアカウントを作成または編集する際、そのアカウント (およびそのトークン) に付与する API 権限を選択します (例: Cloud Analytics User)。自分のユーザーアカウントがすでに持っている権限のみを割り当てることができます。保持していない権限は Permissions scope に表示されず、サービスアカウントに付与することもできません。
各サービスアカウントには、そのワークロードに必要な最小限の権限のみを付与してください。
サービスアカウントへのアクセス
サービスアカウントを表示するには、Service Account Viewer 権限 (またはそれ以上) が必要です。
自分のサービスアカウントを表示するには:
-
DoiT コンソール にサインインし、上部のナビゲーションバーからギアアイコン () を選択してから、Users and access を選択します。
-
左側のメニューから Service accounts を選択します。

サービスアカウントを表示する
1 つ以上のサービスアカウントがある場合、次の情報が表示されます。
サービスアカウントが存在しない場合は、サービスアカウントの作成を促す空の状態が表示されます。
- Service accounts: 組織内のサービスアカウントの合計数。
- Tokens: すべてのサービスアカウントにおける、有効期限切れではないトークンの合計数 (有効期限切れのトークンは除外)。
- Tokens expiring in next 30 days: 今後 30 日以内に期限切れとなるトークンの数。
一覧には、すべてのサービスアカウントが次の列とともに表示されます。
| Column | Description |
|---|---|
| Name | サービスアカウント名。名前を選択すると詳細ページが表示されます。60 文字を超える説明は、その上にカーソルを載せると全文が表示されます。 |
| Permissions | サービスアカウントに割り当てられている権限の数。 |
| Tokens | サービスアカウントのトークンの概要 (例: 2 active · 1 disabled)。 |
| Created | サービスアカウントの作成日と、作成したユーザーの名前。 |
サービスアカウントの詳細を表示する
サービスアカウント名を選択すると、その詳細を表示できます。サービスアカウントは、名前または権限数でフィルタできます。
サービスアカウントの詳細ページには、Overview と API tokens の 2 つのタブがあります。
Overview タブには、サービスアカウントの作成日時、作成者、およびそのサービスアカウントに割り当てられている権限が表示されます。権限はカテゴリごとにグループ化され、各グループの件数が表示されます。
サービスアカウント上のすべての API トークンは同じ権限セットを使用します。異なるスコープを付与する必要がある場合は、別のサービスアカウントを作成してください。
サービスアカウントを作成する
サービスアカウントを作成するには、Service Account Creator 権限が必要です。
新しいサービスアカウントを作成するには:
-
Service accounts ページで、Create service account を選択します。
-
サービスアカウントの一意の名前を入力します。名前は組織内で一意である必要があります。
-
任意で説明を追加します (最大 280 文字)。
-
Permissions scope で、サービスアカウントに割り当てる 1 つ以上の権限を選択します。自分のユーザーアカウントがすでに持っている権限のみが利用可能です。
-
Create service account を選択します。

自分のユーザーアカウントがまだ持っていない権限をサービスアカウントに割り当てることはできません。自動化に必要な範囲の中で、最も狭い権限セットを選択してください。
サービスアカウントを編集する
サービスアカウントを編集するには、Service Account Manager 権限が必要です。
サービスアカウントの名前、説明、権限はいつでも更新できます。
-
Service accounts 一覧から、編集したいサービスアカウントを選択します。
-
Edit service account を選択します。
-
必要に応じて、Name、Description、または権限を更新します。
-
名前は組織内のすべてのサービスアカウントで一意である必要があります。
-
Permissions scope では、ご自身のユーザーアカウントに既に付与されている権限のみを追加または削除できます。
-
変更を行った後にのみ、Save ボタンが有効になります。
-
-
Save を選択します。
権限を変更した場合、更新が適用される前に確認ダイアログが表示されます。ダイアログには、追加される権限と削除される権限が表示されるため、確定前に変更内容を確認できます。
サービスアカウントから権限を削除すると、即時に反映されます。サービスアカウントに関連付けられている API トークンは、削除された権限を必要とするリクエストに対して 403 エラーを返すようになります。

