Установите для закрытой корзины S3 новые загруженные ключи по умолчанию с полным контролем владельца корзины.

Можно ли по умолчанию для всех новых загруженных ключей в определенное ведро иметь разрешения bucket-owner-full-control acl?

В документации этого не нашел.


person SomeGuyOnAComputer    schedule 02.05.2018    source источник


Ответы (1)


Вы можете использовать политику корзины S3.

Например, чтобы разрешить определенному участнику (например, пользователю IAM) загружать в корзину, но потребовать, чтобы участник предоставил список ACL-владелец-база-владелец-полный контроль:

{
  "Statement":[
    {
      "Effect":"Allow",
      "Principal":{ <principal here> },
      "Action":"s3:PutObject",
      "Resource":["arn:aws:s3:::mybucket/*"]
    },
    {
      "Effect":"Deny",
      "Principal":{ <principal here> },
      "Action":"s3:PutObject",
      "Resource":"arn:aws:s3:::mybucket/*",
      "Condition": {
        "StringNotEquals": {"s3:x-amz-acl":"bucket-owner-full-control"}
      }
    }
  ]
}
person jarmod    schedule 02.05.2018
comment
Спасибо за ответ. Не идеально, но предотвращает проблемы со считыванием новых ключей. - person SomeGuyOnAComputer; 03.05.2018
comment
К сожалению, вы не можете настроить S3 для применения ACL по умолчанию. По умолчанию субъект, который загружает объект в S3, владеет этим объектом, что вполне логично в некоторых ситуациях. Таким образом, загрузчик должен выбрать, чтобы передать право собственности на объект S3 владельцу корзины, и загрузчик делает это с явным предоставлением ACL. Обратите внимание, что как владелец корзины вы всегда можете удалять объекты, даже если они вам не принадлежат (но вы не можете делать что-либо еще, если это явно не разрешено владельцем объекта). - person jarmod; 03.05.2018
comment
Это сработало для меня! Однако один вопрос. Есть ли причина использовать эффект «Запретить» с условием StringNotEquals вместо эффекта «Разрешить» с условием StringEquals? Последнее удалит принципала, используемого как в «Разрешить», так и в «Запретить» в первом, верно? - person SomeGuyOnAComputer; 04.05.2018
comment
Да, есть причина использовать Запретить/Не, а не Разрешить/Равно, и то, что вы используете, зависит от того, чего вы хотите достичь с помощью своей политики. Представьте себе второй набор учетных данных IAM, политика которого разрешает s3:PutObject для этой корзины (без условия, требующего полного контроля владельца корзины). Если политика корзины S3 имеет значение «Разрешить/равно», то этот пользователь сможет загрузить объект, не предоставляя владельцу корзины полный контроль над объектом (поскольку политика IAM разрешает это, а политика S3 не запрещает). Если для политики корзины S3 установлено значение «Запретить/Нет», нежелательная загрузка будет отклонена. - person jarmod; 04.05.2018
comment
Блестящий. Это имеет смысл. Большое спасибо! - person SomeGuyOnAComputer; 04.05.2018