Amazon web services 如何测试AWS命令行工具的凭据
是否有可以传递给Amazon web services 如何测试AWS命令行工具的凭据,amazon-web-services,aws-cli,Amazon Web Services,Aws Cli,是否有可以传递给aws实用程序的命令/子命令,该命令/子命令可以1)验证~/.aws/credentials文件中的凭据是否有效,以及2)指示凭据属于哪个用户?我正在寻找一些通用的东西,它不会假设用户拥有IAM或任何特定服务的权限 这方面的使用案例是部署时的健全性检查,以确保凭据良好。理想情况下,如果存在无效凭据,可以通过某种方法检查返回值并中止部署。有一条捷径-aws iam get user将告诉您(当前iam用户)的详细信息,前提是用户具有iam权限 有两个CLI调用支持--dry run
aws
实用程序的命令/子命令,该命令/子命令可以1)验证~/.aws/credentials
文件中的凭据是否有效,以及2)指示凭据属于哪个用户?我正在寻找一些通用的东西,它不会假设用户拥有IAM或任何特定服务的权限
这方面的使用案例是部署时的健全性检查,以确保凭据良好。理想情况下,如果存在无效凭据,可以通过某种方法检查返回值并中止部署。有一条捷径-
aws iam get user
将告诉您(当前iam用户)的详细信息,前提是用户具有iam
权限
有两个CLI调用支持--dry run
标志,如aws ec2运行实例
,您可以告诉您是否有必要的config/cred来执行该操作
还有一个--auth dry run
,它检查您是否具有命令所需的权限,而不实际运行命令。如果您具有所需的权限,该命令将返回DryRunOperation;否则,它将返回未经授权的操作。[来自]
您可以从管理控制台列出IAM访问密钥,您可以交叉检查以查看谁被分配了哪个密钥
了解哪个用户/角色拥有哪些权限的最佳方法是使用。使用:aws sts获取呼叫者身份
与其他API/CLI调用不同,无论您的IAM权限如何,它都将始终工作
您将获得以下格式的输出:
{
"Account": "123456789012",
"UserId": "AR#####:#####",
"Arn": "arn:aws:sts::123456789012:assumed-role/role-name/role-session-name"
}
确切值取决于凭据的类型,但通常包括(人类)用户的名称
它使用的标准是成功时给予0,如果您没有凭据,则给予255。我是否建议您最好在询问时这样做?堆栈溢出是专门针对编程问题的。@Tripkinetics是的,我不知道该问什么。在我看来,问题的实质更多的是以编程方式查询API,而不是管理服务器本身,我运行测试的用户得到了一个
AccessDenied
错误,其中包括完整的arn:aws:iam::123…890:user/someone
字符串作为错误输出的一部分。完全可能该用户没有权限自己“获取用户”:-/是的,我有这种情况。在用户ARN旁边的AWS控制台中,它显示N/A,鼠标悬停在上方说明“用户ARN:AWS:iam:…:用户/steve无权在资源:用户steve上执行iam:GetUser”这是一个很好的答案,但如果您使用的是MFA,请注意——它更复杂。使用MFA,您需要使用工作凭证(i)和MFA令牌来获得不同的工作临时凭证(ii),使用此解决方案,您可以获得凭证(i)或(ii)的相同结果。@MarkChackerian情况并非总是如此。我创建了一个用户,其MFA正在使用强制执行。在MFA会话令牌未激活的情况下,如果我执行aws iam get user--profile test MFA
,我会得到:调用GetUser操作时发生错误(AccessDenied)。但是,aws sts获取呼叫者身份--profile test mfa
输出test mfa
的帐户、ARN和用户ID(类似地,在没有激活mfa会话令牌的情况下)。获取错误代码254(未在链接中描述)和消息发生错误(InvalidClientTokenId)调用GetCallerIdentity操作时:请求中包含的安全令牌无效。