Skip to content
Latchkey

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とキーレス認証で保護します。

関連ガイド