Какие роли необходимы для загрузки объекта из Google Storage Bucket

Я создал учетную запись службы и присвоил ей только роль Storage Object Viewer. Я хотел бы использовать эту учетную запись службы для загрузки объектов из корзины с помощью API Python.

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

Я использую следующий код, чтобы попытаться загрузить объект

from google.cloud import storage
storage_client = storage.Client()
bucket = storage_client.get_bucket(BUCKET_NAME)

Но при вызове get_bucket я получаю следующую ошибку

google.api_core.exceptions.Forbidden: 
403 GET https://storage.googleapis.com/storage/v1/b/samplereadbucket?projection=noAcl: 
[email protected] does not have storage.buckets.get 
access to samplereadbucket.

Какой минимальный набор ролей мне нужно установить, чтобы учетная запись службы имела storage.buckets.get доступ, если не Storage Object Viewer?


person Increasingly Idiotic    schedule 13.11.2019    source источник


Ответы (1)


Средство просмотра объектов хранилища (roles/storage.objectViewer) включает только следующие разрешения:

resourcemanager.projects.get
resourcemanager.projects.list
storage.objects.get
storage.objects.list

Для сегментов вам понадобится роль, такая как Storage Legacy Bucket Reader (roles/storage.legacyBucketReader) (или создайте особая роль). Это дает вам:

storage.buckets.get
storage.objects.list

Вы всегда можете использовать вкладку IAM & Admin> Roles в облачной консоли, чтобы найдите конкретные разрешения, чтобы увидеть, какие роли в настоящее время предоставляют эти разрешения.

person robsiemb    schedule 13.11.2019
comment
Слово Legacy сбило меня с толку, и я подумал, что мне не следует использовать эти роли. Хотя это кажется правильным ответом! - person Increasingly Idiotic; 13.11.2019
comment
Вы также можете просто создать собственную роль. - person robsiemb; 13.11.2019
comment
Вот также ссылка на документацию о роли хранилища для всех, кто в будущем: cloud .google.com / iam / docs /standing-roles # storage-roles. - person Increasingly Idiotic; 13.11.2019
comment
Я также подумал, что мне не нужно / не нужно создавать настраиваемую роль, чтобы делать что-то столь же обычное, как загрузка объекта из корзины. = P - person Increasingly Idiotic; 13.11.2019
comment
Конечно, я полагаю, вы также можете использовать роль администратора хранилища, но это тоже кажется неправильным :) - person robsiemb; 13.11.2019
comment
Да, предоставление вашей учетной записи службы роли администратора хранилища также подойдет. - person Deniss Tsokarev; 14.11.2019