Как настроить публичный доступ только для чтения в Amazon S3 Bucket? - PullRequest
0 голосов
/ 27 октября 2019

Я нашел пару похожих вопросов о StackOverflow, таких как этот , но они довольно старые и, кажется, с тех пор все изменилось в S3. Они добавили эти четыре параметра, которые довольно запутанно: enter image description here Если я отключу их, значит ли это, что мой контейнер будет доступен для публичной записи? Кроме того, я также добавил эту политику:

{
"Version": "2008-10-17",
"Statement": [
    {
        "Sid": "PublicReadForGetBucketObjects",
        "Effect": "Allow",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::REDACTED/*"
    },
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::REDACTED:user/REDACTED"
        },
        "Action": "s3:*",
        "Resource": [
            "arn:aws:s3:::REDACTED",
            "arn:aws:s3:::REDACTED/*"
        ]
    }
]

и эта конфигурация CORS:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>REDACTED</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

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

1 Ответ

2 голосов
/ 28 октября 2019

Чтобы сделать объекты общедоступными доступными , используйте такую ​​политику:

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

Обратите внимание, что используется "Principal": "*", что отличается от вашей политики, в которой используется "Principal": {"AWS": "*"}.

Это позволяет получить доступ к объектам (GetObject), но содержимое корзины не может быть перечислено. Для этого потребуются разрешения ListBucket на саму корзину (без /*).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...