GOOGLE CLOUD 基礎

IAMと
サービスアカウント

「誰が」と「何ができる」を分け、長期キーを持ち歩かない認証設計へ。

TL;DR
  1. Principal は操作主体、Role は権限セット。
  2. 人とアプリは別のアカウントを使う。
  3. JSONキーより短期の権限借用を選ぶ。

01 IAMの文法

プリンシパル(誰が)にロール(何ができる)を結び、リソース上のポリシーとして設定する。

Google Cloud IAMの関係
ポリシーは主体と権限をリソースへ結ぶ設定。
{ "role": "roles/viewer", "members": ["user:alice@example.com"] }

02 人とワークロードは別

開発者の操作はGoogleアカウント、Cloud Runなどの実行主体はサービスアカウントにする。ワークロードごとに分ければ、権限・監査・ネットワークターゲットを追いやすい。

Googleアカウントとサービスアカウント
サービスアカウントはAWS IAMロールに近い役割。

03 JSONキーを避ける

JSONキーは保管と漏えい対応が必要な長期秘密になる。Cloud上のワークロードにはサービスアカウントを直接割り当て、ローカル作業は権限借用を優先する。

JSONキーと権限借用の比較
必要なときだけ短期の認証情報を得る。
最小権限: Owner / Editor のような広いロールを常用せず、必要な事前定義ロールから始める。

結論

  1. 主体と権限セットを分ける。
  2. 一つのワークロードに一つのサービスアカウント。
  3. 長期JSONキーを置かない。