Политики 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

Помощь

Если у вас возникли трудности или необходима помощь, пожалуйста, создайте запрос в службу поддержки через тикет-систему, и мы с радостью вам поможем.

Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам