bko*_*cik 6 amazon-s3 amazon-web-services
我有一个S3存储桶,该存储桶在其策略权限中具有我的CloudFront原始访问身份:
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity <mine>"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<my-bucket>/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
另外,我创建了一个组,并将AmazonS3FullAccess托管策略附加到该组,并将IAM用户添加到该组。托管策略如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,当该用户尝试向存储桶添加任何内容时,我收到403(访问被拒绝)。我不确定是否有任何其他操作可行,我还没有编写代码尝试这些操作。仅当我明确在存储桶策略中直接允许该用户的ARN访问存储桶时,才允许他们添加对象。我想念什么?似乎上述组策略应该允许该组的成员访问所有存储桶中的所有操作,但事实并非如此。
编辑:经过大量的文档研究之后,我想我发现Amazon不打算以这种方式使用组。他们希望您改用角色,您可以将角色分配给EC2实例以进行自动凭证管理。很好,但是后来我不知道如何在本地测试我的代码(使用aws-sdk Ruby gem)。亚马逊说要为您的访问ID和密钥定义环境变量-但是什么访问ID和密钥呢?没有这样的角色...
小智 1
尝试更换(在您的政策中):
"Resource": "arn:aws:s3:::<my-bucket>/*"
Run Code Online (Sandbox Code Playgroud)
和:
"Resource": ["arn:aws:s3:::<my-bucket>", "arn:aws:s3:::<my-bucket>/*",]
Run Code Online (Sandbox Code Playgroud)
和:
"Principal": {"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity <mine>"},
Run Code Online (Sandbox Code Playgroud)
和:
"Principal": {"AWS": "arn:aws:iam::ACCOUNT_ID:user/USERNAME"},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3002 次 |
| 最近记录: |