Я создал сервисный аккаунт.Его единственная задача - загрузить данные по определенному пути в корзину GCS, например, gs://bucket/current/
.По этому пути эта учетная запись службы должна иметь возможность создавать папку, подобную 2019/
, и загружать данные в gs://bucket/current/2019/file.csv
. Эта учетная запись не сможет просматривать другие пути в этом сегменте, кроме gs://.../current/...
и после загрузки данных по этому пути,файл не может быть удален или отредактирован.
Я не думаю, что смогу использовать IAM для предоставления такого разрешения.Итак, я изучил acl
и defacl
, но не смог найти способ сделать эту работу.Как я могу использовать acl
для предоставления служебной учетной записи для этой задачи?
Редактировать: Спасибо за помощь в улучшении читаемости этого вопроса.Я прочитал google document , в котором много примеров про acl, но я не могу найти тот, который соответствует моему вопросу.
Edit2: я попробовал это gsutil acl ch -r -u serviceaccount:W gs://bucket/current/
и получил такой результат:
Skipping serviceaccount:W on gs://bucket/current/, as WRITER does not apply to objects
No changes to gs://bucket/current/
, что имеет смысл, потому что сейчас на этом пути нет объектов.Я просто хотел, чтобы эта учетная запись службы отображала только этот путь GCS и могла загружать файл в корзину.
Мое решение: вместо использования ACL я использовал разрешение и разрешение IAM.роль storage.objectCreator в корзине для этой учетной записи службы