<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Истории успеха наших клиентов — лучшие проекты
Вход / Регистрация
На главную
25eb9e0a-a5a8-472a-ace7-940b8bd2adf0
Облачные сервисы

Bucket Policies в S3

Возможности управления доступом к данным в хранилищах S3 позволяют гибко настраивать правила доступа для различных сценариев. Рассмотрим несколько полезных примеров настройки политик доступа для S3.

Ограничение доступа только через SSL (HTTPS)

Чтобы обезопасить передачу данных, можно ограничить доступ к бакету, разрешив только HTTPS-соединения. Это предотвращает попытки получить доступ через незащищенные HTTP-запросы, снижая риск компрометации данных.

Создайте файл с политикой ssl.json:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::<имя_бакета>/*",
            "Condition": {
                "Bool": {
                    "aws:SecureTransport": "false"
                }
            }
        }
    ]
}

Примените политику с помощью команды:

aws s3api put-bucket-policy --bucket <имя_бакета> --policy file://ssl.json --endpoint-url https://s3.twcstorage.ru

Теперь, при попытке обращения по HTTP будет возникать ошибка 403.

Ограничение доступа по IP-адресам

Для дополнительной безопасности можно ограничить доступ к бакету только для определенных IP-адресов. Это может быть полезно, например, для защиты данных от несанкционированного доступа извне.

Создайте файл с политикой ip.json:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::<имя_бакета>/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "<IP-адрес>"
                    ]
                }
            }
        }
    ]
}

Примените политику с помощью команды:

aws s3api put-bucket-policy --bucket <имя_бакета> --policy file://ip.json --endpoint-url https://s3.twcstorage.ru

Доступ только для конкретного префикса

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

Создайте файл с политикой prefix.json:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<имя_бакета>/html/*"
        }
    ]
}

Примените политику с помощью команды:

aws s3api put-bucket-policy --bucket <имя_бакета> --policy file://prefix.json --endpoint-url https://s3.twcstorage.ru

Теперь все файлы из префикса /html будут доступны для чтения.

Была ли статья полезна?
Ваша оценка очень важна
Комментарии 1
Дмитрий
27.11.2025, 14:10

Почему-то по описанному примеру не получилось закрыть доступ к бакету. Как будто бы сочетание "Effect": "Allow" и "Condition": "IpAddress" - разрешает доступ к бакету с нужного IP, но при этом не запрещает доступ к бакету с других IP. То есть вообще никак не влияет.

А вот если указать в политике "Effect": "Deny" и "Condition": "NotIpAddress", тогда доступ к бакету запрещён со всех IP, кроме указанного.

То есть для того, чтобы ограничить доступ к бакету по IP, нужно не только разрешить доступ с нужных IP, но одновременно с этим и запретить доступ со всех остальных IP.