Разрешить публичный доступ для чтения в ведро 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
- Откройте браузер Cloud Storage в консоли Google Cloud Platform.
- В списке сегментов щелкните по имени сегмента, содержащего объект, который вы хотите сделать общедоступным, и перейдите к объекту, если он находится в подкаталоге.
- Нажмите раскрывающееся меню, связанное с объектом, который вы хотите сделать общедоступным.
- Раскрывающееся меню отображается в виде трех вертикальных точек справа от строки объекта.
- Выберите Редактировать разрешения в раскрывающемся меню.
- В появившемся наложении нажмите кнопку + Добавить элемент.
-
Добавить разрешение для всех пользователей.
- Выберите пользователя для сущности.
- Введите всех пользователей для имени.
- Выберите Reader для доступа.
- Нажмите Сохранить.
-
После общего доступа в колонке общего доступа появляется значок ссылки. Вы можете нажать на этот значок, чтобы получить URL для объекта.
Инструкция по обнародованию данных из Google Cloud Docs
Ответ 5
Если вы загружаете файлы в функции makePublic()
вам нужно вызвать makePublic()
для ссылочного объекта, чтобы сделать его доступным без передачи токена.