如何解决使用AWS API:给IAM用户,获取当前有效的IAM策略文档
我很难找到正确的API调用来回答这个问题:给定一个IAM用户,管理该用户的有效IAM政策文档是什么?
看来我可以结合几个API调用并在客户端中串联策略来完成上述操作:
-
aws iam list-groups-for-user --user-name my-user
- 对于每个返回的组:
aws iam list-attached-group-policies --group-name my-group
-
aws iam list-attached-user-policies --user-name my-user
- 从步骤2和步骤3返回的串联策略。
- 对于每个策略:
aws iam get-policy --policy-arn my-policy-arn
- 然后针对每个策略再次:
aws iam get-policy-version --policy-arn my-policy-arn -version-id my-version
这至少是5个API调用,最多是无限数量的调用。我甚至都不愿写这个逻辑,因为用户属于几个组,而这些组包含数十个或数百个策略是很常见的。
我肯定在某个地方缺少一个API端点吗?
类似这样的内容:aws iam get-effective-user-policy --user-name my-user
解决方法
AWS并不真正支持此功能,因为IAM负责人可以执行的操作分布在整个AWS上。它们没有存储在任何地方。发出请求时会应用访问决策,因此您应该从发出请求的角度考虑IAM策略。
AWS API收到请求后,this is what kicks in at a high level以确定呼叫是否被授权:
- 基于身份的策略(附加到用户,其组或角色的策略)
- 基于资源的策略(用户请求的资源附带的策略;例如S3存储桶或EC2实例)
- IAM权限限制
- 服务控制策略(SCP)(通过AWS组织定义)
- 会话策略(在通过临时凭据和
AssumeRole
创建会话时适用)
以上每种方法都需要Allow
操作,以便授予用户访问权限。
因此,您看到,所授予的实际访问权限分布在相当多的地方。上面的列表也仅适用于单个帐户。跨帐户访问更加分散。
如果您仅对基于身份的策略感兴趣,那么您正在执行的API调用将涵盖该策略,但是其他任何一个都可能具有Deny
效果,即使基于身份的策略也无法采取措施政策允许采取这种措施,因此您只会得到部分了解。
根据您使用它的目的,我会尝试不提前全面了解用户的访问情况,因为实际上您将要为每个用户查询每个AWS服务。安全审核是个例外,在这种情况下,会有slew of tools会尝试为您执行此操作,但是要注意:IAM是一个复杂的野兽,审核是一个棘手的问题。
,如果您仅对某些AWS服务的权限感兴趣,则还可以考虑使用以下命令。但是,我认为您不会在一个API调用中找到“一站式服务”来获取所有权限。
aws iam list-policies-granting-service-access
。
我不了解您的用例,但是根据我的经验,大多数用例都可以还原。为了检查策略是否合规,请检查用户是否具有关键权限,...在您的情况下可能不适用,但我仍然喜欢共享它。
为了检查这些事情,可以使用AWS Config评估用户是否有权调用一组特定的操作。可以使用AWS IAM策略模拟器API来完成。
https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulatePrincipalPolicy.html
,不一定要有一个有效的用户策略。实际上,所应用的策略是直接或通过组分配给该IAM用户的所有策略的总和。取决于您的实际用例,它可能是一个策略文件,也可能不是。
请记住,如果一个允许操作的规则与另一个拒绝操作的规则之间存在冲突,则拒绝规则将获胜。
您可以模拟用户是否能够在IAM控制台中执行某些操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。