Service Accountとは?
service accountとは、人ではなくシステムに属するアイデンティティで、CIパイプラインがdeployやAPI呼び出しの際に認証するアカウントです。
自動化にはアイデンティティが必要です。実在の人物の認証情報を使い回すのはリスクが高く、その人が退職すると壊れます。service accountは、ワークロード専用の人間ではないアイデンティティで、そのワークロードが行う内容にスコープされた独自の権限と認証情報を持ちます。
service accountとユーザーアカウント
ユーザーアカウントは人を表し、その人間に紐づいています。service accountはプログラム - CIパイプラインやdeployのjob - を表し、個人ではなくチームが所有するため、人員の変更を越えて存続します。
CIでの使い方
パイプラインはservice accountとして認証し(理想的にはOIDC経由、そうでなければキー経由)、そのアカウントの権限の範囲内で動作します。それらの権限はパイプラインの実際のニーズにスコープしましょう。
小さな例
deployパイプラインは、1つのサービスを更新し1つのsecretを読み取れる ci-deployer service accountをimpersonateします - それ以外は何もできません。パイプラインが侵害されても、攻撃者が引き継ぐのはその狭いアクセスだけで、人間の管理者のものではありません。
service accountの保護
- least privilegeを適用する - ワークロードが必要とするものだけを付与します。
- 長期間有効なキーよりキーレス認証(OIDC / federation)を優先します。
- 使用状況を監査し、キーがあれば定期的にローテーションします。
目的ごとに1つのアカウント
1つを共有するのではなく、各パイプラインやenvironmentに独自のservice accountを与えましょう。アイデンティティを分離すると、無関係なワークロードに影響を与えずにアクセスをスコープ、監査、失効しやすくなります。
重要なポイント
- service accountは自動化が使う人間ではないアイデンティティです。
- 個人ではなくチームが所有するため、人員の変更を越えて存続します。
- least privilegeとキーレス認証で保護します。
関連ガイド
What Is Least Privilege?Least privilege means giving each CI job only the permissions it needs and nothing more. Learn how to scope t…
What Is Workload Identity Federation?Workload identity federation lets external workloads like CI assume a cloud identity using their own tokens,…
What Is OIDC in CI?OIDC lets CI authenticate to cloud providers with short-lived tokens instead of stored secrets. Learn how the…