amazon-web-services - 在 IAM 策略资源中使用标签
问题描述
我可以对 IAM 语句的资源键使用字符串插值吗?我正在尝试根据用户标记为的团队授予对存储桶的访问权限。
这个说法不成立
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::${aws:PrincipalTag/team}.example.com"
}
]
}
如果我${aws:PrincipalTag/team}
用硬编码的团队名称替换它会按预期工作。
解决方案
您可以通过在 iam 角色/用户的策略或 s3 存储桶策略中使用条件键来完成此操作。
IAM 政策
要在 iam 策略中使用条件键,您需要添加一条语句,将用户的 s3 操作限制为已使用特定资源标签标记的资源。这将阻止用户访问没有特定标签的 s3 对象。您可能会发现的一个问题是,您需要确保您希望与之交互的所有对象也都被标记。
iam 策略示例:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws: aws:ResourceTag/owningTeam": "team1"
}
}
}]
}
s3 存储桶策略
要在 s3 存储桶策略中使用条件键,您需要添加一条语句,将存储桶的访问权限限制为具有特定主体标签的用户/角色。用户仍然需要具有执行 s3 操作的权限,但资源策略将限制访问。除了条件键之外,您还可以根据用户/角色进行限制。
存储桶策略示例:
{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Principal": "*",
"Action":"s3:GetObject",
"Resource": "arn:aws:s3:::awsexamplebucket1/*",
"Condition" : {
"StringEquals" : {
"aws:PrincipalTag/team": "team1"
}
}
}
]
}
由于您最终希望利用主体上的标签,因此我建议您使用存储桶策略方法。
资源:
推荐阅读
- javascript - 按时间排序json表
- grafana - 是否可以使用 grafana 将 SQL DB(postgres / mysql)的查询结果写入 influxDB ?
- javascript - 在数据表中始终将空值排序到顶部
- java - 如何更改我的语句以在哈希图中打印对象成员类型的频率?
- python - tmp 文件夹在 s3 存储桶中创建 [Errno 2] 没有这样的文件或目录:'/tmp/plain_file/7A50-99D2-24D9-42BF.tar':FileNotFoundError
- c++ - c++ std::vector 作为类方法的参数传递的函数
- python - 烧瓶运行无法识别 Windows 上的 python-dotenv
- excel - 使用多个条件计数
- sparql - 不一致的维基数据查询结果
- angular - angular 7 有 oboe.js 替代品吗?