Amazon web services AWS IAM策略中的变量资源名称
我在程序中使用“Amazon web services AWS IAM策略中的变量资源名称,amazon-web-services,amazon-s3,amazon-iam,Amazon Web Services,Amazon S3,Amazon Iam,我在程序中使用“标准前缀-{variable}”创建S3存储桶。尝试创建IAM策略,以便用户可以更新、创建和删除帐户中的存储桶,但前提是存储桶名称包含“标准前缀”。即,我不想允许修改帐户中的其他存储桶。我找到了很多方法来限制对特定bucket名称下bucket内资源的访问,但是当bucket名称发生变化时,没有方法限制访问 类似于(似乎不起作用): 例如: 基于用户名的动态名称是我找到的最接近的名称。但是我需要一个通配符作为bucket名称的变量部分: { "Version": "2012-
标准前缀-{variable}
”创建S3存储桶。尝试创建IAM策略,以便用户可以更新、创建和删除帐户中的存储桶,但前提是存储桶名称包含“标准前缀”。即,我不想允许修改帐户中的其他存储桶。我找到了很多方法来限制对特定bucket名称下bucket内资源的访问,但是当bucket名称发生变化时,没有方法限制访问
类似于(似乎不起作用):
例如:
基于用户名的动态名称是我找到的最接近的名称。但是我需要一个通配符作为bucket名称的变量部分:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "sqs:*",
"Resource": "arn:aws:sqs:us-west-2:*:${aws:username}-queue"
}]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::mybucket"],
"Condition": {"StringLike": {"s3:prefix": ["${aws:username}/*"]}}
},
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::mybucket/${aws:username}/*"]
}
]
}
指定存储桶名称中包含的项:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "sqs:*",
"Resource": "arn:aws:sqs:us-west-2:*:${aws:username}-queue"
}]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::mybucket"],
"Condition": {"StringLike": {"s3:prefix": ["${aws:username}/*"]}}
},
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::mybucket/${aws:username}/*"]
}
]
}
这就是最终奏效的政策。创建存储桶时,他们会得到一个名称,例如
标准前缀-20150101
,标准前缀-20150515
,等等。使用此IAM策略的用户可以对这些存储桶执行任何操作,但不能修改帐户中的其他存储桶
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "One",
"Effect": "Allow",
"Action": [
"*"
],
"Resource": [
"arn:aws:s3:::standard_prefix-*"
]
},
{
"Sid": "Two",
"Effect": "Allow",
"Action": [
"s3:List*"
],
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
我不知道为什么我在问题中的“类似于…”的说法不起作用,因为答案基本相同。你的答案和你最初尝试的答案之间的关键区别是
标准前缀
与标准前缀
。注意破折号和下划线。