Ошибка развертывания роли IAM в Google Deployment Manager - PullRequest
1 голос
/ 28 мая 2019

Я пытаюсь назначить пользовательскую роль IAM пользователю (учетная запись Google) в проекте GCP через Deployment Manager, но получил код ошибки 403.Я следовал примеру, представленному в репозитории Google Cloud Platform: https://github.com/GoogleCloudPlatform/deploymentmanager-samples/tree/master/community/cloud-foundation/templates/iam_member

По сути, я создал файл конфигурации YAML со следующим содержанием:

  - path: ../iam_member.py
    name: iam_member.py

resources:
  - name: iam-member-oval-unity-test-0
    type: iam_member.py
    properties:
      projectId: oval-unity-88908
      type: string
      roles:
        - role: roles/GARawDataViewer
          members:
            - user:<USER_EMAIL>

GARawDataViewer - это пользовательская роль, созданная впроект oval-unity-88908 и является значением адреса электронной почты пользователя, которому я пытаюсь назначить пользовательскую роль IAM.

Наконец, я развернул выполнение следующей команды:

gcloud deployment-manager deployments create deployment-oval-unity-member-test --config examples/oval_unity_member.yaml

После запуска менеджера развертывания gcloud я получил следующее сообщение об ошибке:

- code: CONDITION_NOT_MET
  location: /deployments/deployment-oval-unity-member-test/resources/get-iam-policy-iam-member-oval-unity-test-0-0-0->$.properties->$.policy
  message: |-
    InputMapping for field [policy] for method [setIamPolicy] could not be set from input, mapping was: [$.gcpIamMemberBinding($.intent, $.inputs.policy.response, $.resource.properties)], and evaluation context was:
    {
      "deployment" : {
        "id" : 4858392305054927640,
        "name" : "deployment-oval-unity-member-test"
      },
      "extensions" : {
        "EnableAdditionalJsonPathFunctions" : true,
        "EnableGoogleTypeProviderFunctionsExperiment" : true
      },
      "inputs" : {
        "policy" : {
          "error" : {
            "code" : "403",
            "message" : "{\"code\":403,\"message\":\"The caller does not have permission\",\"status\":\"PERMISSION_DENIED\",\"statusMessage\":\"Forbidden\",\"requestPath\":\"https://cloudresourcemanager.googleapis.com/v1/projects/oval-unity-88908:getIamPolicy\",\"httpMethod\":\"POST\"}"
          }
        }
      },
      "intent" : "CREATE",
      "matches" : [ ],
      "project" : "dm-creation-project-0",
      "requestId" : "f3c7f0c4-1ff7-3e26-a060-b0adc068866d",
      "resource" : {
        "name" : "get-iam-policy-iam-member-oval-unity-test-0-0-0",
        "previous" : { },
        "properties" : {
          "member" : "<USER_EMAIL_ADDRESS!>",
          "resource" : "oval-unity-88908",
          "role" : "roles/GARawDataViewer"
        },
        "self" : { }
      }
    }
    Error was:
    Parameter for gcpIamMemberBinding at position 1 is not of type map, value was [null]

Интересно то, что мне удалось успешно развернуть, назначив предопределенную роль, такую ​​как «редактор»: роли / редактор,но он не может использовать пользовательскую роль.

Я даже пытался использовать полный путь к пользовательской роли: projects / oval-unity-88908 / role / GARawDataViewer, но все равно выдает ту же ошибку.

У вас есть идеи, как я могу решить эту проблему?Заранее спасибо!

1 Ответ

0 голосов
/ 28 мая 2019

Возможно, проблема в том, что вы не предоставили служебной учетной записи, которая используется администратором развертывания, надлежащие права для обработки вещей IAM. Как описано здесь , вы можете решить эту проблему, выполнив следующие шаги:

  1. Перейдите на страницу IAM в консоли GCP вашего проекта.
  2. При появлении запроса выберите свой проект из списка.
  3. Найдите учетную запись службы API Google, адрес электронной почты которой имеет следующий формат: [PROJECT_NUMBER]@cloudservices.gserviceaccount.com.
  4. Предоставление учетной записи службы API роли / роли владельца

Дайте мне знать, если вам нужна дополнительная помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...