Я являюсь владельцем конкретного проекта, у которого есть ведро с несколькими сотнями гигабайт объектов. Недавно я обнаружил с помощью сбойного 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
)Что, черт возьми, происходит?
Доступ к ресурсам GCS не рекурсивный. Владение проектом или сегментом внутри этого проекта не обязательно означает, что у вас также есть доступ для чтения к какому-то конкретному объекту. Владение ведром подразумевает, что вы можете перечислить или удалить объект, но это все.
Владельцем объекта всегда является пользователь, который его загрузил. По умолчанию списки ACL для объекта будут согласованы с настройкой сегмента "ACL объекта по умолчанию", но загрузчик может выбрать любой другой ACL во время загрузки.
Вы можете установить политику Cloud IAM для проекта или сегмента.
Например, если вы являетесь владельцем проекта и хотите получить полный доступ ко всем сегментам в проекте, выполните следующие действия.
Edit permissions
значок, связанный с пользователем, которому вы хотите добавить политику Cloud IAM[Storage]
-[Storage Admin]
роль. не [Storage Legacy]
.Save
кнопкаТогда вам предоставляется полный доступ к объекту, даже если вы не являетесь владельцем объекта.
Я решил свою аналогичную проблему с помощью IAM, например:
gsutil iam ch 'user:myacc@mydoma.in:legacyObjectOwner' gs://mybucket
После этого у пользователя появляются права владельца.
Я боролся с аналогичной ситуацией: учетная запись службы, создавшая объект, была указана как ВЛАДЕЛЕЦ (с gsutil acl get gs://...
), но не удалось установить ACL. Затем я нашел следующую цитату в https://cloud.google.com/storage/docs/access-control/lists#predefined-acl:
Вы не можете применять списки управления доступом, которые изменяют владельца корзины или объекта (не следует путать с разрешением OWNER)