Настройка IAM в Google Cloud Platform для обеспечения доступа RO уровня проекта к сегментам
Я хочу предоставить служебной учетной записи доступ только для чтения ко всем сегментам в моем проекте. Какова лучшая практика для этого?
Ответы здесь предлагают один из:
- создание собственной политики IAM
- назначение роли Legacy Bucket Viewer для каждого сегмента
- использование ACL для разрешения
bucket.get
доступ
Ничто из этого не кажется мне идеальным, потому что:
- Предоставление доступа только для чтения кажется слишком распространенной необходимостью требовать специальной политики
- Если в названии указать "Legacy", создается впечатление, что это разрешение будет удалено относительно скоро, и любые новые сегменты потребуют модификации.
- Google рекомендует IAM через ACL, и любые новые сегменты потребуют модификации
Есть ли способ избежать bucket.get
требование и все еще доступ к объектам в ведре? Или есть другой способ предоставления доступа, о котором я не знаю?
1 ответ
Самая близкая предварительно созданная роль - Просмотрщик объектов. Это позволяет перечислять и читать объекты. Он не включает в себя разрешение storage.buckets.get, но это обычно не требуется - работа с метаданными сегмента действительно административная функция. Он также не включает storage.buckets.list, который немного более необходим, но все еще не является частью обычных шаблонов использования для GCS - как правило, при разработке приложения у вас есть фиксированное количество сегментов для определенных целей, поэтому листинг не полезно.
Если вы действительно хотите предоставить список сегментов учетной записи службы и получить разрешение, вам придется создать собственную роль в проекте. Это довольно легко, вы можете сделать это с:
gcloud iam roles create StorageViewerLister --project=$YOUR_POJECT --permissions=storage.objects.get,storage.objects.list,storage.buckets.get,storage.buckets.list
gcloud projects add-iam-policy-binding $YOUR_PROJECT --member=$YOUR_SERVICE_ACCOUNT --role=StorageViewerLister