0

在界面中,我可以转到 COS Bucket Access Policies 并轻松分配策略,然后看起来或多或少类似于:

Cloud Object Storage service
serviceInstance string equals foo-bar, resource string equals foo-bar-pcaps, resourceType string equals bucket

我正在努力寻找一种通过 terraform 执行相同操作的方法,因为每当我尝试使用正确的 TF 代码时,例如:

resource "ibm_iam_service_policy" "policy_pcaps" {
  iam_service_id = ibm_iam_service_id.serviceID_pcaps.id
  roles        = ["Writer"]
  resources {
    service = "cloud-object-storage"
    resource = ibm_cos_bucket.pcaps.id
  }
}

我结束了

Cloud Object Storage service
resource string equals crn:v1:bluemix:public:cloud-object-storage:global:a/27beaaea79a<redacted>34dd871b:8b124bc6-147c-47ba-bd47-<redacted>:bucket:foo-bar-pcaps:meta:rl:us-east

问题是Writer此处所需的策略无法与该策略详细信息一起正常工作。

如何使用 Terraform 实现类似于第一个策略的功能?

谢谢

4

1 回答 1

0

您可以通过使用属性来实现这一点,类似于此示例服务策略。

我通过 UI 为 Cloud Object Storage 创建了一个策略,并指定了包含存储桶名称的策略。然后我用:

ibmcloud iam access-group-policy GROUP_NAME POLICY_ID --output JSON

以便更好地了解政策。

有了这个,我创建了这个示例 terraform 片段并对其进行了测试。它正在创建 IAM 访问组 + 策略:

resource "ibm_iam_access_group" "accgrp_cos" {
  name = "test_cos"
}

resource "ibm_iam_access_group_policy" "policy" {
  access_group_id = ibm_iam_access_group.accgrp_cos.id
  roles        = ["Writer"]

  resources {
    service =   "cloud-object-storage"

    attributes = {

    resourceType = "bucket"
    resource = "tf-test-cos"
    }
  }
}
于 2020-10-22T12:27:13.603 回答