PutObject 操作:身份提供者拒绝访问
PutObject operation: Access Denied with identity provider
我在 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
策略(第一个代码块)询问角色。
arn:aws:s3:::mybucket
形式的arn只针对bucket,不针对bucket的objects。要启用 download/upload 个对象,应该有:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GiveS3Access",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::mybucket",
"arn:aws:s3:::mybucket/*"
]
}
]
}
但是,这允许对您的存储桶和对象进行所有操作。请重新考虑将其更改为遵循 principles of least privileged.
我在 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
策略(第一个代码块)询问角色。
arn:aws:s3:::mybucket
形式的arn只针对bucket,不针对bucket的objects。要启用 download/upload 个对象,应该有:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GiveS3Access",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::mybucket",
"arn:aws:s3:::mybucket/*"
]
}
]
}
但是,这允许对您的存储桶和对象进行所有操作。请重新考虑将其更改为遵循 principles of least privileged.