GCP-terraform删除了所有策略,我该如何还原

问题描述

我按照地形跑。我在使用google_storage_bucket_iam_policy而不是google_storage_bucket_iam_binding时犯了一个错误,因此它没有添加新策略,而是替换了所有现有策略。

data "google_iam_policy" "deploy-script-admin-policy" {
  binding {
    role = "roles/storage.objectAdmin"
    members = [
      "serviceAccount:${google_service_account.deploy-script.email}",]
  }
}
# deploy script can read/write to a bucket
resource "google_storage_bucket_iam_policy" "policy" {
  bucket      = "my-bucket"
  policy_data = data.google_iam_policy.deploy-script-admin-policy.policy_data
}

现在我无法运行Terraform计划,因为我无法使用自己的存储桶。我收到类似<my email> does not have storage.buckets.get access to the Google Cloud Storage bucket.,forbidden的错误消息。

我去了GCP控制台,试图删除或更新此存储桶的权限,但是由于存储桶权限不允许它,所以它也不起作用(我拥有所有者和storage.admin角色)。

如何从这种情况中恢复?如果那是唯一的选择,我不介意删除存储分区。

编辑: 我不知道发生了什么,但也许GCP可以从这种情况中自动恢复。出于某种原因,过了一会儿,我能够再次从控制台编辑存储桶...

解决方法

如果您拥有项目 IAM 管理员或其他使您能够编辑 IAM 权限的角色,您可以在您的 terraform destroy 资源上运行 google_storage_bucket_iam_policy.policy,这应该会将权限恢复为从项目继承的权限IAM 权限。这意味着如果您拥有 Storage Admin 权限,您应该能够再次修改存储桶权限。

,

您不能还原所做的更改并恢复对相关存储分区的访问权限。

[google_storage_bucket_iam_policy][1]是权威性的(如@Prashant所述),意味着首先删除该对象的所有策略,然后创建您定义的策略。

如果您的定义中没有适当的访问权限,并且您被锁定,那么唯一的解决方案就是删除存储桶。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...