给定 AWS 访问/秘密密钥对,我如何检索其 IAM 权限?

Given an AWS Access / Secret Key Pair, how do I retrieve its IAM permissions?

如果只输入一个AWS Access Key和一个AWS Secret Key,我如何使用AWS SDK查询账户可以执行什么样的权限?

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

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

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

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

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

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

--dry-运行 标志会尝试检查您是否有权 运行 或 API 实际上没有执行请求。

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

中发布的地方

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