Политика корзины Amazon S3 только для публичных ограничений - PullRequest
1 голос
/ 21 марта 2012

Я хотел бы ограничить публичный доступ к некоторым объектам, которые мы сохранили в S3, но отображать другие объекты в той же иерархии ключей. Например, предположим, что я хочу сделать bucketname/* общедоступным для чтения. Но нужно запретить доступ к bucketname/*/hidden/* для всех пользователей, которым явно не предоставлен доступ в IAM .

Я могу сделать это с помощью политики ведра, например:

{
  "Id": "Policy123",
  "Statement": [
    {
      "Sid": "Stmt123",
      "Action": [ "s3:GetObject" ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::bucketname/*",
      "Principal": {
        "AWS": [ "*" ]
      }
    },
    {
      "Sid": "Stmt124",
      "Action": [ "s3:GetObject" ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::bucketname/*/hidden/*",
      "Principal": {
        "AWS": [ "*" ]
      }
  ]
}

Но это препятствует доступу к скрытым объектам любых пользователей / групп IAM, которым я предоставил. Есть ли параметр для Principal во втором утверждении, который соответствует только неаутентифицированному доступу? Или, что еще лучше, есть ли способ перечислить только те Принципы , на которые НЕ должно повлиять заявление политики?

Ответы [ 2 ]

3 голосов
/ 16 апреля 2012

Согласно поддержке AWS, это в настоящее время невозможно.Любая политика Deny переопределяет совпадающую (или подмножество) политику Allow, и невозможно запретить только анонимный доступ.

Аналогичного эффекта можно достичь, указав частный ACL для всех объектов, соответствующих bucketname/*/hidden/*, но это не так гибко и должно применяться вручную.

0 голосов
/ 21 марта 2012

Вам не нужно устанавливать политику на ведро. Фактически вы можете применить эту же политику к пользователю или группе IAM в зависимости от того, что лучше всего работает в вашем сценарии.

https://console.aws.amazon.com/iam/home?#

  • Пользователи
  • Выберите желаемого пользователя
  • Нажмите вкладку прав доступа
  • Присоединение политики пользователя
  • Пользовательская политика
  • Выберите
  • Политика копирования и вставки
  • Применить политику

Иногда пользователю необходимо добавить дополнительные разрешения, чтобы они могли видеть сегменты для навигации. Например, если они используют облачную ягоду, вам нужно предоставить им список доступа к основным сегментам. Смотрите, например, одну из моих политик.

{
  "Statement": [
    {
      "Sid": "Stmt1330983243489",
      "Action": [
        "s3:*"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::<allowbucket1>",
        "arn:aws:s3:::<allowbucket1>/*"
      ]
    },
    {
      "Sid": "Stmt1330983260440",
      "Action": [
        "s3:ListAllMyBuckets"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::*"
      ]
    },
    {
      "Sid": "Stmt1330983357419",
      "Action": [
        "s3:CreateBucket",
        "s3:DeleteBucket",
        "s3:PutBucketNotification",
        "s3:PutBucketPolicy",
        "s3:PutBucketRequestPayment"
      ],
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::*"
      ]
    }
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...