首先找到用户原则。这些可以通过查看此命令输出的 Arn 字段来找到
aws iam list-users
例如
{
"Users": [
{
"UserName": "eric",
"Path": "/",
"CreateDate": "2016-07-12T09:08:21Z",
"UserId": "AIDAJXPI4SWK7X7PY4RX2",
"Arn": "arn:aws:iam::930517348925:user/eric"
},
{
"UserName": "bambi",
"Path": "/",
"CreateDate": "2015-07-15T11:07:16Z",
"UserId": "AIDAJ2LEXFRXJI5AKUU7W",
"Arn": "arn:aws:iam::930517348725:user/bambi"
}
]
}
然后设置 S3 存储桶策略。这些适用于存储桶并按存储桶设置。正常 IAM 策略是按 IAM 实体设置的,并附加到 IAM 实体,例如用户。您已有 IAM 政策。对于此要求,需要 S3 策略。
强调一下 - S3 策略适用于存储桶并“附加”到 S3,IAM 策略适用于 IAM 并与 IAM 对象相关联。当 IAM 实体尝试使用 S3 存储桶时,S3 策略和 IAM 策略都可以应用。见http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html
一旦您知道原理的 ARN,然后添加这样的 S3 策略
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "arn:aws:iam::930517348725:user/bambi",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::examplebucket/*"]
},
{
"Sid":"block",
"Effect":"Deny",
"Principal": "arn:aws:iam::930517348725:user/bambi",
"Action":["s3:*"],
"Resource":["arn:aws:s3:::*"]
}
]
}
我没有对此进行测试,但这是一般的想法。对不起,我没有在示例中使用“data1”作为原则和存储桶名称,但这太混乱了..:)