Разрешить общедоступное чтение для корзины 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.


person yungbonesvillain    schedule 25.10.2016    source источник


Ответы (6)


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

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

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

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

person Travis Hobrla    schedule 25.10.2016
comment
Спасибо. А как насчет ограничения домена? - person Jordan Arseno; 08.10.2017
comment
Вы можете использовать домены: см. Справку gsutil acl ch. В частности, см. Раздел, в котором говорится: Группы также могут быть указаны как полный домен, например -g my-company.com:r - person Travis Hobrla; 10.10.2017

Вы также можете сделать это из консоли.
https://console.cloud.google.com/storage/
Выберите «Изменить права доступа к сегменту»:
Введите всех пользователей в параметр «Добавить участников» и «Просмотр объектов хранилища» в качестве роли. Затем перейдите к Выберите роль и установите для Storage и Storage Object Legacy значение Storage Object View.

Доступ к корзине GCS

person adam shamsudeen    schedule 13.04.2018
comment
да, Христос! В нем говорилось, что используется единое разрешение и что ведро публично, но не работает. Пришлось добавить allUsers и дать варианты просмотра - person CpILL; 20.04.2020

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

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

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

gsutil iam ch allUsers:objectViewer gs://bucket-name
person Jacob    schedule 07.07.2018
comment
Есть ли преимущество в использовании IAM вместо списков контроля доступа? Я пока не знаком с их различиями. - person akauppi; 25.11.2018
comment
Кроме того, поскольку Google рекомендует этот подход, вы можете предоставить ссылку: cloud.google.com/storage/docs/access-control/ - person akauppi; 25.11.2018

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

    • Select User for the Entity.
    • В поле Имя введите allUsers.
    • Выберите Reader для доступа.
    • Щелкните Сохранить.
  8. После публикации в открытом доступе в столбце общего доступа появляется значок ссылки. Вы можете щелкнуть этот значок, чтобы получить URL-адрес объекта.

Инструкция по общедоступным данным из Google Cloud Docs

person Digimix    schedule 28.11.2018

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

person haxpanel    schedule 01.05.2019

Если вы хотите разрешить доступ к определенному сегменту с определенной «папкой / содержимым», вы должны указать в команде: gsutil iam -r ch allUsers:legacyObjectReader gs://your-bucket/your-files/**

  • Но это для конкретного контента внутри сегмента, который не является общедоступным!
person JohnBegood    schedule 29.10.2019