AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1012115
Accepted
red888
red888
Asked: 2020-04-14 07:52:02 +0800 CST2020-04-14 07:52:02 +0800 CST 2020-04-14 07:52:02 +0800 CST

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

  • 772

我将 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 实例角色?

amazon-ec2 amazon-web-services amazon-iam
  • 2 2 个回答
  • 508 Views

2 个回答

  • Voted
  1. Best Answer
    kenlukas
    2020-04-14T10:27:56+08:002020-04-14T10:27:56+08:00

    要允许您的帐户担任服务角色,您需要编辑该角色并将您的帐户添加到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.

    获得所需结果的另一种方法是使用Policy Simulator

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

    在此处输入图像描述

    笔记

    无法将 IAM 组用作Principal.

    请注意,组并不是真正的身份,因为它不能在基于资源或信任的策略中被识别为委托人。这只是一次将策略附加到多个用户的一种方式。

    参考

    • 访问策略测试
    • 修改角色(控制台)
    • IAM 用户指南
    • 3
  2. MLu
    2020-04-14T14:09:42+08:002020-04-14T14:09:42+08:00

    您可以从实例中获取凭证并在get-instance-credentials脚本的帮助下在本地使用它。

    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. 将 3 行复制并粘贴export 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"
      }
      

    正如您所看到的,即使是me@my-laptop ,我现在也可以使用test-ec2-role的凭据访问 AWS 。

    通过这种方式,您可以轻松测试 IAM 角色配置、测试您的应用程序等。

    希望有帮助:)

    • 1

相关问题

  • 权限被拒绝(公钥)。从本地 Ubuntu 到 Amazon EC2 服务器的 SSH

  • 管理员如何管理他们的 EC2 EBS 和快照?

  • 云有多大?[关闭]

  • EC2 映像启动

  • 如何将安全组添加到正在运行的 EC2 实例?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve