Совместное использование пользовательских изображений в организации в GCP - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь поделиться пользовательским изображением в GCP между проектами в организации.

1) Проект A

2) Проект B

Все мои пользовательские изображения в проекте A.

Я хотел бы поделиться изображениями проекта A с проектом B

В соответствии с документацией я выполнил следующую команду, чтобы поделиться изображениями с проектом B

gcloud projects add-iam-policy-binding projecta --member serviceAccount:xxxxxx@cloudservices.gserviceaccount.com --role roles/compute.imageUser

Я использую Terraform для предоставления экземпляров. В terraform я указываю взять изображение из проекта A.

  boot_disk {
    initialize_params {
      image = "projects/project_A/global/images/custom_image"
    }
  }

Я получаю сообщение об ошибке ниже

Error: Error creating instance: googleapi: Error 403: Required 'compute.images.useReadOnly' permission for 'projects/project_A/global/images/custom_image', forbidden

Может кто-нибудь, пожалуйста, помогите мне ....

Ответы [ 3 ]

0 голосов
/ 23 апреля 2020

Я предполагаю, что документация предназначена для диспетчера развертывания, а не для Terraform, команда, которую вы запускаете, предоставила роль учетной записи службы xxxxxx@cloudservices.gserviceaccount.com, но Terraform по умолчанию не использует эту учетную запись.

Вам необходимо сделать конечно, у Terraform достаточно разрешений. Вы можете предоставить xxxxxx@cloudservices.gserviceaccount.com Terraform или создать новую учетную запись для Terraform и предоставить ей roles/compute.imageUser.

0 голосов
/ 23 апреля 2020

Вы только что сделали первый шаг, который предоставляет сервисной учетной записи надлежащие разрешения для обмена изображениями в вашей организации . Для этого требуется роль roles/compute.imageUser.

Ваша конфигурация Terraform также выглядит нормально (вы должны убедиться, что self_link к вашему изображению верен (обратитесь к этой документации , чтобы убедиться, что Значение image в конфигурации Terraform в порядке).

Также убедитесь, что вы предоставляете Terraform правильные учетные данные учетной записи службы, как указано в ответе @Ken Hung.

0 голосов
/ 23 апреля 2020

Вы предоставили разрешение учетной записи службы xxxxxx@cloudservices.gserviceaccount.com

Если вы используете G Suite, вы можете предоставить разрешение своему домену.

Рекомендация: создайте группу, добавьте каждого пользователя IAM в группа, и предоставьте группе разрешение.

Разумеется, вы можете предоставить разрешение каждому пользователю IAM.

...