Проблемы с указанием одного сегмента в простой политике пользователя AWS - PullRequest
1 голос
/ 01 февраля 2012

Я использую AWS IAM STS (через boto) для создания учетных данных для доступа к корзине S3. Я в недоумении относительно того, что не так в следующей политике. Я максимально упростил свою политику и все еще получаю неожиданные результаты.

Когда я получаю токен для пользователя, я присоединяю следующую политику:

user_policy_string = r'{"Statement":[{"Effect":"Allow","Action": "s3:*","Resource":"arn:aws:s3:::*"}]}'

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

user_policy_string = r'{"Statement":[{"Effect":"Allow","Action": "s3:*","Resource":"arn:aws:s3:::buck_binary_bucket_bay-earth-d5a/*"}]}'

Здесь я получаю 403 ошибки при попытке доступа к S3. Основываясь на документах AWS, я уверен, что это способ решения конкретной задачи в политике, поэтому я не знаю, что может быть причиной этого ограничения. Я неправильно обращаюсь к ведру?

В консоли S3 политика пуста (также пытались добавить полностью разрешающую политику). Для учетной записи AWS, используемой для генерации токенов STS, применяется следующая политика:

  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:GetFederationToken",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:GetUser",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "*"
    }
  ]
}

1 Ответ

6 голосов
/ 01 февраля 2012

Здесь я получаю 403 ошибки при попытке получить доступ к S3.

Как вы на самом деле пытаетесь получить доступ к S3 , то есть с помощью какого инструмента, службы, API?

Часто сценарий использования включает в себя вызовы API S3, адресованные другим типам ресурсов, помимо Resource, на который уже нацелена политика.В частности, вам нужно знать о разнице между Операциями в Сервисе (например, ListAllMyBuckets ), Операциями в Buckets (например, ListBucket ) и Операции над объектами (например, GetObject ).

Если ваш метод доступа S3 неявно использует также любые другие типы ресурсов (т.е. помимо ресурсов объектов, которые выуже обращаются через buck_binary_bucket_bay-earth-d5a/*), для этого требуются соответствующие дополнительные правила.Например, общее требование для возможности перечисления объектов в корзине с помощью ListBucket перед доступом к самим объектам потребует соответствующего фрагмента политики, обращающегося к корзине, например:

   "Statement":[{
      "Effect":"Allow",
      "Action":"s3:ListBucket",
      "Resource":"arn:aws:s3:::buck_binary_bucket_bay-earth-d5a",
      }
   ]
...