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

时间:2017-02-22 20:29:14

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

如果仅输入AWS Access Key和AWS Secret Key,我如何使用AWS SDK查询该帐户可以执行的权限类型?

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

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

enter image description here

enter image description here

我也看到测试(回归)的难度,因为AWS有60多个服务,而EC2单独有227个API命令[截至今天]。也许这可能是您使用sed,awk,grep构建shell脚本[并在GITHUB中发布]的地方

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