Google CloudのSecret Managerに新たなシークレットを作成、もしくはバージョンの作成を行いたい。ただし、シークレットが削除されたり、バージョンの中身を見られるのは防ぎたい。
roles/secretmanager.admin
は、当然ながら強すぎる。
roles/secretmanager.secretVersionAdder
は、バージョンの追加しかできない。API経由でバージョン追加のみを行うには、適している。Web UIから行うには、secretsのlist, getなどがないので不十分。加えて、シークレットの新規作成はできない。
では、カスタムロールを作って対応する。
最小権限を作る
Web UIで以下のみができるようにしたい。
- シークレットの作成
- バージョンの作成
つまり、以下のようなことはできない状態にする。
- シークレットの削除
- シークレットの権限付与
- バージョンの有効化
- バージョンの無効化
- バージョンの削除
- バージョンのアクセス
resource "google_project_iam_custom_role" "secret_writer" {
title = "シークレット書き込み"
description = "シークレットとバージョンの作成・更新を行うロール"
role_id = "secret_writer"
permissions = [
"secretmanager.locations.get",
"secretmanager.locations.list",
"secretmanager.secrets.create",
"secretmanager.secrets.createTagBinding",
"secretmanager.secrets.get",
"secretmanager.secrets.getIamPolicy",
"secretmanager.secrets.list",
"secretmanager.secrets.listEffectiveTags",
"secretmanager.secrets.listTagBindings",
"secretmanager.secrets.update",
"secretmanager.versions.add",
"secretmanager.versions.get",
"secretmanager.versions.list",
]
}