为啥我在 AWS 管理控制台中有权限,但在 AWS CLI 中没有某些操作的权限?

Posted

技术标签:

【中文标题】为啥我在 AWS 管理控制台中有权限,但在 AWS CLI 中没有某些操作的权限?【英文标题】:Why do I have authority in AWS management console but not in AWS CLI for some operations?为什么我在 AWS 管理控制台中有权限,但在 AWS CLI 中没有某些操作的权限? 【发布时间】:2019-08-05 06:29:30 【问题描述】:

我有一个 AWS 根账户,并创建了一个附加了 Administrator 策略的 IAM 用户。问题是当我在aws-cli中进行aws ec2 create-key-pair之类的操作时,出现UnauthorizedOperation错误。但是,如果我使用同一个 IAM 用户登录管理控制台,我可以毫无问题地创建密钥对。

我仔细检查了我的访问密钥 ID 和秘密访问密钥是否正确。我什至重新创建了这些并在 aws-cli 中进行了配置,以确保我使用的是具有管理员权限的用户帐户。这些都不起作用

是否有任何我不知道的设置启用了 aws-cli 访问权限?

===============下面是最新更新================

我使用aws sts get-caller-identify 检查了我的用户信息,它显示了我公司的帐户 ID。我尝试再次运行aws configure,然后运行aws sts get-caller-identity,它仍然显示我正在使用我公司的帐户。如何从 CLI 切换用户?

【问题讨论】:

从终端调用aws sts get-caller-identity,检查用户名是否与您在管理控制台中使用的相同 请编辑您的问题以显示分配给 IAM 用户的策略。 @MatusDubrava 感谢您的回复。我尝试调用该命令,但发现我正在使用不同帐户 ID 下的同名用户。我确定我使用的是正确的访问密钥 ID 和秘密访问密钥。我是如何使用其他帐户登录的? IAM 用户是特定于账户的。您不能跨多个账户使用一个 IAM 用户(不是说跨账户权限),这意味着您只能登录到创建用户的账户。您确定您使用的是正确的用户配置文件吗?请注意,您可以将--profile 标志传递给aws configure 以创建其他配置文件,但是您需要将此--profile 标志传递给每个命令,否则将使用默认用户,这可能与您实际使用的用户不同。 @MatusDubrava 感谢您的解释。我发现当我使用aws configure 设置帐户信息时,它会显示我的个人帐户信息。但是之后如果我使用aws sts get-caller-identity,就会立即显示我公司的帐户信息。我检查了凭证文件,它只有一个 [默认] 帐户。看起来 aws-cli 根本没有从 ~/.aws/credentials 读取凭据。有什么方法可以完全重置配置? 【参考方案1】:

这是一个令人难以置信的大坑……但是 aws cli 在哪里查找凭据是有优先级的。

IAM credentials not found on AWS CLI

这里问题的答案解释得透彻。

【讨论】:

【参考方案2】:

如果这对任何人都有帮助,我的问题是我的 AWS 账户使用了 MFA。我从未考虑过您也必须在命令行上执行此操作。以下是亚马逊关于该主题的指南:

How do I use an MFA token to authenticate access to my AWS resources through the AWS CLI?

【讨论】:

以上是关于为啥我在 AWS 管理控制台中有权限,但在 AWS CLI 中没有某些操作的权限?的主要内容,如果未能解决你的问题,请参考以下文章

aws Lambda函数访问策略

AWS beanstalk cgi-bin 权限

为啥 spring-boot 应用程序无法在 AWS 中运行,但在本地运行良好?

AWS WorkDocs对于用户权限的管理

Terraform - 具有编程访问权限的 AWS IAM 用户

为AWS北京区管理控制台集成ADFS訪问