説明
サービスアカウントに roles/editor、roles/owner、または不要な管理権限を付与すると、自動処理の誤りやアカウント侵害の影響が大きくなります。アプリケーション、バッチ処理、CI/CD には必要な権限だけを付与してください。
書き込みや管理が必要な処理もあるため、ロール名だけで不要と判断せず、実際の権限と適用範囲を確認してください。
想定される影響
- 侵害されたサービスアカウントから、多数のリソース変更やデータへのアクセスが行われるおそれがあります。
- 過剰な権限で自動処理の誤りが実行されると、被害が大きくなる場合があります。
対処方法
- 必要な権限とリソースを確認し、広範な owner・editor の代わりに適切な事前定義ロールやカスタムロールを使ってください。
- ロールの割り当てとサービスアカウントを使用できる主体を定期的に確認してください。変更後は必要な処理が成功し、不要な処理が拒否されることを検証してください。
例
var.service_account_email に実際のサービスアカウントのメールアドレスを指定してください。google_iam_policy はポリシー文書を生成するだけで、権限の適用には対象リソースへの設定が必要です。変更後のロールはオブジェクトの読み取りだけが必要な処理の例です。
変更前
hcl
data "google_iam_policy" "policy" {
binding {
role = "roles/editor"
members = [
"serviceAccount:${var.service_account_email}",
]
}
}
変更後
hcl
data "google_iam_policy" "policy" {
binding {
role = "roles/storage.objectViewer"
members = [
"serviceAccount:${var.service_account_email}",
]
}
}
補足:
- 変更前: 広範な Editor ロールのポリシー文書を生成します。実際の適用範囲と処理の要件を確認してください。
- 変更後: Storage Object Viewer に変更します。必要なバケット範囲へ適用し、他の権限付与も確認してください。