Почему я не могу получить доступ к объекту облачного хранилища, несмотря на то, что являюсь владельцем проекта?
Я владелец проекта для конкретного проекта, в котором есть ведро с несколькими сотнями концертов объектов. Недавно я обнаружил с помощью gcloud rsync, что в моем ведре есть некоторые объекты, которые я могу list
но нет cp
или же acl get
и т.д., ни из командной строки, ни из облачной консоли.
Например:
gsutil acl get gs://$MYBUCKET/$SOMEOBJECT
AccessDeniedException: Access denied. Please ensure you have OWNER permission on gs://$MYBUCKET/$SOMEOBJECT
я имею
- подтверждено, что я заверен как правильный пользователь (
gcloud auth list
) - проверил что я в разделе ролей / владельцев участника проекта (
gcloud projects get-iam-policy $PROJECT_ID
) - проверил, что корзина принадлежит проекту (сущность "проект-владельцы-$PROJECT_ID" имеет номер проекта $ PROJECT_ID и роль OWNER).
- Та же проблема возникает в облачной консоли Google, несмотря на то, что я являюсь создателем проекта
Что на земле происходит?
2 ответа
Доступ к ресурсам GCS не является рекурсивным. Владение проектом или корзиной внутри этого проекта не обязательно означает, что у вас также есть доступ на чтение к какому-либо конкретному объекту. Владение корзиной означает, что вы можете перечислить или удалить объект, но это все.
Владельцем объекта всегда является пользователь, который его загрузил. По умолчанию списки ACL для объекта будут соответствовать настройке "ACL объекта по умолчанию", но загрузчик может выбрать любой другой ACL во время загрузки.
Вы можете установить политику Cloud IAM для проекта или корзины.
Например, если вы являетесь владельцем проекта и хотите получить полный доступ ко всем сегментам проекта, выполните следующие действия.
- Открытое управление IAM
- щелчок
Edit permissions
значок, связанный с пользователем, которому вы хотите добавить политику Cloud IAM - Добавлять
[Storage]
-[Storage Admin]
роль. не[Storage Legacy]
, - щелчок
Save
кнопка
Тогда вам предоставляется полный доступ к объекту, даже если вы не являетесь владельцем объекта.
Я боролся с подобной ситуацией: учетная запись службы, которая создала объект, была указана как OWNER (с gsutil acl get gs://...
), но не удалось установить ACL. Затем я нашел следующую цитату в https://cloud.google.com/storage/docs/access-control/lists:
Вы не можете применять списки ACL, которые меняют владельца корзины или объекта (что не следует путать с разрешением ВЛАДЕЛЬЦА)
Я решил мою подобную проблему с помощью IAM, например так:
gsutil iam ch 'user:myacc@mydoma.in:legacyObjectOwner' gs://mybucket
После этого пользователь получает права владельца.