Освоение разрешений AWS S3: ACL_PUBLIC_READ и многое другое!

Amazon Simple Storage Service (S3) — это масштабируемое и надежное решение для облачного хранения данных, предоставляемое Amazon Web Services (AWS). Одним из ключевых аспектов управления корзинами S3 является контроль доступа к хранимым объектам. В этой статье мы рассмотрим разрешение ACL_PUBLIC_READ и обсудим несколько других методов, которые вы можете использовать для точной настройки контроля доступа в ваших корзинах S3. Итак, берите редактор кода и приступайте!

Метод 1: ACL_PUBLIC_READ
Одним из распространенных способов предоставления общедоступного доступа для чтения к объектам S3 является использование списка управления доступом ACL_PUBLIC_READ. Это разрешение позволяет любому читать объекты, хранящиеся в вашей корзине. В PHP этого можно добиться с помощью AWS SDK для PHP. Вот пример фрагмента кода:

$s3->putObject([
    'Bucket' => 'your-bucket-name',
    'Key' => 'your-object-key',
    'ACL' => 'public-read',
    'Body' => 'Your object content goes here',
]);

Метод 2: политики корзины
Еще один мощный метод управления доступом к корзине S3 — использование политик корзины. Политики сегментов — это механизмы контроля доступа на основе JSON, которые позволяют вам определять детальные разрешения для различных участников (пользователей, групп или учетных записей AWS). Вот пример политики сегмента, предоставляющей доступ на чтение ко всем объектам в сегменте:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::your-bucket-name/*"
            ]
        }
    ]
}

Метод 3: списки управления доступом (ACL)
ACL обеспечивают еще один уровень контроля доступа для корзин S3. Списки ACL можно использовать для предоставления или запрета разрешений отдельным учетным записям AWS или предопределенным группам. Вот пример предоставления доступа на чтение к определенному аккаунту AWS с помощью списков управления доступом:

$s3->putObjectAcl([
    'Bucket' => 'your-bucket-name',
    'Key' => 'your-object-key',
    'GrantRead' => 'id="YOUR-AWS-ACCOUNT-ID"',
]);

Метод 4: предварительно подписанные URL-адреса.
Если вам необходимо предоставить временный доступ к частным объектам S3, вы можете создать предварительно подписанные URL-адреса с помощью AWS SDK. Предварительно подписанные URL-адреса — это URL-адреса с ограниченным сроком действия, которые позволяют получить доступ к определенным объектам, не требуя от запрашивающей стороны наличия учетных данных AWS. Вот пример создания предварительно подписанного URL-адреса на Python:

url = s3.generate_presigned_url(
    'get_object',
    Params={
        'Bucket': 'your-bucket-name',
        'Key': 'your-object-key',
    },
    ExpiresIn=3600  # URL expires in 1 hour
)

В этой статье мы рассмотрели различные методы управления доступом к вашим корзинам AWS S3. Мы начали с разрешения ACL_PUBLIC_READ, которое предоставляет публичный доступ для чтения к вашим объектам. Затем мы обсудили политики сегментов, списки ACL и предварительно подписанные URL-адреса как дополнительные методы точной настройки контроля доступа. Используя эти методы, вы можете обеспечить правильный уровень безопасности и доступности для ваших объектов S3. Итак, внедряйте эти методы в свои проекты AWS, чтобы освоить разрешения S3!