【问题标题】:ec2-user vs root IAM instance profile changeec2-user 与根 IAM 实例配置文件更改
【发布时间】:2021-03-26 17:13:07
【问题描述】:

我有一个基于 CloudFormation 的应用程序部署,它使用 IAM 实例配置文件从 Marketplace AMI 创建一个 Amazon Linux 2 EC2 实例。在 CloudFormation 模板中,我通过 cfn-init 运行脚本,其中包含一些 AWS CLI 命令,例如 ssm get-parameter,并且还使用 mount 和 amazon-efs-utils 安装 EFS 卷。这一直很有效。

现在,我有一个客户正在使用通用 AMI 和 CloudFormation 模板在其 AWS 账户中运行。对于他们来说,cfn-init 失败是因为 cfn-init 以 root 身份运行,但奇怪的是 root 没有 IAM 权限并且无法运行脚本或基于 efs-helper 的挂载,即使实例配置文件在那里。但是 ec2-user 确实拥有来自 Instance Profile 的 IAM 权限!

总结一下:

ec2-user 是否拥有来自实例配置文件的 IAM 权限。

# logged in as ec2-user
aws ssm get-parameter --name "/aParameter"

返回结果

root 没有实例配置文件中的 IAM 权限。

# logged in as ec2-user
sudo aws ssm get-parameter --name "/aParameter"

An error occurred (ParameterNotFound) when calling the GetParameter operation: 

我希望在实例中运行的所有用户如果没有通过其他方式明确地进行身份验证,就会将实例配置文件作为他们的凭据。我在客户的环境中看不到任何会导致这种情况的东西 - 我在想可能是服务控制策略 - 但他们没有。

有没有人看到这种行为并有解决办法?

提前非常感谢.....

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-iam


    【解决方案1】:

    我不知道 ec2-user 和实例配置文件之间的关系。 ec2-user 是 linux 上的用户。 实例配置文件是附加到 EC2 实例的 IAM 角色。 我认为您可以使用aws s3 ls 等其他命令进行检查。 顺便说一句,您正在使用 sudo 和 root。

    【讨论】:

    • 您也可以试试 aws iam get-user,它可能会显示正在使用的凭据。
    • 我猜你提到了实例配置文件凭证和用户凭证的优先级。遵循此文档:aws.amazon.com/premiumsupport/knowledge-center/… => 用户凭据的优先级高于角色凭据。他应该遵循文档并检查凭据。
    【解决方案2】:

    原来 AWS 凭证留在了 AMI 的根用户中。 :-/

    Asri Badlah 的 aws iam get-user 建议显示了问题所在。谢谢!

    实例配置文件无权访问 get-user,但 sudo get-user 可以并从 /root/.aws 中的凭据显示用户。

    【讨论】:

      猜你喜欢
      • 2016-10-01
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 2018-01-10
      • 2018-02-28
      • 1970-01-01
      • 2021-03-20
      • 2018-10-20
      相关资源
      最近更新 更多