Разрешить анонимную загрузку на S3, но я владелец файла - PullRequest
0 голосов
/ 17 мая 2018

У меня есть этот сценарий, и я пытался понять его в течение некоторого времени. Дело в том, что у меня есть корзина S3, где каждый может анонимно загрузить ТОЛЬКО в корзину, т.е. без входа в систему. Таким образом, они имеют только разрешения на запись - но не могут просматривать или делать что-либо еще. Когда элемент добавлен в корзину, я могу зайти и просмотреть его, загрузить, отредактировать и т. Д., Чтобы получить полные права (я владелец корзины).

Проблема: я установил политику, которая разрешает анонимную загрузку в мое ведро, а затем позволяет мне видеть элементы в хранилище S3 - однако у меня нет прав что-либо делать с файлом.

Что я делаю не так?

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Sid": "allow-anon-put",
           "Effect": "Allow",
           "Principal": {
               "AWS": "*"
           },
           "Action": "s3:PutObject",
           "Resource": "arn:aws:s3:::testbucket123/*",
           "Condition": {
               "StringEquals": {
                   "s3:x-amz-acl": "bucket-owner-full-control"
               }
           }
       },
       {
           "Sid": "deny-other-actions",
           "Effect": "Deny",
           "NotPrincipal": {
               "AWS": "arn:aws:iam::123:root"
           },
           "NotAction": [
               "s3:PutObject",
               "s3:PutObjectAcl"
           ],
           "Resource": "arn:aws:s3:::testbucket123/*"
       }
   ]
}

Любая помощь или советы будут оценены ... или есть лучший способ написания политики для достижения этой цели?

1 Ответ

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

Чтобы уточнить ответ @ sqlbot, используйте эту политику:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "allow-anon-put",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::testbucket123/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        }
    ]
}

Это говорит: Разрешить любому помещать объект в это ведро и устанавливать список контроля доступа, но только если они указалиbucket-owner-full-control при загрузке объекта .

Затем пользователи должны включить этот заголовок в свою команду загрузки:

x-amz-acl: bucket-owner-full-control

Или они используют команду AWS-Линейный интерфейс (CLI) с --acl bucket-owner-full-control (который установит заголовок выше).

Если они не включают этот заголовок, загрузка будет отклонена.

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