Как предоставить доступ только к одному экземпляру пользователям в Google Compute Engine?

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

Я провел небольшое исследование и нашел два метода, как это сделать.

Сначала нужно предоставить подрядчику закрытый ключ для ssh в выбранном экземпляре.

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

Насколько я понимаю со служебными аккаунтами. Они объявляются и как ресурс, и как личность. Мне пришлось бы создать новый экземпляр под вновь созданной учетной записью службы с ограниченными определенными разрешениями.

Я провел небольшое исследование и нашел два метода, как это сделать. Во-первых ...

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

Я провел небольшое исследование и нашел два метода, как это сделать.

Сначала нужно предоставить подрядчику закрытый ключ для ssh в выбранном экземпляре.

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

Насколько я понимаю со служебными аккаунтами. Они объявляются и как ресурс, и как личность. Мне пришлось бы создать новый экземпляр под только что созданной учетной записью службы с ограниченными определенными разрешениями.

Я провел небольшое исследование и нашел два метода, как это сделать. Во-первых ...

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

Я провел небольшое исследование и нашел два метода, как это сделать.

Сначала нужно предоставить подрядчику закрытый ключ для ssh в выбранном экземпляре.

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

Насколько я понимаю со служебными аккаунтами. Они объявляются и как ресурс, и как личность. Мне пришлось бы создать новый экземпляр под вновь созданной учетной записью службы с ограниченными определенными разрешениями.

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

Я провел небольшое исследование и нашел два метода, как это сделать.

Сначала нужно предоставить подрядчику закрытый ключ для ssh в выбранном экземпляре.

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

Насколько я понимаю со служебными аккаунтами. Они объявляются и как ресурс, и как личность. Мне пришлось бы создать новый экземпляр под только что созданной учетной записью службы с ограниченными определенными разрешениями.

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

Я провел небольшое исследование и нашел два метода, как это сделать.

Сначала нужно предоставить подрядчику закрытый ключ для ssh в выбранном экземпляре.

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

Насколько я понимаю со служебными аккаунтами. Они объявляются и как ресурс, и как личность. Мне пришлось бы создать новый экземпляр под только что созданной учетной записью службы с ограниченными определенными разрешениями.

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

Насколько я понимаю, учетные записи служб. Они объявляются и как ресурс, и как личность. Мне пришлось бы создать новый экземпляр под только что созданной учетной записью службы с ограниченными определенными разрешениями.

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

Насколько я понимаю, учетные записи служб. Они объявляются и как ресурс, и как личность. Мне пришлось бы создать новый экземпляр под только что созданной учетной записью службы с ограниченными определенными разрешениями.

[сервисный аккаунт] >>> разрешения >>> [экземпляры]

[пользователь] >>> роль пользователя учетной записи службы >>> [учетная запись службы]

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

0
задан 25 February 2018 в 23:10
1 ответ

Использование закрытого ключа, как вы предложили, было бы идеальным решением здесь , поскольку это единственный способ убедиться, что у вашего подрядчика не будет доступа к другим экземплярам или информации о статусе вашего проекта. Тем не менее, то, что вы описали (SSH в машину, использующую учетную запись службы) , можно сделать , и, действительно, учетные записи служб являются одновременно удостоверением и ресурсом .

Если вы предоставьте пользователю роль Пользователь учетной записи службы для учетной записи службы с необходимыми разрешениями на SSH на машине, что позволит пользователю делать именно это. Однако имейте в виду, что минимальный набор разрешений, необходимых для этой учетной записи службы для того, чтобы это работало, позволит учетной записи службы (и, следовательно, пользователю тоже) подключаться по SSH к любому экземпляру Compute. Уже одно это является индикатором того, что это не даст вам той детализации, которую вы, кажется, хотите.

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

  1. Создайте учетную запись службы и предоставьте ей роль Пользователь учетной записи службы и 4 детальных разрешения, compute.instances.get , compute.instances.setMetadata , compute.projects.get и compute.zoneOperations.get (вам, вероятно, следует создать пользовательскую роль для этих разрешений). Это можно сделать в разделе IAM и администратора консоли ;
  2. . Предоставьте самому пользователю какие-то разрешения на проект через консоль или gcloud . Я бы предложил назначить роль Compute Viewer ;
  3. Попросить пользователя установить Google Cloud SDK и инициализировать его своими учетными данными;
  4. Попросите пользователя SSH войти в соответствующий экземпляр, используя gcloud compute ssh SERVICE_ACCOUNT_USERNAME @ INSTANCE_IP_OR_HOSTNAME --zone ZONE_OF_INSTANCE .

Я бы посоветовал подключить пользователя SSH к целевой машине через Cloud Shell, так как это позволит избежать выполнения шага 3 в целом . Не забывайте также о правилах брандмауэра, поскольку общедоступные IP-адреса, назначенные Cloud Shell, похоже, не попадают в общие диапазоны общедоступных IP-адресов Google.

Не удивляйтесь, если вы увидите сообщение вроде Обновление метаданные ssh проекта ... не удалось . Этого и следовало ожидать, поскольку учетная запись службы имеет права только на добавление ключей SSH в метаданные экземпляров.

0
ответ дан 5 December 2019 в 06:25

Теги

Похожие вопросы