如何以用户身份在本地切换到 EC2 实例角色?

如何以用户身份在本地切换到 EC2 实例角色?

我将 ec2 实例角色应用到我的服务器,但我想先在本地自行切换到这些角色以测试权限

我尝试切换到一个但出现错误:

aws sts assume-role --role-arn arn:aws:iam::1234567890:role/myrole --role-session abc

An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::1234567890:user/meeee is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::1234567890:role/myrole

我是帐户管理员。我是否需要修改信任策略或其他内容以允许用户承担 EC2 实例角色?

答案1

要允许您的账户承担服务角色,您需要编辑角色并在 中添加您的账户Principal。操作如下:

IAM-> Roles->Your Service Role进入Trust relationship选项卡并点击Edit trust relationship。您的信任关系将如下所示:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

您需要添加类似于以下内容的 AWS 账户:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com",
        "AWS": "arn:aws:iam::<your AWS account number>:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

然后您将能够通过 获得凭证sts

获得所需结果的另一种方法是使用策略模拟器

在角色的Permissions选项卡中,单击策略左侧的箭头,它将显示一个按钮Simulate policy

在此处输入图片描述

笔记

无法将 IAM 组用作Principal

请注意,组并不是真正的身份,因为它不能在基于资源或信任的策略中被标识为主体。它只是一种将策略同时附加到多个用户的方法。

参考

答案2

您可以从实例中获取凭证,并在以下帮助下在本地使用它获取实例凭证脚本。

  1. 使用所需的 EC2 角色启动您的实例
  2. 跑步get-instance-credentials

    [ec2-user@ip-...] aws-utils $ ./get-instance-credentials
    export AWS_ACCESS_KEY_ID="ASIA5G...ERJGI"
    export AWS_SECRET_ACCESS_KEY="8rTXu4R1...IM2"
    export AWS_SESSION_TOKEN="IQoJb3JpZ2luX2VjEE4aD...4zw=="
    
  3. 复制并粘贴这 3export AWS_*行到你的笔记本电脑上的本地 shell 中

    me@my-laptop ~ $ export AWS_ACCESS_KEY_ID="ASIA5G...ERJGI"
    me@my-laptop ~ $ export AWS_SECRET_ACCESS_KEY="8rTXu4R1...IM2"
    me@my-laptop ~ $ export AWS_SESSION_TOKEN="IQoJb3JpZ2luX2VjEE4aD...4zw=="
    
  4. 验证凭证

    me@my-laptop ~ $ aws sts get-caller-identity
    {
        "UserId": "AROAXYZABC1234:i-0a1b2c3d",
        "Account": "123456789012",
        "Arn": "arn:aws:sts::123456789012:assumed-role/test-ec2-role/i-0a1b2c3d"
    }
    

正如你所看到的我@我的笔记本电脑我现在可以使用以下凭证访问 AWS测试-ec2-角色

这样,您可以轻松测试 IAM 角色配置、测试您的应用程序等。

希望有帮助:)

相关内容