为什么在未指定配置文件时,具有特定用户的 AWS Bucket Policy NotPrincipal 不适用于 aws 客户端?
Why AWS Bucket Policy NotPrincipal with specific user doesn't work with aws client when no profile is specified?
我有这个 AWS S3 存储桶策略:
{
"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 客户端会这样?
查看 credential precedence provider chain 并使用它来确定您作为身份验证的两个凭据的不同之处。
STS 有一个帮助 API 告诉你你是谁。它类似于类似 UNIX 的命令 whoami
,但 AWS Principals 除外。 要查看哪个凭据,请执行以下操作:
aws sts get-caller-identity
aws sts --profile default get-caller-identity
我有这个 AWS S3 存储桶策略:
{
"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 客户端会这样?
查看 credential precedence provider chain 并使用它来确定您作为身份验证的两个凭据的不同之处。
STS 有一个帮助 API 告诉你你是谁。它类似于类似 UNIX 的命令 whoami
,但 AWS Principals 除外。 要查看哪个凭据,请执行以下操作:
aws sts get-caller-identity
aws sts --profile default get-caller-identity