Amazon web services 如何将S3 bucket name后缀与usename前缀匹配
我想在AWS IAM服务中设置一个策略,允许遵循特定模式的用户连接到名称遵循特定模式的S3存储桶 我的用户看起来像Amazon web services 如何将S3 bucket name后缀与usename前缀匹配,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我想在AWS IAM服务中设置一个策略,允许遵循特定模式的用户连接到名称遵循特定模式的S3存储桶 我的用户看起来像archiver\u clientname,我的bucket看起来像clientname\u archive。到目前为止,我通读了一遍又一遍 ${s3:prefix}和${aws:username:suffix}是我编造的一些变量,${s3:prefix}实际上存在,但我不确定这是否符合我的预期。如果能够在不重命名的情况下将我的bucket名称与我的用户名进行匹配,那就太好了,因为否
archiver\u clientname
,我的bucket看起来像clientname\u archive
。到目前为止,我通读了一遍又一遍
${s3:prefix}
和${aws:username:suffix}
是我编造的一些变量,${s3:prefix}
实际上存在,但我不确定这是否符合我的预期。如果能够在不重命名的情况下将我的bucket名称与我的用户名进行匹配,那就太好了,因为否则名称将不会说话,而只是客户名称,尽管我还有其他具有不同用途的bucket。可以交换用户前缀和后缀,也可以使用不同的分隔符。看起来这个策略工具有足够的灵活性来解决我的任务,我就是找不到合适的文档
我也不想为每个用户设置新策略
我会很高兴地回答我的方法是错误的,我会很好地解释为什么我的方法是错误的,以及我可以做些什么。首先,当用户获得bucket列表时,不可能限制返回给用户的列表。因此,不要对“s3:ListAllMyBucket”操作设置条件。他们要么看到所有的桶,要么什么也看不到 接下来,您不能“拆分”用户名。IAM策略语言没有那么复杂。如果您的用户名是“archiver\u username”,那么您应该能够使用资源中的`${aws:username}变量将其与bucket“archiver\u username\u archive”匹配:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::${aws:username}_archive"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::${aws:username}_archive/*"
}
]
}
但是该语言不允许您匹配名为“username\u archive”的bucket。首先,当用户获得bucket列表时,无法限制返回给用户的列表。因此,不要对“s3:ListAllMyBucket”操作设置条件。他们要么看到所有的桶,要么什么也看不到 接下来,您不能“拆分”用户名。IAM策略语言没有那么复杂。如果您的用户名是“archiver\u username”,那么您应该能够使用资源中的`${aws:username}变量将其与bucket“archiver\u username\u archive”匹配:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::${aws:username}_archive"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::${aws:username}_archive/*"
}
]
}
但是该语言不允许您匹配名为“username\u archive”的bucket。太棒了,我必须重新考虑用户命名,但这对我有效。太棒了,我必须重新考虑用户命名,但这对我有效。