AWS Switching to an IAM role (AWS CLI)
一,引言
今天額外分享一篇 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 這個引數了。
*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。