如何授予我的 Amazon EC2 執行個體存取權給另一個 AWS 帳戶中的 Amazon S3 儲存貯體?

2 分的閱讀內容
0

我想使用 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體,在另一個帳戶中存取我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。如何在不在執行個體上儲存憑證的情況下授予此存取權?

解決方法

**注意事項:**授予執行個體對 Amazon S3 儲存貯體存取權的步驟,類似於授予另一個帳戶中其他 AWS 資源的存取權。

請按照以下步驟,授予帳戶 A 中的 Amazon EC2 執行個體對於另一個帳戶 (帳戶 B) 中儲存貯體的存取權。

在帳戶 B 中,建立 IAM 角色

1.    使用帳戶 B 登入 AWS 管理主控台

2.    開啟 AWS Identity and Access Management (IAM) 主控台

3.    在導覽窗格中,選擇 角色

4.    選擇建立角色

5.    針對選取可信實體類型,請選擇另一個 AWS 帳戶

6.    針對帳戶 ID,請輸入帳戶 A 的帳戶 ID。

7.    選擇下一步: 權限

8.    連接政策至委派存取 Amazon S3 的角色。例如,此政策會針對儲存在儲存貯體中的物件授予 s3:GetObject 的存取權:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
            ]
        }
    ]
}

**注意事項:**您可以根據使用案例所需的 Amazon S3 儲存貯體層級和物件層級權限修改 IAM 政策。

9.    選擇下一步: 新增標籤

10.    您可以將選用標籤新增至角色。或者,您可以將這些欄位保留空白,然後選擇下一步: 檢閱

11.    針對角色名稱,請輸入角色的名稱。

12.    選擇建立角色

從帳戶 B 取得角色的 ARN

1.    從 IAM 主控台的導覽窗格中,選擇角色

2.    選擇您建立的 IAM 角色。

3.    請注意針對角色 ARN 列出的值。

從帳戶 A 建立另一個角色 (執行個體設定檔) 並將其連接至執行個體

1.    使用帳戶 A 登入 AWS 管理主控台

2.    開啟 IAM 主控台

3.    從導覽窗格中,選擇角色

4.    選擇建立角色

5.    針對選取可信實體類型,請選擇 AWS 服務

6.    針對選擇將使用此角色的服務,請選擇 EC2

7.    選擇下一步: 權限

8.    選擇下一步: 標籤

9.    您可以將選用標籤新增至角色。或者,您可以將這些欄位保留空白,然後選擇下一步: 檢閱

10.    針對角色名稱,請輸入角色的名稱。

11.    選擇建立角色

12.    從角色清單中,選擇您剛建立的角色。

13.    選擇新增內嵌政策,然後選擇 JSON 檢視。

14.    輸入以下政策。將 arn:aws:iam::111111111111:role/ROLENAME 取代您在帳戶 B 中建立的 IAM 角色的 Amazon Resource Name (ARN)。

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

15.    選擇檢閱政策

16.    針對名稱,請輸入政策的名稱。

17.    選擇建立政策

18.    連接 IAM 角色 (執行個體設定檔) 至您用來存取 Amazon S3 儲存貯體的 Amazon EC2 執行個體。

從 Amazon EC2 執行個體,為 CLI 組態檔案中的角色建立設定檔

注意事項: 如果您使用 SSH 和工作階段管理員連線至 EC2 執行個體,則必須同時針對 ec2-user 和 ssm-user 執行這些步驟。

1.    連接到 Amazon EC2 執行個體。如需詳細資訊,請參閱連線至您的 Linux 執行個體連線至您的 Windows 執行個體

2.    連線至執行個體後,確認目錄是否已有名為 ~/.aws 的資料夾。

若要尋找 ~/.aws 資料夾,請執行下列 ls 命令以列出目錄:

ls -l ~/.aws

3.    如果找到 ~/.aws 資料夾,則繼續進行下一步。如果目錄還沒有 ~/.aws 資料夾,則執行 mkdir 命令建立資料夾:

mkdir ~/.aws/

4.    在 ~/.aws 資料夾內,使用文字編輯器建立一個檔案。將檔案命名為 config

5.    在檔案中,輸入下列文字。以您附加至執行個體的角色名稱取代 enterprofilename。然後,將 arn:aws:iam::111111111111:role/ROLENAME 取代您在帳戶 B 中建立的角色 ARN。

[profile enterprofilename]
role_arn = arn:aws:iam::111111111111:role/ROLENAME

credential_source = Ec2InstanceMetadata

6.    儲存檔案。

確認執行個體設定檔可以擔任該角色

若要確認執行個體的角色 (執行個體設定檔) 可以在帳戶 B 中擔任角色,請在連線至執行個體時執行下列命令。以連接至執行個體的角色名稱取代 profilename

$aws sts get-caller-identity --profile profilename

此命令會傳回類似下列內容的回應:

"Account": "11111111111",

"UserId": "AROAEXAMPLEID:sessionName",

"Arn": "arn:aws:sts::111111111111:assumed-role/ROLENAME/sessionName"

確認 "Arn" 的值與您在帳戶 B 中建立的角色 ARN 相符。

驗證對 Amazon S3 儲存貯體的存取權

若要驗證您的執行個體是否可以存取 Amazon S3 儲存貯體,請在連線至執行個體時執行此清單命令。以連接至執行個體的角色名稱取代 profilename

aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile profilename

如果您的執行個體可以成功存取儲存貯體,則您會收到列出儲存貯體內容的回應,例如:

PRE Hello/
2018-08-15 16:16:51 89 index.html

相關資訊

IAM 教學課程: 使用 IAM 角色委派跨 AWS 帳戶的存取權

AWS 官方
AWS 官方已更新 2 年前