我正在使用AWS中的身份提供者,该提供者可以向他管理的用户授予具有以下策略的角色。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GiveS3Access",
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::mybucket"
}
]
}
使用我计算机上的有效访问令牌,我可以在s3存储桶中列出对象(下面的示例),但不能在其上推送任何对象。
❯ aws s3 ls s3://mybucket/
PRE test_folder/
PRE home/
2020-10-07 15:22:13 57385 Image001.png
2020-10-07 15:25:20 98942 Image002.png
❯ aws s3 cp test.mp4 s3://mybucket/test.mp4
upload failed: ./test.mp4 to s3://mybucket/test.mp4 An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
没有默认加密,也没有存储桶额外策略。正确配置了配置文件(~/.aws/config
,以使用GiveS3Access
策略(第一个代码块)询问角色。
答案 0 :(得分:0)
arn:aws:s3:::mybucket
形式的arn仅用于存储桶,不适用于其对象。要启用对象的下载/上传,应该有:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GiveS3Access",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::mybucket",
"arn:aws:s3:::mybucket/*"
]
}
]
}
但是,这允许对存储桶和对象进行所有操作。请重新考虑将其更改为遵循principles of least privileged。