отдельного пользователя. Я так понял, что сделать это можно через полиси или acl. Попробовал через get-bucket-policy получить полиси на текущий бакет, но его нет. Значит права назначены через acl и get-bucket-acl это подтверждает.
Какой способ более правильный или они равноценны?
Можете дать пример назначения прав с помощью acl? Мне надо как-то не перетереть текущий acl и добавить для другого пользователя. Можно было бы через subusers, но креды уже у конечных пользователей и так уже не получится. Полдня в гугле провёл, но просветление никак не приходит.
У тебя на бакете нет полиси, значит сейчас туда читать/писать может только владелец. Добавь policy, который даст владельцу full access, а нужному пользователю - права на чтение.
Полдня в гугле не сравнятся с двумя минутами в чатгпт :D ------ Вы можете использовать и ACL, и бакетные политики для управления доступом к бакетам. Оба подхода предлагают гибкость в управлении доступом, но есть некоторые различия. - Бакетные политики предоставляют более гибкий механизм для управления доступом к бакетам и их содержимому. Они позволяют управлять доступом на основе различных условий, таких как IP-адрес пользователя, время дня и т.д. Однако они могут быть сложнее в настройке и управлении, особенно для больших и сложных окружений. - ACL (Access Control Lists) - это более простой механизм для управления доступом. Они позволяют управлять доступом на уровне каждого бакета или объекта, но не предлагают такую же гибкость условий, как бакетные политики. Если у вас уже есть ACL, вы можете продолжить использовать их, но если вы хотите более гибкого управления доступом, то бакетные политики могут быть лучшим выбором. Вот пример того, как можно добавить новую запись в ACL для бакета в Ceph: 1. Получите текущий ACL для бакета: radosgw-admin bucket stats --bucket=mybucket В ответе посмотрите на поле bucket_acl. 2. Скопируйте текущий ACL и добавьте новую запись для вашего пользователя. Например, если ваш текущий ACL выглядит так: { "acl": [ { "type": "CanonicalUser", "id": "currentuserid", "permission": "FULL_CONTROL" } ], "owner": "currentuserid" } Вы можете добавить новую запись для нового пользователя так: { "acl": [ { "type": "CanonicalUser", "id": "currentuserid", "permission": "FULL_CONTROL" }, { "type": "CanonicalUser", "id": "newuserid", "permission": "READ" } ], "owner": "currentuserid" } 3. Примените новый ACL к бакету: radosgw-admin bucket set --bucket=mybucket --bucket-id=<bucket-id> --acl=<new-acl> Здесь <bucket-id> - это идентификатор бакета, который вы получили на первом шаге, а <new-acl> - это новый ACL, который вы создали на втором шаге.
policy и acl никак не могут быть равноценными, т.к. acl это права, а policy - правило для назначения прав. Вы можете после загрузки объекта в бакет вручную назначить для него acl, а можете написать bucket policy и acl будут назначаться к объектам автоматом при загрузке.
Обсуждают сегодня