授予使用者將角色傳遞至 AWS 服務的許可 - AWS Identity and Access Management

授予使用者將角色傳遞至 AWS 服務的許可

若要設定許多 AWS 服務,您必須將 IAM 角色傳遞至服務。這樣可讓該服務稍後擔任該角色,並代表您執行動作。對於大多數服務,您只需在設定期間將角色傳遞服務一次,該服務不需要每次都要擔任角色。例如,假設您的應用程式正在 Amazon EC2 執行個體上執行。該應用程式需要暫時性憑證進行身分驗證,需要許可來授權應用程式在 AWS 中執行動作。當設定應用程式時,您必須將角色傳遞到 EC2,與提供使些憑證的執行個體搭配使用。您為在執行個體上執行的應用程式定義許可,做法是將 IAM 政策連接到角色。應用程式在每次需要時擔任該角色,並在角色允許下執行動作。

若要將角色 (和其許可) 傳遞至 AWS 服務,使用者必須具有「傳遞角色」至服務的許可。這可幫助管理員確定只有核准的使用者可以透過授予許可的角色來設定服務。為了讓使用者將角色傳遞至 AWS 服務,您必須將 PassRole 許可授予使用者的 IAM 使用者、角色或群組。

注意

您無法使用 ResourceTag/key-name 條件金鑰,限制傳遞連接至該角色之角色型標籤的許可。如需詳細資訊,請參閱 控制 AWS 資源的存取許可

當您建立服務連結的角色時,您也必須擁有傳遞該角色到服務的許可。有些服務會自動在您在該服務中執行動作時,在您的帳戶中建立服務連結角色。例如,Amazon EC2 Auto Scaling 會在您第一次建立 Auto Scaling 群組時,為您建立 AWSServiceRoleForAutoScaling 服務連結角色。如果您在沒有 PassRole 許可的情況下嘗試建立 Auto Scaling 群組,您會收到錯誤。如果選擇預設角色,則可能不需要 iam:PassRole 許可。若要了解哪些服務支援服務連結角色,請參閱 可搭配 IAM 運作的AWS服務。若要了解哪些服務在您於服務中執行動作時會自動建立服務連結角色,請選擇 Yes (是) 連結,並檢視該服務的服務連結角色文件。

使用者可以在任何 API 操作中,以參數方式傳遞角色 ARN,而該操作便是使用角色將許可指派給服務。然後,該服務會檢查該使用者是否擁有 iam:PassRole 許可。若要限制使用者只傳遞核准的角色,您可以使用 IAM 政策陳述式的 Resources 元素來篩選 iam:PassRole 許可。

您可以在 JSON 政策中使用 Condition 元素來測試包含在所有 AWS 請求請求內容中的鍵值。若要進一步了解如何在政策中使用條件金鑰,請參閱 IAM JSON 政策元素:Conditioniam:PassedToService 條件金鑰可用來指定能傳遞角色之服務的服務委託人。若要進一步了解如何在政策中使用 iam:PassedToService 條件金鑰,請參閱 iam:PassedToService

範例 1

假設您想要授予使用者在啟動執行個體時,能夠將任何已核准的一組角色傳遞到 Amazon EC2 服務。您需要三種元素:

  • 連接到角色的 IAM 許可政策,其決定角色可以做什麼。將許可侷限在角色必須執行的動作,以及角色針對那些動作所需的資源。您可以使用 AWS 受管或客戶建立的 IAM 許可政策。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "A list of the permissions the role is allowed to use" ], "Resource": [ "A list of the resources the role is allowed to access" ] } }
  • 角色的「信任政策」,其允許服務擔任角色。例如,您可以將以下信任政策連接到角色及 UpdateAssumeRolePolicy 動作。此信任政策可讓 Amazon EC2 使用角色和連接到該角色的許可。

    { "Version": "2012-10-17", "Statement": { "Sid": "TrustPolicyStatementThatAllowsEC2ServiceToAssumeTheAttachedRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  • 連接到 IAM 使用者的 IAM 許可政策,其允許使用者僅傳遞已核准的角色。通常是將 iam:GetRole 新增至 iam:PassRole,讓使用者可以取得要傳遞之角色的詳細資訊。在這個範例中,使用者可以僅傳遞存在於指定的帳戶,名稱開頭為 EC2-roles-for-XYZ- 的角色:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/EC2-roles-for-XYZ-*" }] }

現在,使用者可以使用已指派的角色來啟動 Amazon EC2 執行個體。在執行個體上執行的應用程式,可透過執行個體描述檔中繼資料來存取角色的暫時性憑證。連接到該角色的許可政策決定了執行個體可以執行哪些操作。

範例 2

Amazon Relational Database Service (Amazon RDS) 支援增強型監控功能。此功能可讓 Amazon RDS 使用代理程式來監控資料庫執行個體。同時也允許 Amazon RDS 將指標記錄到 Amazon CloudWatch Logs。若要啟用此功能,您必須建立服務角色以提供 Amazon RDS 許可來監控和寫入指標到您的日誌。

為 Amazon RDS 增強型監控建立角色

  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 選擇 Roles (角色),然後選擇 Create role (建立角色)

  3. 選擇 AWS Service ( 服務) 角色類型,然後選擇 Amazon RDS Role for Enhanced Monitoring (增強型監控的 Amazon RDS 角色) 服務。然後選擇 Next: Permissions (下一步:許可)。

  4. 選擇許可政策 AmazonRDSEnhancedMonitoringRole

  5. 選擇 Next: Tags (下一步:標籤)

  6. (選用) 藉由連接標籤做為金鑰/值組,將中繼資料新增至使用者。如需有關在 IAM 中使用標籤的詳細資訊,請參閱 標記 IAM 資源

  7. 選擇 Next:Review (下一步:檢閱)

  8. 針對 Role name (角色名稱),輸入可協助您識別此角色用途的角色名稱。角色名稱在您的 AWS 帳戶內必須是獨一無二的,同時區分大小寫。例如,您無法建立名為 PRODROLEprodrole 的角色。因為有各種實體可能會參考角色,所以您無法在建立角色之後編輯角色名稱。

  9. (選用) 針對 Role description (角色說明),輸入新角色的說明。

  10. 檢閱角色,然後選擇 Create role (建立角色)

角色會自動取得信任政策,授予 monitoring.rds.amazonaws.com 服務許可以擔任角色。在那之後,Amazon RDS 可以執行 AmazonRDSEnhancedMonitoringRole 政策允許的所有動作。

您想要啟用增強型監控的使用者需要的政策是包含一個可讓使用者傳遞角色的陳述式。使用您的帳號並將角色名稱取代為您在步驟 8 提供的名稱:

{ "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/RDS-Monitoring-Role" }

您可以將此陳述式與在另一個政策中的陳述式併在一起,或是將它放在它自己的政策中。若要改為指定使用者可以傳遞任何開頭為 RDS- 的角色,您可以將資源 ARN 中的角色名稱取代為萬用字元,例如:

"Resource": "arn:aws:iam::account-id:role/RDS-*"