【问题标题】:GCP - terraform removed all policies, how can I revertGCP - terraform 删除了所有政策,我该如何恢复
【发布时间】:2020-09-16 00:40:30
【问题描述】:

我按照 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 有某种方式可以从这种情况中自动恢复。由于某种原因,我能够在一段时间后再次从控制台编辑存储桶......

【问题讨论】:

  • 你不能。因为这个操作是权威操作。因此建议保存当前配置,然后在其之上构建

标签: google-cloud-platform terraform google-cloud-iam


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您无法恢复所做的更改并恢复您对相关存储桶的访问权限。

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

    如果您的定义没有包含正确的访问权限并且您自己被锁定,那么唯一的解决方案就是删除存储桶。

    【讨论】:

    • hm 正如我在原始帖子中所写的,我什至无法删除。然后由于某种原因,我的更改在 30 分钟后被恢复,我现在可以再次编辑它们。
    猜你喜欢
    • 1970-01-01
    • 2020-12-08
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 2021-10-03
    相关资源
    最近更新 更多