- tocdepth
2
Политики доступа (Bucket Policy) в Object Storage
Bucket Policy позволяет задать права на действия с бакетами, объектами и группами объектов в хранилище.
В отличие от ACL, политики доступа имеют более гибкие настройки доступа к ресурсам. Вы можете разрешить доступ к ресурсам с конкретных IP-адресов, выдать полный доступ к бакетам нескольким пользователям или разрешить скачивать всем пользователям только определенный объект.
Правила Bucket Policy задаются в JSON-файле, который состоит из нескольких базовых элементов.
Элементы политики доступа
Политику доступа можно создать с помощью генератора политик AWS и передать через API или сторонний инструмент, например AWS CLI.
Элемент |
Описание |
---|---|
|
Идентификатор политики доступа. |
|
Версия языка политики. Определяет синтаксис языка для правил, которые будут использоваться в политике. Актуальная версия |
|
Основной и обязательный элемент политики. Может содержать один оператор или массив отдельных операторов.
Каждый отдельный блок операторов заключается в "Statement": [{...},{...},{...}]
|
|
Дополнительный идентификатор политики . Значение
|
|
Обязательный элемент политики, разрешает или запрещает действие оператора. Допустимые значения |
|
Обязательный элемент, указывает на получателя разрешения . Получаетелем может быть пользователь сервисный аккаунт или все пользователи интернета. Если указать |
|
Необязательный элемент.
Устанавливает запрет доступа для всех пользователей кроме тех, что указаны в |
|
Указывает действие или действия, которые разрешает или запрещает политика. Для указания нескольких действий используется массив Если указать |
|
Расширенный элемент политики, который разрешает все действия, кроме перечисленных в списке этого элемента. На действия, которые указаны в |
|
Указывает ресурс или ресурсы, для которого применяется правило. В качестве ресурса может быть указан бакет, объект в бакете ( Если в качестве ресурса указан бакет, то он не будет включать в себя объекты внутри бакета. Чтобы включить в правило и бакет и объекты внутри бакета, укажите их как отдельные ресурсы: "Resource": [
"arn:aws:s3:::<bucket-name>",
"arn:aws:s3:::<bucket-name>/*",
]
Для формата JSON, ресурс должен содддержать префикс |
|
Расширенный элемент политики, который разрешает все ресурсы, кроме перечисленных в списке этого элемента. |
|
Блок условий, при которых политика вступает в силу. В элементе используются операторы условий для сопоставления ключей и значений в политике с ключами и значениями в запросе: "Condition" : { "{condition-operator}" : { "{condition-key}" : "{condition-value}" }}
|
Подробнее об элементах политики можно прочитать в документации AWS.
Примеры политик доступа
Политика, которая делает бакет публичным:
{
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket/*"
}
]
}
Политика, которая разрешает скачивать объекты из бакета только для указанного пула IP-адресов:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "100.100.100.100/10"
}
}
}
]
}
Политика, которая запрещает всем пользователям доступ к операции s3:GetObject в определенной директории бакета, но разрешает доступ к другим объектам бакета.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket/*"
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket/you_shall_not_pass/*"
}
]
}
для Dev & Test