Почему политика AWS Bucket NotPrincipal для конкретного пользователя не работает с клиентом aws, если не указан профиль? - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть политика AWS S3 Bucket:

{
    "Version": "2012-10-17",
    "Statement": [
        {
           "Sid": "OnlyS3AdminCanPerformOperationPolicy",
           "Effect": "Deny",
           "NotPrincipal": {
               "AWS": "arn:aws:iam::<account-id>:user/s3-admin"
           },
           "Action": [
               "s3:*"
           ],
           "Resource": [
               "arn:aws:s3:::my-bucket-name",
               "arn:aws:s3:::my-bucket-name/*"
           ]
       }
   ]
}

Примечание: у пользователя IAM s3-admin есть политика AdministratorAccess.

Сначала я думал, что политика корзины не работает. Вероятно, из-за того, как я проверил операцию.

aws s3 rm s3://my-bucket-name/file.csv 

Caused:
delete failed: s3://test-cb-delete/buckets.csv An error occurred (AccessDenied)

но я, если используется, --profile по умолчанию согласно

aws s3 --profile default rm s3://my-bucket-name/file.csv 

Это сработало.

Я проверил и настроил только один набор учетных данных для клиента aws. Кроме того, я могу перечислить содержимое корзины, даже если я не использую аргумент --profile по умолчанию.

Почему клиент aws так себя ведет?

1 Ответ

0 голосов
/ 14 сентября 2018

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

STS имеет удобный API, который сообщает вам, кто вы. Она похожа на UNIX-подобную команду whoami, за исключением Принципов AWS. Чтобы увидеть, какие учетные данные какие, сделайте это:

aws sts get-caller-identity
aws sts --profile default get-caller-identity 
...