如何测试 AWS 命令行工具的凭证

问题描述 投票:0回答:3

是否有一个命令/子命令可以传递给

aws
实用程序,可以 1) 验证
~/.aws/credentials
文件中的凭据是否有效,以及 2) 给出凭据属于哪个用户的一些指示?我正在寻找通用的东西,不会对用户是否有权访问 IAM 或任何特定服务做出任何假设。

此用例是部署时健全性检查,以确保凭据良好。理想情况下,应该有某种方法来检查返回值并在存在无效凭据时中止部署。

amazon-web-services amazon-iam aws-cli
3个回答
479
投票

使用 GetCallerIdentity:

aws sts get-caller-identity

与其他 API/CLI 调用不同,无论您的 IAM 权限如何,它都将始终有效。

您将获得以下格式的输出:

{
    "Account": "123456789012", 
    "UserId": "AR#####:#####", 
    "Arn": "arn:aws:sts::123456789012:assumed-role/role-name/role-session-name"
}

确切的 ARN 格式取决于凭证的类型,但通常包括(人类)用户的名称。

它使用标准 AWS CLI 错误代码 成功时给出 0,如果您没有凭证则给出 255。


103
投票

有一种简单的方法 -

aws iam get-user
会告诉您是谁(当前 IAM 用户)的详细信息 - 前提是用户拥有
iam
权限。

有几个 CLI 调用支持

--dry-run
标志,例如
aws ec2 run-instances
,您可以告诉您是否有必要的配置/信用来执行该操作。

还有

--auth-dry-run
,它会检查您是否拥有该命令所需的权限,而无需实际运行该命令。如果您拥有所需的权限,该命令将返回 DryRunOperation;否则,返回 UnauthorizedOperation。 [ 来自 AWS 文档 - 常用选项 ]

您将能够从管理控制台列出 IAM 访问密钥,您可以交叉检查以查看谁已分配了哪个密钥。

了解哪个用户/角色拥有哪些权限的最佳方法是使用 IAM 策略模拟器


0
投票

我也需要同样的东西,所以我写了

aws-role

我还希望该命令输出注销前剩余的会话时间:

我在许多 shell 脚本中使用它来自动化我的 AWS 使用——对我来说效果很好。

我的脚本解析

~/.aws/credentials

PS:也在考虑增强它以支持JSON输出

© www.soinside.com 2019 - 2024. All rights reserved.