AccessDeniedException: 403 запрещено на GCS, используя учетную запись владельца

Я попытался получить доступ к файлам в ведре, и я продолжаю получать отказ в доступе к файлам. Я могу видеть их в консоли GCS, но могу получить доступ к ним через это и не могу получить доступ к ним через gsutil, либо выполнив команду ниже.

gsutil cp gs://my-bucket/folder-a/folder-b/mypdf.pdf files/

но все это возвращает AccessDeniedException: 403 Forbidden

Я могу перечислить все файлы и такие, но на самом деле не получить к ним доступ. Я попытался добавить своего пользователя в acl, но это все еще не имело никакого эффекта. Все файлы были загружены из VM через предохранитель, который работал отлично и просто потерял весь доступ.

Я проверил эти сообщения, но ни у кого нет решения, которое помогло мне

не могу получить доступ к ресурсу, как владелец, несмотря на то, что я владелец

копия gsutil, возвращающая "AccessDeniedException: 403 недостаточное разрешение" от GCE

команда gsutil cors set возвращает 403 AccessDeniedException

1 ответов


Это вполне возможно. Владение ведром предоставляет этому ведру разрешение FULL_CONTROL, которое включает возможность перечислять объекты в этом ведре. Однако разрешения ведра не подразумевают автоматически каких-либо разрешений объекта, что означает, что если какая-либо другая учетная запись загружает объекты и устанавливает ACLs как нечто вроде "private", владелец ведра не будет иметь к нему доступа (хотя владелец ведра может удалить объект, даже если они не могут его прочитать, как удаление объектов это разрешение ведра).

Я не знаком с настройками предохранителей по умолчанию, но если бы мне пришлось угадать, вы используете системную учетную запись своего проекта для загрузки объектов, и они установлены в private. Все нормально. Самый простой способ проверить это-запустить gsutil с хоста GCE, где учетные данные по умолчанию будут системной учетной записью. Если это работает, вы можете использовать gsutil для переключения ACLs на что-то более разрешительное, например "project-private."

команда для этого было бы:

gsutil acl set -R project-private gs://muBucketName/