1. 程式人生 > >AWS Switching to an IAM role (AWS CLI)

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 這個引數了。

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