amazon-web-services - 使用 AWS API : Given IAM User, 获取当前有效的 IAM 政策文档

标签 amazon-web-services amazon-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 委托(delegate)人可以执行的操作是分布在 AWS 中的;它们不会存储在任何一个地方。在发出请求时应用访问决策,因此您应该根据发出的请求来考虑 IAM 策略。
    当 AWS API 收到请求时,this is what kicks in at a high level确定调用是否被授权:

  • 基于身份的策略 (附加到用户、他们的组或他们的角色的策略)
  • 基于资源的策略 (附加到用户请求的资源的策略;例如,S3 存储桶或 EC2 实例)
  • IAM 权限边界
  • 服务控制策略 (SCP) (通过 AWS 组织定义)
  • session 策略 (当通过临时凭证和 AssumeRole 创建 session 时适用)

  • 以上每一项都需要Allow授予用户访问权限的操作。
    因此,您会看到,授予的实际访问权限分布在很多地方。上面的列表也仅适用于单个帐户。跨账户访问更加分散。
    如果您只对基于身份的策略感兴趣,那么您正在进行的 API 调用将涵盖它,但其他任何一个都可能有 Deny阻止该操作的效果,即使基于身份的策略允许该操作,所以您只能获得部分图片。
    根据您使用它的目的,我会尽量不要提前全面了解用户的访问情况,因为您实际上是要为每个用户查询每一个 AWS 服务。异常(exception)情况是安全审计,在这种情况下有 slew of tools它将尝试为您执行此操作,但请注意:IAM 是一个复杂的野兽,对其进行审计是一个棘手的问题。

    关于amazon-web-services - 使用 AWS API : Given IAM User, 获取当前有效的 IAM 政策文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63564226/

    相关文章:

    tomcat - 对 EC2 上文件系统的 HTTP 访问

    node.js - 如何通过 API 使用 Cognito token ?

    amazon-web-services - AWS Elastic Beanstalk : Environment Fails to Launch

    javascript - 使用 Lambda IAM 角色以管理员身份对 Cognito 进行身份验证

    python - AWS CDK 如何在 IAM 策略中包含委托(delegate)人?

    aws-lambda - AWS IAM 执行角色无权在 EC2 上为特定 VPC 调用 CreateNetworkInterface

    amazon-web-services - 为什么某些 AWS 服务要求请求者拥有 IAM 策略?

    python - 如何使用 boto3 将文件或数据写入 S3 对象

    amazon-web-services - 如何从 SAM 模板中的 Lambda 访问 DynamoDB 表?

    amazon-web-services - 资源名称中没有前缀/后缀的 CloudFormation(即 CloudWatch 日志组)