Разрешить публичный доступ для чтения в ведро GCS?

Я пытаюсь разрешить анонимный (или только из моего домена приложения) доступ для чтения файлов в моем ковше.

При попытке прочитать файлы я получаю

`` `

<Error>
    <Code>AccessDenied</Code>
    <Message>Access denied.</Message>
    <Details>
        Anonymous users does not have storage.objects.get access to object.
    </Details>
</Error>

`` `

Я также попытался добавить домен с диалоговым окном разрешений по умолчанию объекта в облачной консоли Google. что дает мне ошибку "Одно из ваших прав недействительно. Убедитесь, что вы вводите авторизованный идентификатор или адрес электронной почты для групп и пользователей и домен для доменов"

Я также рассмотрел создание ACL для ведра public-read. Моя единственная проблема заключается в том, что он удаляет мое владение над ведром. Мне нужно иметь это право собственности, так как я хочу разрешить загрузку с определенного идентификатора доступа Google.

Ответ 1

Вы можете использовать gsutil, чтобы сделать новые объекты, созданные в ведре, общедоступными, без удаления вашего права собственности. Чтобы сделать новые объекты, созданные в ведре, общедоступными:

gsutil defacl ch -u AllUsers:R gs://yourbucket

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

gsutil acl ch -u AllUsers:R gs://yourbucket/**

Ответ 2

Вы также можете сделать это с консоли.
https://console.cloud.google.com/storage/
Выберите редактировать разрешения на ведро:
Введите "allUsers" в параметре "Добавить элементы" и "Средство просмотра объекта хранилища" в качестве роли. Затем перейдите к "Выберите роль" и установите для "Хранилища" и "Устаревшего объекта хранилища" значение "Вид объекта хранилища"

GCS bucket access

Ответ 3

Использование ролей IAM, чтобы сделать файлы читаемыми, и список блоков:

gsutil iam ch allUsers:legacyObjectReader gs://bucket-name

Чтобы сделать файлы читаемыми и разрешить листинг:

gsutil iam ch allUsers:objectViewer gs://bucket-name

Ответ 4

  1. Откройте браузер Cloud Storage в консоли Google Cloud Platform.
  2. В списке сегментов щелкните по имени сегмента, содержащего объект, который вы хотите сделать общедоступным, и перейдите к объекту, если он находится в подкаталоге.
  3. Нажмите раскрывающееся меню, связанное с объектом, который вы хотите сделать общедоступным.
  4. Раскрывающееся меню отображается в виде трех вертикальных точек справа от строки объекта.
  5. Выберите Редактировать разрешения в раскрывающемся меню.
  6. В появившемся наложении нажмите кнопку + Добавить элемент.
  7. Добавить разрешение для всех пользователей.

    • Выберите пользователя для сущности.
    • Введите всех пользователей для имени.
    • Выберите Reader для доступа.
    • Нажмите Сохранить.
  8. После общего доступа в колонке общего доступа появляется значок ссылки. Вы можете нажать на этот значок, чтобы получить URL для объекта.

Инструкция по обнародованию данных из Google Cloud Docs

Ответ 5

Если вы загружаете файлы в функции makePublic() вам нужно вызвать makePublic() для ссылочного объекта, чтобы сделать его доступным без передачи токена.