一,引言

  今天额外分享一篇 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. 【bzoj 2163】复杂的大门(算法效率--拆点+贪心)

    题目:你去找某bm玩,到了门口才发现要打开他家的大门不是一件容易的事-- 他家的大门外有n个站台,用1到n的正整数编号.你需要对每个站台访问一定次数以后大门才能开启.站台之间有m个单向的传送门,通过传 ...

  2. 【uva 1614】Hell on the Markets(算法效率--贪心)

    题意:有一个长度为N的序列A,满足1≤Ai≤i,每个数的正负号不知.请输出一种正负号的情况,使得所有数的和为0.(N≤100000) 解法:(我本来只想静静地继续做一个口胡选手...←_← 但是因为这 ...

  3. js实现一棵树的生长

    参考链接:https://blog.csdn.net/u010298576/article/details/76609244 HTML网页源码: 1 <!DOCTYPE html> 2 & ...

  4. python代理池的构建3——爬取代理ip

    上篇博客地址:python代理池的构建2--代理ip是否可用的处理和检查 一.基础爬虫模块(Base_spider.py) #-*-coding:utf-8-*- ''' 目标: 实现可以指定不同UR ...

  5. POJ-3984 迷宫问题 (BFS)

    题意:有一个\(5\)X\(5\)的\(01\)图,输出从左上角走到右下角的最短路径. 题解:基础的bfs,这里困难的是如何输出这个最短路径,我们可以用一个结构体来存点和路径,我们每次向外去拓展的时候 ...

  6. cmder设置方法

    一.添加鼠标右键 Cmder.exe /REGISTER ALL 二.添加系统环境变量 我的电脑 > 右键属性 > 高级系统设置 > 环境变量 > 系统变量,在path中添加 ...

  7. Leetcode(11)-盛最多水的容器

    给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两条线,使得 ...

  8. Java中Class.forName()用法和newInstance()方法详解

    1.Class.forName()主要功能 Class.forName(xxx.xx.xx)返回的是一个类, Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就 ...

  9. print函数与转义字符

    一.print函数 作用:1.输出数字. print(520) 2.输出字符串.(注意:输出字符串要添加单引号.双引号或三引号,告诉编译器可直接输出,不用分析) print('you are so b ...

  10. [USACO15JAN]Moovie Mooving G

    [USACO15JAN]Moovie Mooving G 状压难题.不过也好理解. 首先我们根据题意: she does not want to ever visit the same movie t ...