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

Помощь

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

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