【问题标题】:Given an AWS Access / Secret Key Pair, how do I retrieve its IAM permissions?给定一个 AWS 访问/密钥对,我如何检索其 IAM 权限?
【发布时间】:2017-02-22 20:29:14
【问题描述】:

鉴于仅输入了一个 AWS 访问密钥和一个 AWS 密钥,我如何使用 AWS 开发工具包来查找该账户可以执行哪些类型的权限?

我想为客户执行 XYZ,因此客户需要向我提供访问密钥和秘密密钥,以便以编程方式执行 XYZ。但是,在尝试执行任何这些操作之前,我想验证他们提供给我的凭据是否可以访问某些特权,例如能够创建 S3 对象或能够启动 EC2 实例。

这样,我可以在代表他们做某事之前验证访问密钥和秘密密钥是否有权做某事。

【问题讨论】:

    标签: amazon-web-services aws-sdk amazon-iam


    【解决方案1】:

    您可以使用SimulatePrincipalPolicy API 来模拟附加到 IAM 实体的一组 IAM 策略如何与 API 操作列表和 AWS 资源一起使用,以确定策略的有效权限。

    实体可以是 IAM 用户、组或角色。如果您指定用户,则模拟还包括附加到用户所属组的所有策略。

    您需要为“SimulatePrincipalPolicy”API 提供该用户的 ARN 作为 PolicySourceArn 输入参数(无需使用可选的 CallerArn 输入参数)。如果您有访问密钥 ID 和秘密访问密钥,则可以通过调用GetUser API使用该用户凭据来检索用户的 ARN,即,无需指定 用户名输入参数。如果未包含用户名,则 GetUser API 默认为发出请求的用户。

    【讨论】:

    • 如果我有 CallerArn 但我只有访问密钥和密钥,这可以工作。因此,问题可能变成“我如何仅通过知道或使用用户的访问或密钥来查找用户的 ARN?”
    • 我已更新我的答案,包括如何获取用户 ARN。请记住,您不需要使用 CallerArn 参数。您只需要 PolicySourceArn
    • 请查看我上面的答案 [stackoverflow.com/a/42402517/649408] - 要获得 ARN,请查看我的其他答案 [stackoverflow.com/a/31837458/649408]
    • 我喜欢你的两个答案。我的解决方案两种都使用。我使用给定的密钥从 SDK 构建了一个 IAM 客户端,然后我调用了不带参数的 GetUser,它返回客户端用来访问 API 的用户。从那里,我得到了结果中的 ARN 和用户名。然后,我可以对我真正想要运行的内容进行试运行,也可以使用 SimulatePrinciplePolicy 调用。你的两个答案都对我有帮助。谢谢你的信息!
    【解决方案2】:

    我建议使用 AWS CLI 并为 CLI 命令使用 --dry-run 标志。我不确定有多少 AWS CLI 操作支持 --dry-run 操作,更不用说标签级别/资源级别的限制了。

    --dry-run 标志会在不实际执行请求的情况下尝试检查您是否有权运行 API。

    我还看到了测试(回归)的困难,因为 AWS 有 60 多种服务,而仅 EC2 就有 227 个 API 命令 [截至今天]。也许这可能是您使用 sed、awk、grep 构建 shell 脚本[并将其发布到 GITHUB]

    的地方

    SDK 也支持这一点 - 它可能比 CLI 方法更容易

    【讨论】:

    • 好像不是到处都支持这个子句。例如。运行aws s3 cp s3://blablabla . --recursive --dry-run 给出Unknown options: --dry-run
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多