URL объекта корзины s3 не является частным - PullRequest
0 голосов
/ 30 мая 2018

Мои папки с ведрами являются личными, но когда я копирую URL-адрес отдельного объекта в браузер (когда я вышел из системы), я все равно могу загрузить / просмотреть файл.

Как я могу предотвратить это?

Вот моя политика корзины:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "NotResource": "arn:aws:s3:::my-bucket/backup/*"
        }
    ]
}

Чего я пытаюсь достичь: сделать каждую папку приватной, кроме двух папок с именем media и static (для которого я хочу публичный доступ для чтения).

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

Я думаю, вы ищете что-то вроде этого.

    {
  "Version":"2012-10-17",
  "Statement": [
    {
       "Sid": "AllowAllS3ActionsInOtherFolders",
       "Action":["s3:*"],
       "Effect":"Allow",
       "Resource": ["arn:aws:s3:::my-bucket"],
       "Condition":{"StringLike":{"s3:prefix":
                  [
                       "backup/media/*"
                       "backup/static/*"
                  ]
               }
        }
    }
  ]
}

Пожалуйста, обратитесь к этому Предоставьте доступ к пользовательским папкам в корзине Amazon S3 для получения более подробной информации.

0 голосов
/ 31 мая 2018

Эта политика предоставляет общедоступным GetObject доступ к двум папкам.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ReadAccess",
            "Action": [
                "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::jr-enc/media/*",
                "arn:aws:s3:::jr-enc/static/*"
            ],
            "Principal": "*"
        }
    ]
}

Обратите внимание, что GetObject предоставляет только доступ для доступа / загрузки объекта. не дает разрешение на просмотр содержимого корзины / папок.

0 голосов
/ 30 мая 2018

В вашей политике вы специально говорите, что разрешите анонимный публичный доступ GET.

Вы должны изменить его на что-то вроде ниже.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:*"
            ],
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::ACCOUNT_ID:user/USERNAME_A",
                    "arn:aws:iam::ACCOUNT_ID:user/USERNAME_B",
                    "arn:aws:iam::ACCOUNT_ID:user/USERNAME_C",
                    "arn:aws:iam::ACCOUNT_ID:role/ROLE_A",
                    "arn:aws:iam::ACCOUNT_ID:role/ROLE_B",
                    "arn:aws:iam::ACCOUNT_ID:role/ROLE_C"
                ]
            },
            "Resource": [
                "arn:aws:s3:::BUCKET_NAME",
                "arn:aws:s3:::BUCKET_NAME/*"
            ]
        }
    ]
}

См. Дополнительную политику примеры здесь.

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