Jas*_*son 2 acl amazon-s3 amazon-web-services
我之前从未使用过AWS S3.我们使用它来自动备份客户的通话录音.我们的一个用于审计目的的客户需要访问他们的录音.
我使用客户端CyberDuck作为访问文件的方式.
我想让他们只访问他们的文件.
我们的文件结构如下:
recordings/12345/COMPANYNAMEHERE/
Run Code Online (Sandbox Code Playgroud)
我刚学会根据脚本和策略构建和执行操作.所以我做了一些研究,并尝试建立一个,但我在上市时获得拒绝访问权限.
只是好奇我是否正确地解决了这个问题.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::recordings/12345/COMPANYNAMEHERE",
"arn:aws:s3:::recordings/12345/COMPANYNAMEHERE/*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
您只允许他们使用ListAllMyBuckets,这意味着他们只能列出您的存储桶的名称,而不能执行任何其他操作.
如果您已经为他们创建了IAM用户,那么为他们提供此策略将允许他们列出并检索他们的文件,但只能从给定目录(或者更准确地说,使用给定的前缀):
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::my-bucket"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"recordings/123/*"
]
}
}
},
{
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::my-bucket/recordings/123/*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
如果您对客户执行此操作,则可以使用IAM策略变量创建替换其用户名的规则:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::my-bucket"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"recordings/${aws:username}/*"
]
}
}
},
{
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::my-bucket/recordings/${aws:username}/*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1229 次 |
| 最近记录: |