Интерфейс политик доступа COS против terraform

#terraform #ibm-cloud #ibm-iam #terraform-provider-ibm

#terraform #ibm-cloud #ibm-iam #terraform-поставщик -ibm

Вопрос:

В интерфейсе я могу перейти к политике доступа к корзине COS и легко назначить политику, которая затем выглядит более или менее как:

 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?

Спасибо

Комментарии:

1. Какое сообщение об ошибке вы получаете?

2. Ошибок нет, результирующая политика «неправильная» (не работает), в то время как политика через iface работает нормально.

3. Не могли бы вы предоставить фактическую рабочую политику, отредактированную так же, как опубликованная вами нерабочая политика.

4. Он существует с самого начала. В начале сообщения приведена рабочая политика, созданная через веб-интерфейс, вторая — нерабочая через TF.

5. В примере рабочей политики недостаточно информации для сравнения. В качестве альтернативы, вы пытались импортировать существующую рабочую политику в состояние Terraform? Определение в файле состояния, а также сведения о выходных данных плана могут помочь вам понять, как определить его как ресурс.

Ответ №1:

Вы можете добиться этого, аналогично этому примеру политики обслуживания, используя атрибуты.

Я создал политику через пользовательский интерфейс для облачного хранилища объектов и указал, что политика должна содержать имя корзины. Затем я использовал:

 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"
    }
  }
}