Bucket Policy
Bucket Policy — это механизм управления доступом к бакетам и их содержимому с помощью разрешений и ограничений. Политика представляет собой JSON-документ, который задает правила доступа для определенных пользователей или групп.
Подробнее о настройке Bucket Policy можно узнать в официальной документации AWS или CEPH.
Основные элементы описания Bucket Policy
Заголовок раздела «Основные элементы описания Bucket Policy»Общие поля
Заголовок раздела «Общие поля»- Version: версия политики S3. Доступны два значения:
2012-10-17(рекомендуется);2008-10-17.
- Id: идентификатор политики (необязательный параметр).
- Statement: массив, содержащий отдельные политики (правила).
Поля внутри Statement
Заголовок раздела «Поля внутри Statement»Каждая политика в массиве Statement описывается следующими параметрами:
- Sid (Statement ID): уникальный идентификатор конкретной политики (необязательный).
- Effect: действие политики, указывающее на тип разрешений:
Allow— разрешение;Deny— запрет.
- Principal: субъект, на который распространяется политика. Возможные значения:
*— все пользователи;arn:aws:iam:::user/<username>— конкретный пользователь.
- Action: действия, которые разрешено или запрещено выполнять. Например:
s3:PutObject— загрузка объектов;s3:GetObject— чтение объектов.
- Resource: ресурсы, на которые распространяется политика. Возможные значения:
arn:aws:s3:::*— все бакеты и объекты;arn:aws:s3:::<bucketname>— конкретный бакет;arn:aws:s3:::<bucketname>/*— все объекты в бакете;arn:aws:s3:::<bucketname>/myfolder/*— все объекты в определенной папке.
- Condition: дополнительные условия для применения политики. Условия описываются предопределенными ключами и значениями, которые зависят от используемого хранилища.
Особенности Bucket Policy в Ceph
Заголовок раздела «Особенности Bucket Policy в Ceph»Реализация Bucket Policy в Ceph имеет несколько отличий от оригинального AWS S3:
Principal. В Ceph для указания пользователей используются специфичные идентификаторы:
- Основной пользователь:
arn:aws:iam:::user/<username>. - Подпользователь:
arn:aws:iam:::user/<username>:<subuser>.
Action. Ceph поддерживает ограниченный набор действий (Action) по сравнению с AWS. Полный список доступных действий можно найти в официальной документации Ceph.
Conditions. Ceph поддерживает ограниченный набор ключей условий. Список ключей, доступных для использования в условиях:
- Общие ключи:
aws:CurrentTimeaws:EpochTimeaws:PrincipalTypeaws:Refereraws:SecureTransportaws:SourceIpaws:UserAgentaws:username
- Ключи для S3: перечислены в документации Ceph.
Примеры Bucket Policy
Заголовок раздела «Примеры Bucket Policy»Пример 1. Публичный доступ на чтение к объектам в бакете bucketname:
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::<bucketname>/*" ] }}Пример 2. Доступ к бакету bucketname пользователю username только с определенного IP-адреса:
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Principal": { "AWS": [ "arn:aws:iam:::user/<username>" ] }, "Action": "*", "Resource": [ "arn:aws:s3:::<bucketname>/*", "arn:aws:s3:::<bucketname>" ], "Condition": { "NotIpAddress" : { "aws:SourceIp": "192.0.2.188/32" } } }}Пример 3. Запрет пользователю username удалять объекты и их версии в бакете bucketname:
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Principal": { "AWS": [ "arn:aws:iam:::user/<username>" ] }, "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion" ], "Resource": [ "arn:aws:s3:::<bucketname>/*" ] }}