Запись в корзину GCS в Python с разрешениями storage.objectAdmin - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь определить минимальный набор разрешений, который необходим учетной записи службы для записи файла в корзину GCS.Я думал, что мог бы использовать storage.objectAdmin, но с использованием примера кода, предоставленного для Python SDK, он завершается с ошибкой: my-service-account@my-project.googleapis.com does not have storage.buckets.get access to my-bucket

client = _get_storage_client()
bucket = client.bucket(current_app.config['CLOUD_STORAGE_BUCKET'])
blob = bucket.blob(filename)

blob.upload_from_string(
    file_stream,
    content_type=content_type)

Это потому, что вызов client.bucket фактически читает метаданные изведро, которое не предоставляет storage.objectAdmin.Это исправляет себя, когда я использую разрешения storage.admin, но это также позволяет учетной записи удалять всю корзину, чего я не хочу.Добавление storage.legacyBucketReader также работает, но тогда я использую унаследованную роль, которую я не уверен, что мне следует делать больше.

Какова лучшая практика здесь?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Разрешения облачного хранилища регулируются как Cloud IAM , так и ACL .По сути, вы можете использовать и то и другое, чтобы служебная учетная запись могла записывать данные в корзину.Это делается путем установки разрешения WRITER для нужной учетной записи службы, например:

gsutil acl ch -u my-service-account:W gs://my-bucket

После применения этого изменения в ACL я смог загрузить данные в корзину GCS.Вы можете найти больше примеров здесь .

0 голосов
/ 18 декабря 2018

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

  • roles/storage.objectCreator
  • Viewer

Это позволяет грантополучателю выполнять следующие действия:

  • Может создавать новые объекты.
  • Может отображать списки сегментов
  • Также может просматривать метаданные сегментов, за исключением ACL,при перечислении.

Подробнее здесь: https://cloud.google.com/storage/docs/access-control/iam-roles

...