在界面中,我可以转到COS Bucket访问策略并轻松分配策略,该策略看起来或多或少类似于:
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实现类似于第一个策略的东西?
谢谢
答案 0 :(得分:0)
您可以实现与示例Service Policy by using attributes类似的方式。
我通过UI为Cloud Object Storage创建了一个策略,并指定了该策略以包含存储桶名称。然后我用了:
ibmcloud iam access-group-policy GROUP_NAME POLICY_ID --output JSON
以更好地了解该政策。
由此,我创建了此示例地形片段并对其进行了测试。它正在创建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"
}
}
}