為什麼我的 Amazon EC2 執行個體使用 IAM 使用者憑證而非角色憑證?

1 分的閱讀內容
0

我將 AWS Identity and Access Management (IAM) 角色附加到 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。不過,Amazon EC2 執行個體會使用 IAM 使用者進行 API 呼叫,而不是使用 IAM 角色。

簡短描述

AWS Command Line Interface (AWS CLI) 使用一組憑證提供者依序尋找 AWS 憑證資料。使用的憑證取決於憑證提供者的順序和優先順序。如需詳細資訊,請參閱組態設定和優先順序

解決方法

依照指示尋找 IAM 使用者 ID 和 IAM 使用者憑證的儲存位置。然後,使用 AWS CLI 管理 IAM 憑證資料,並捨棄較高的優先順序設定。

**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請確定您使用的是最新版本的 AWS CLI

尋找 IAM 使用者 ID 並取得 IAM 使用者憑證位置

1.    執行下列 get-caller-identity 指令,以確認使用哪些 IAM 憑證進行 API 呼叫:

aws sts get-caller-identity

您會收到類似下列內容的輸出:

{

    "Account": "123456789012",

    "UserId": "AIDACKCEVSQ6C2EXAMPLE",

    "Arn": "arn:aws:iam::123456789012:user/ExampleIAMuser"

}

在此範例輸出中,使用的 IAM 憑證為 ExampleIAMuser

2.    使用 -debug 選項來檢查類似下列內容的使用者憑證的位置:

aws s3 ls --debug
2020-03-28 02:04:29,478 - MainThread - botocore.credentials - INFO - Found credentials in shared credentials file: ~/.aws/credentials

在此範例輸出中,IAM 使用者憑證會儲存在 .aws/credentials 檔案中。由於這些憑證的優先順序高於角色憑證,因此 IAM 使用者憑證可用來進行 API 呼叫。

使用 AWS CLI 管理 IAM 憑證,並捨棄較高優先順序設定

請使用下列最佳實務:

  • 請確定您不要搭配 AWS CLI 使用 --profile 選項。
  • 取消設定或刪除所有環境變量
  • 對於 configure 命令,刪除 .aws/credentials 資料夾中的證明文件。然後,刪除 .aws 資料夾以設定執行個體設定檔預設憑證。
  • 如果是在 .aws/config 檔案中設定的設定檔,請刪除設定檔。然後,刪除 .aws 資料夾。

移除 IAM 憑證的組態設定優先順序後,請執行 get-caller-identity 命令,以驗證 IAM 角色憑證類似下列內容:

aws sts get-caller-identity

{
    "UserId": "AROACKCEVSQ6C2EXAMPLE:i-01773d4a8ed647342",
    "Account": "123456789012",
    "Arn": "arn:aws:sts::123456789012:assumed-role/ExampleInstanceRole/i-01773d4a8ed647342"
}

在此範例輸出中,使用的 IAM 憑證屬於 IAM 角色 ExampleInstanceRole


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