(gcloud.beta.compute.scp) Не удалось добавить ключ SSH к разрешениям метаданных экземпляра - PullRequest
0 голосов
/ 09 мая 2019

Я хотел бы получить автоматическое развертывание для виртуальной машины, которую я использую в Google Cloud, и в этой связи я пытаюсь использовать служебную учетную запись для передачи своих файлов на виртуальную машину в GCP, но, к сожалению, Я не могу понять, какими должны быть правильные разрешения.

После просмотра документации у меня есть служебная учетная запись с такими разрешениями:

  • compute.instances.get
  • compute.instances.setMetadata
  • compute.projects.get
  • compute.projects.setCommonInstanceMetadata

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

+ ./google-cloud-sdk/bin/gcloud auth activate-service-account --key-file=./service-account.json
Activated service account credentials for: [scp-test@my-project.iam.gserviceaccount.com]
+ ./google-cloud-sdk/bin/gcloud beta compute scp hello.txt scp-test:c:/hello.txt --quiet --project=my-project --ssh-key-file=./.ssh/key --zone=us-east4-c
WARNING: The public SSH key file for gcloud does not exist.
WARNING: The private SSH key file for gcloud does not exist.
WARNING: You do not have an SSH key for gcloud.
WARNING: SSH keygen will be executed to generate a key.
Generating public/private rsa key pair.
Your identification has been saved in /Users/mac-user/Downloads/scp-test/.ssh/key.
Your public key has been saved in /Users/mac-user/Downloads/scp-test/.ssh/key.pub.
The key fingerprint is:
{OMMITED}
The key's randomart image is:
{OMMITED}
External IP address was not found; defaulting to using IAP tunneling.
Updating project ssh metadata...failed.
Updating instance ssh metadata...failed.
ERROR: (gcloud.beta.compute.scp) Could not add SSH key to instance metadata:
 - The user does not have access to service account '{OMMITED}-compute@developer.gserviceaccount.com'.  User: 'scp-test@my-project.iam.gserviceaccount.com'.  Ask a project owner to grant you the iam.serviceAccountUser role on the service account

Предоставление моему пользователю scp-теста роли iam.serviceAccountUser работает, но это кажется плохой практикой, поскольку это затем позволяет моему пользователю scp-теста выдавать себя за учетную запись по умолчанию ('{OMMITED enj-compute@developer.gserviceaccount. com '.), который, кажется, дает ему полный доступ ко всему.

Как мне предоставить ему только те разрешения, которые ему необходимы для SCP?

1 Ответ

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

Чтобы использовать SSH / SCP, вам необходимы права администратора экземпляра для Compute Engine.

Сервисная учетная запись означает учетную запись члена службы IAM, для которой gcloud настроен для использования: scp-test@my-project.iam.gserviceaccount.com

Вынеобходимо предоставить учетной записи службы эту роль:

roles/compute.instanceAdmin.v1

Поскольку ваш вычислительный экземпляр также настроен на использование учетной записи службы, эта роль также необходима для вашей учетной записи службы:

roles/iam.serviceAccountUser
...