Как мне установить разрешение IAM, чтобы разрешить пользователям читать объекты в хранилище Google через JSON

#google-api #google-cloud-storage #google-api-python-client

#google-api #google-облачное хранилище #google-api-python-client

Вопрос:

У меня есть простое веб-приложение на Python, которое создает проект Google Cloud от имени пользователя. Затем он создает хранилище и, наконец, загружает файл CSV в хранилище через JSON API.

Моя проблема в том, что после завершения задания пользователь не может получить доступ к файлу CSV или даже загрузить свои собственные файлы в хранилище. Корзина.

Я думаю, что мне нужно установить разрешения IAM, но, читая документацию, я не могу понять, как это сделать.

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

1. Можете ли вы описать, может ли пользователь получить доступ только к своему файлу или ко всему файлу? Есть ли у пользователя учетная запись Google? Наконец, регистрируете ли вы (например, в базе данных) файл, загруженный пользователем?

Ответ №1:

Чтобы иметь возможность читать определенный файл, вы можете установить роль на уровне объекта с помощью вызова ObjectAccessControls insert API:

 POST https://storage.googleapis.com/storage/v1/b/__bucket__/o/__object__/acl
  

Замена __bucket__ на имя корзины и __object__ на имя файла. И отправить свойства тела следующего запроса:

 entity user-email@email.com
role   READER
  

Если вы хотите разрешить пользователю перезаписывать файл, измените role свойство на OWNER .

Если вы хотите разрешить пользователю загружать совершенно другой файл в свою корзину, вам нужно будет установить role значение WRITER на уровне корзины с помощью вызова BucketAccessControls insert API, однако это может быть нежелательно, поскольку это позволит предоставить пользователю следующие разрешения:

Читатели могут получить корзину, хотя свойство acl не будет возвращено, и перечислить объекты корзины. Авторы — это читатели, и они могут вставлять объекты в корзину и удалять объекты корзины.