2016-12-20 3 views
1

Есть ли способ разрешить создание новых объектов, но не удаление или перезапись других существующих объектов в ведре?Разрешить создание, но не переопределение или удаление объектов в ведре в GCS и S3

Я хотел бы достичь этого, не поддерживая бэкэнд или подписанные URL-адреса. Если есть способ сделать это через ACL по умолчанию ACL и Bucket ACL.

Установка ведра ACL для разрешения WRITING от allUsers, похоже, позволяет им удалять и перезаписывать, я бы хотел, чтобы они могли создавать только новые объекты.

Примечание: Я также ценю ответы на S3.

ответ

2

Нет, нет. Прямо сейчас, загрузчик объекта является владельцем этого объекта, а владелец объекта всегда имеет разрешение на удаление своего собственного объекта. Вы можете запретить пользователям переписывать объекты друг друга, но теперь вы не можете запретить пользователям переписывать объекты, которые они ранее загружали.

Обратите внимание, что это строго вопрос ACL. Пользователь, который не хочет перезаписывать существующий объект, может убедиться, что он не будет. Если вы используете XML API, пользователь будет включать заголовок «x-goog-if-generation-match: 0» в своем запросе на загрузку, что приведет к сбою их загрузки, если объект с таким именем уже существует.

+0

Спасибо за ответ, это дало мне несколько идей. Можно ли загрузить объект (при создании) с помощью ACL, который помешал бы ему переписать в будущем, даже если у пользователя есть доступ WRITE к ведро, в котором он содержится? Если это возможно, он может выполнить опыт, который я ищу. – mkhatib

+1

Не совсем. Вы никогда не сможете помешать той же учетной записи, которая впоследствии удалила объект. Пользователь-загрузчик всегда является безотзывным владельцем объекта, и его владелец всегда может удалить. Но если вы используете подписанный URL-адрес при загрузке, все объекты принадлежат учетной записи службы, которая подписывает URL-адрес, и вы можете сделать так, чтобы ни одна другая учетная запись не удаляла объект. –

+0

Спасибо за объяснение. Можно ли получить подписанные URL-адреса без поддержки бэкэнд? – mkhatib