Google Compute Engineのインスタンスを立ち上げるときに、特に指定をしない場合はデフォルトのサービスアカウントが紐づくことになります。
このサービスアカウントは、PROJECT_NUMBER-compute@developer.gserviceaccount.com
というアカウント名でEditor権限をもちます。
Editor権限はGCPにおいてかなり強い権限であり、IAM系以外のほぼ全ての操作を行うことができます。
そのため、多くの場合でこの権限は過剰です。
このデフォルトサービスアカウントの生成そのものを停止することはできませんが、Editor権限の付与を停止することはできます。
停止をするためにOrganization Policyを使います。
automaticIamGrantsForDefaultServiceAccounts
というPolicyをONにすることで、そのポリシーが適用されたOrganization, Folder, Projectで生成されたデフォルトサービスアカウントがEditor権限を持たなくなります。
そして、その後に必要な権限だけを付与することができます。
このポリシーをOrganizationレベルで適用する例を以下に示します。
これを適用するとそのOrganization内で新たに作成されるデフォルトサービスアカウントが権限を持たない状態になります。
なお、既に生成されているサービスアカウントの権限が剥奪されることはなく、それらの権限はそのままになります。
data "google_organization" "org" {
domain = "<Orgのドメイン名>"
}
resource "google_organization_policy" "gce-default-sa" {
org_id = data.google_organization.org.org_id
constraint = "iam.automaticIamGrantsForDefaultServiceAccounts"
boolean_policy {
enforced = true
}
}