Возможности управления доступом к данным в хранилищах S3 позволяют гибко настраивать правила доступа для различных сценариев. Рассмотрим несколько полезных примеров настройки политик доступа для S3.
Чтобы обезопасить передачу данных, можно ограничить доступ к бакету, разрешив только 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.timeweb.cloud
Теперь, при попытке обращения по HTTP будет возникать ошибка 403.
Для дополнительной безопасности можно ограничить доступ к бакету только для определенных 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.timeweb.cloud
Если вам нужно дать доступ к определенным объектам в бакете, например, к файлам, находящимся в конкретном префиксе, можно использовать следующую политику. Она подойдет для приватного бакета, чтобы предоставить доступ только к определенным данным.
Создайте файл с политикой 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.timeweb.cloud
Теперь все файлы из префикса /html
будут доступны для чтения.