AWS - 授予对具有特定标签的所有资源的访问权限
AWS - Granting access to all resources with specific tags
我正在尝试创建一个可以完全访问所有具有特定标签的资源的 IAM 组。
例如,如果 S3 存储桶和 EC2 实例被标记为 env:qa
,组 project-qa
应该拥有对它们的完全访问权限。
到目前为止,我已经尝试了以下策略:
{
"Version": "2012-10-17",
"Statement": [
{
Effect: "Allow",
Action: "*",
Resource: "*",
Condition: {
"StringEquals": {
"aws:ResourceTag/env": "qa"
}
}
}
]
}
我创建了一个帐户来测试这个,但是当我浏览存储桶时,我立即被告知我缺少 s3:ListAllMyBuckets
操作的权限 - 我认为 Action: "*"
[=15= 会涵盖该操作]
是的,ListAllMyBuckets
操作包含在 *
中,但它的“资源”没有标记,因为它的资源实际上不是真正存在的资源,因此您不能执行该操作手术。你要么有 ListAllMyBuckets
用于 *
,要么没有,没有办法根据桶来限制它,因为你没有列出桶,你列出了所有桶和这个“所有桶" 没有标签,它真的什么都没有,它真的不存在。请参阅 https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html:ListAllMyBuckets
的 Resource types
是空的,没有实际资源可以与之交互。
列出存储桶中的对象可以基于标签工作,但不是一开始就列出所有存储桶。同样的事情会在很多地方发生,列出不尊重正在列出的资源的许可。这样看:您可能不被允许对存储桶执行任何操作,您不能浏览它、配置它,但您仍然可以在列表中查看它。
解决此问题的唯一方法是在发现缺少这些特殊权限后立即逐一添加。
请注意,有些实际的 AWS 资源是不可标记的,因此您采用该策略根本不会成功。
对上述政策要非常小心,您授予了销毁资源的权限,例如 route53
DeleteHostedZone 和 指出的许多资源没有'完全遵循基于标签的条件。
这对我来说是一种来之不易的教训。编写策略时请将此文档AWS services that work with IAM放在手边。
这让您了解哪种服务支持哪种限制,例如:
- 资源级权限
- 基于源的策略
- 基于标签的授权
- 临时凭证
- 服务相关角色
坦率地说,如果我是你,我会使用我想要的选择性允许操作,因为默认情况下在 IAM 中所有操作都被拒绝。
我正在尝试创建一个可以完全访问所有具有特定标签的资源的 IAM 组。
例如,如果 S3 存储桶和 EC2 实例被标记为 env:qa
,组 project-qa
应该拥有对它们的完全访问权限。
到目前为止,我已经尝试了以下策略:
{
"Version": "2012-10-17",
"Statement": [
{
Effect: "Allow",
Action: "*",
Resource: "*",
Condition: {
"StringEquals": {
"aws:ResourceTag/env": "qa"
}
}
}
]
}
我创建了一个帐户来测试这个,但是当我浏览存储桶时,我立即被告知我缺少 s3:ListAllMyBuckets
操作的权限 - 我认为 Action: "*"
[=15= 会涵盖该操作]
是的,ListAllMyBuckets
操作包含在 *
中,但它的“资源”没有标记,因为它的资源实际上不是真正存在的资源,因此您不能执行该操作手术。你要么有 ListAllMyBuckets
用于 *
,要么没有,没有办法根据桶来限制它,因为你没有列出桶,你列出了所有桶和这个“所有桶" 没有标签,它真的什么都没有,它真的不存在。请参阅 https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html:ListAllMyBuckets
的 Resource types
是空的,没有实际资源可以与之交互。
列出存储桶中的对象可以基于标签工作,但不是一开始就列出所有存储桶。同样的事情会在很多地方发生,列出不尊重正在列出的资源的许可。这样看:您可能不被允许对存储桶执行任何操作,您不能浏览它、配置它,但您仍然可以在列表中查看它。
解决此问题的唯一方法是在发现缺少这些特殊权限后立即逐一添加。
请注意,有些实际的 AWS 资源是不可标记的,因此您采用该策略根本不会成功。
对上述政策要非常小心,您授予了销毁资源的权限,例如 route53
DeleteHostedZone 和
这对我来说是一种来之不易的教训。编写策略时请将此文档AWS services that work with IAM放在手边。
这让您了解哪种服务支持哪种限制,例如:
- 资源级权限
- 基于源的策略
- 基于标签的授权
- 临时凭证
- 服务相关角色
坦率地说,如果我是你,我会使用我想要的选择性允许操作,因为默认情况下在 IAM 中所有操作都被拒绝。