Механизм приложений – Ограничьте развертывание определенной службой

# #google-cloud-platform #google-cloud-iam

Вопрос:

У нас есть две службы, работающие на движке приложений Google.

Услуги

Мы хотели бы ограничить развертывание только определенными пользователями для целевого объекта по умолчанию (prod), но разрешить любому разработчику развертываться в целевом объекте разработки.

Не могу понять условия IAM для этого.

App engine, похоже, не является официальным типом ресурсов здесь https://cloud.google.com/iam/docs/conditions-resource-attributes#resource-name

и это согласуется с раскрывающимся списком фильтр обслуживания

выпадающий

Я пробовал использовать имя, которое получил от gcloud app services describe dev :

 resource.name == 'apps/my-project/services/dev'
 

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

Есть ли способ ограничить это, как указано выше?

Ответ №1:

Разрешения App Engine предоставляются на уровне проекта и не могут быть отфильтрованы для каждой отдельной службы приложения.

Существует открытый запрос на функцию https://issuetracker.google.com/115904598 чтобы разрешить конкретные развертывания версий, которые я рекомендую вам отмечать звездочкой и следить за ними.

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

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

1. ЛОЛ! К несчастью. Запросы функций не имеют ни ETA, ни гарантии реализации. Теоретически команды разработчиков действуют в соответствии с запросами на функции, учитывая количество звезд и взаимодействий, заданных в конкретной теме, как описано здесь . Я надеюсь, что этот конкретный запрос на функцию получит поддержку.

Ответ №2:

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

Два варианта, которые я могу предложить:

  1. Создайте другой проект GCP для prod. Если вы используете интерфейс командной строки, разработчики prod могут просто изменить проект GCP и развернуть его.
  2. Используйте CICD с облачной сборкой и предоставляйте доступ к слиянию в ветку prod только разработчикам prod. Ни одному разработчику в этом случае не потребуется доступ к вашим проектам GCP.

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

1. Не могли бы вы пояснить, что вы подразумеваете под users can create custom services per GCP account этим ?

2. Если вы можете развернуть, вы можете создать службу под названием «тест», а другой может создать службу под названием «тест2». Имеет меньше смысла контролировать доступ для каждой службы и больше ограничивать возможность развертывания в целом.

3. Хотя в этом-то и весь вопрос

4. И мой ответ был таков: это невозможно.