一,引言

  今天额外分享一篇 AWS 的技术内容,需要在 EC2 切换到跨账号 IAM 角色(AWS CLI)。假设我们使用两个 AWS 账户,A账号,B账号。我们希望允许 A 账号用于 "iam-role-iam-readonly" 的 AWS IAM Role 的只读权限。而 EC2 实例却位于 B 账户中。该实例包含 "iam-role-ec2" 实例配置文件角色,我们希望 “iam-role-ec2” 允许跨账户 A 中的 IAM Role 的只读权限。所有需要设置 “iam-role-ec2” 的切换角色权限,以及设置 “iam-role-iam-readonly” 的授权实体。接下啦,就正式开始我们今天的内容。

二,正文

1,添加账户A “iam-role-iam-readonly”的角色权限策略

选择 “Access managemrnt =》Roles”,点击 “Create” 创建角色

选择授信实体,我们切换到到 “Another AWS account”(Belonging to you or 3rd party)

输入可以使用此账号的ID,也就是我的值的 B 账号的ID,点击 “Next:Permissions”

权限选择 “IAMReadOnlyAccess”,并且选中所需要的权限,点击 “Next:Tags”

Add tags 是可选择的,我们不需要添加任何操作,直接点击 “Next:Review”

Review页面,我们输入相关参数

Role name:“iam-role-iam-readonly”

点击 “Create role”

创建成功后,我们可以查看到当前 “iam-role-iam-readonly” 的相关信息

2,添加账户B “iam-role-iam-ec2” 的角色权限策略

首先我们需要添加对 A 账号上的 “iam-role-iam-readonly” 的角色切线权限

选择 “Acces management=》Policy",并点击 “Create policy” 创建新的策略

切换到JSON,添加对应的切换 A 账号的 “iam-role-iam-readonly” 的权限

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowIPToAssumeCrossAccountRole",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::xxxxxxxxxxxx:role/iam-role-iam-readonly"
}
]
}

点击 “Next:Tags”

输入Rolicy Name :“iam-pol-sts-iam-readonly”,点击“Create Policy”

创建成功后,我们在策略中找到创建好的Policy “iam-pol-sts-iam-readonly”

接下来,我们需要创建 B 账号上 EC2 使用的角色 “iam-role-ec2”,并且给当前 “iam-role-ec2” 添加刚刚创建好的切换角色的权限

选择相关参数

Select type of trusted entity:“AWS service”

Choose a use case:“EC2”

点击 “Next:Permissions”

选择附加 “iam-pol-sts-iam-readonly”,点击 “Next:Tags”

继续跳过 Add tags 页面

在 Review 页面,输入

Role name:“iam-role-ec2“ 后,点击 ”Create role“

”iam-role-ec2“ 创建成功后,可以点击查看详细信息

3,修改 A 账号角色的受信实体

先复制 B 账号 ”iam-role-ec2“ 的 Role ARN

回到 A 账号下点击 ” “ 编辑 ”iam-role-iam-readonly“ 的 Trust relationships

将刚刚复制好的 B 账号上 ”iam-role-ec2“ 角色的 arn 替换到下图圈中的位置

4,登陆 B 账号上的EC2 虚机,通过切换角色,使用AWS CLI 获取 IAM RoleId

创建EC2 虚拟机,并且赋予 "iam-role-ec2" 角色

接下来 SSH 远程登录到这台 EC2 上尝试执行AWS CLI 命令

aws iam get-role --role-name iam-role-iam-readonly

此时会提示,当前缺少安全Token,也就是我们并没有给当前账号配置 ak,sk

接下来,我们在当前 "~\.aws\config" 的文件中配置新的角色配置,并且该校色必须具有 role_arn 中指定的校色的 sts:AssumeRole 权限

打开 aws 配置文件

vim ~/.aws/config

添加新的角色配置

[profile iam-role-iam-readonly]
role_arn = arn:aws:iam::xxxxxxxxxxxx:role/iam-role-iam-readonly
credential_source = Ec2InstanceMetadata

保存并退出,再次执行aws cli 命令。这次我们在命名中加上 --profile 这个参数

aws iam get-role --role-name iam-role-iam-readonly --profile iam-role-iam-readonly

Bingo!!!,成功, 成功的运行EC2示例配置文件切换到另外的账号中的角色。

如果我们要回复 B 账号的中 EC2 原来的实例配置文件权限,可以不用在 aws cli 命令的结尾加 --profile 这个参数了。

*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。‍

AWS Switching to an IAM role (AWS CLI)的更多相关文章

  1. aws在线技术峰会笔记-基于AWS的Devops最佳实践

    AWS CodeCommit AWS CodePipeline 可以和github集成 可以支持蓝绿部署 微服务架构, API Gateway进行转发

  2. aws部署从无到有(二)windows管理aws

    1 AMI正常启动后会进入下面页面 2 远程链接点击如何连接至您的 Linux 实例进入下载页 Windows下使用 PuTTY连接到 Linux 实例 http://www.chiark.green ...

  3. AWS Nginx Started but not Serving AWS上Nginx服务器无法正常工作

    After install the Nginx on AWS instance, and visit your public ip address, you might see the followi ...

  4. Amazon Web Services (目录)

    一.官方声明 AWS云全球服务基础设施区域列表 AWS产品定价国外区 AWS产品定价中国区 (注意!需要登陆账户才能查看) AWS产品费用预算 AWS区域和终端节点 二.计算 Amazon学习:如何启 ...

  5. AWS EKS 添加IAM用户角色

    作者:SRE运维博客 博客地址: https://www.cnsre.cn/ 文章地址:https://www.cnsre.cn/posts/211203931498/ 相关话题:https://ww ...

  6. AWS S3 CLI的权限bug

    使用AWS CLI在S3上创建了一个bucket,上传文件的时候报以下错误: A client error (AccessDenied) occurred when calling the Creat ...

  7. [Notes] AWS Automation using script and AWS CLI

    (c) 2014 Amazon Web Services, Inc. and its afflialtes, All rights reserved. The content in this file ...

  8. AWS CLI 中使用S3存储

    登录 通过控制面板, 在S3管理器中创建一个新的bucket 所有AWS服务 -> 安全&身份 -> IAM -> 组, 创建一个新的组, 例如 "s3-user& ...

  9. AWS系列-创建 IAM 用户

    创建 IAM 用户(控制台) 官方文档 https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/introduction.html 通过 AWS ...

随机推荐

  1. Codeforce 380A Sereja and Prefixes【二分】

    题意:定义两种操作 1 a ---- 向序列中插如一个元素a 2 a b ---- 将序列的前a个元素[e1,e2,...,ea]重复b次插入到序列中 经过一列操作后,为处于某个位置p的元素是多少.数 ...

  2. 二、Python基础(input、变量名、条件语句、循环语句、注释)

    一.input用法 input在Python中的含义为永远等待,直到用户输入了值,从而将所输入的值赋值另外的一个东西. n=input('请输入......') 接下来用一个例子学习input的用法 ...

  3. cmd控制台Windows服务相关

    1.创建服务 sc create ServerName binpath= "E:\MySql5.5\bin\mysqld.exe" 2.启动服务 sc start ServerNa ...

  4. Vulkan与DX11交互

    Demo演示地址07_wintest 有什么用 在android平台主流是用opengl es,android下vulkan与opengles纹理互通. 而在win平台,主流游戏还用的是DX11,如果 ...

  5. postcss 运用及原理

    postcss 入坑指南 目标: 掌握 postcss 的使用 自定义 postcss 插件 掌握 stylelint 的使用 自定义 stylelint rule 扩展 css parser 解释器 ...

  6. 【转】Kubernetes scheduler学习笔记

    简介 Kubernetes是一个强大的编排工具,可以用来很方便的管理许多台机器,为了使机器的资源利用率提高,同时也尽可能的把压力分摊到各个机器上,这个职责就是由scheduler来完成的. Kuber ...

  7. zookeeper 的监控指标(一)

    一 应用场景描述 在目前公司的业务中,没有太多使用ZooKeeper作为协同服务的场景.但是我们将使用Codis作为Redis的集群部署方案,Codis依赖ZooKeeper来存储配置信息.所以做好Z ...

  8. java-GUI编程学习总结

    狂神说java-GUI编程学习总结 1.简介 2.AWT 2.1.实现如图1-2 (1)面向过程写法 (2)内部类写法 (3)完全改造成面向对象 3.Swing 3.1.鼠标花点 3.2.弹窗 3.3 ...

  9. ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)

    cmd mysql -h localhost -u root -p r然后报错 ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost ...

  10. TCP之“3次握手,4次挥手”问题

    你知道"3次握手,4次挥手"吗? 当面试官问你什么是"3次握手,4次挥手",你是不是要开启"诵经"模式了?作为程序员,要有"刨根问 ...