Политики S3-хранилища
Руководство по управлению политиками доступа и жизненным циклом объектов в S3-хранилище
Политики контейнеров S3 позволяют защитить доступ к объектам в контейнерах, предоставляя к ним доступ только пользователям с соответствующими разрешениями.
Чтобы настроить политику создайте файл описывающий политику.
nano bucket-policy.json
Добавьте описание политики, например
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
Примечание
Политика делает весь контент корзины общедоступным только для чтения.
Применить политику:
aws s3api put-bucket-policy --bucket your-bucket-name --policy file://bucket-policy.json
Проверить текущую политику:
aws s3api get-bucket-policy --bucket your-bucket-name
Удалить политику:
aws s3api delete-bucket-policy --bucket your-bucket-name
Примеры популярных политик
Позволяет всем в интернете читать файлы по прямым ссылкам:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicRead",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
Политика, которая запрещает любой доступ неаутентифицированным пользователям:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyPublicRead",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*",
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
}
]
}
Доступ из указанных IP:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*",
"Condition": {
"IpAddress": { "aws:SourceIp": "203.0.113.0/24" }
}
}
]
}
Блокирует небезопасные подключения:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyInsecureTransport",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
],
"Condition": {
"Bool": { "aws:SecureTransport": "false" }
}
}
]
}
Управление жизненным циклом хранилища
Жизненный цикл объектов в бакете — это автоматические действия, которые происходят с объектами через определённое время.
Чтобы настроить жизненный цикл создайте файл:
nano lifecycle.json
Добавьте:
{
"Rules": [
{
"ID": "DeleteAfter30Days",
"Prefix": "",
"Status": "Enabled",
"Expiration": {
"Days": 30
}
}
]
}
Примечание
Удалим все объекты через 30 дней после загрузки
Приметь действия к корзине:
aws s3api put-bucket-lifecycle-configuration \
--bucket your-bucket-name \
--lifecycle-configuration file://lifecycle.json
Проверить текущую конфигурацию:
aws s3api get-bucket-lifecycle-configuration \
--bucket your-bucket-name
Удалить lifecycle-конфигурацию:
aws s3api delete-bucket-lifecycle \
--bucket your-bucket-name
Помощь
Если у вас возникли трудности или необходима помощь, пожалуйста, создайте запрос в службу поддержки через тикет-систему, и мы с радостью вам поможем.