建立角色以將權限委派給 AWS 服務 - AWS 身分和存取權管理

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立角色以將權限委派給 AWS 服務

許多 AWS 服務都要求您使用角色來允許服務代表您存取其他服務中的資源。服務會擔任代您執行動作的角色稱為服務角色。當角色為服務提供特殊用途時,會將其歸類為服務連結角色。若要查看使用服務連結的角色支援哪些服務,或者服務是否支援任何形式的臨時憑證的詳細資訊,請參閱 AWS 與之合作的服務 IAM。若要了解個別服務如何使用角色,請在表格中選擇服務名稱以查看該服務的文件。

設定PassRole權限時,您應確定使用者未傳遞角色所擁有的權限超過您希望使用者擁有的角色。例如,愛麗絲可能不被允許執行任何 Amazon S3 動作。如果愛麗絲可以將角色傳遞給允許 Amazon S3 動作的服務,則該服務可以在執行任務時代表愛麗絲執行 Amazon S3 動作。

如需有關角色如何協助您委派許可的詳細資訊,請參閱 角色術語和概念

服務角色許可

您必須設定權限,才能允許IAM實體 (使用者或角色) 建立或編輯服務角色。

注意

對ARN於服務連結角色,包含服務主體,在下列原則中將其指示為SERVICE-NAME.amazonaws.com。不要嘗試猜測服務主體,因為它是區分大小寫,且格式可以因各 AWS 服務而異。若要檢視服務的服務主體,請參閱該服務連結的角色文件。

允許IAM實體建立特定服務角色

將下列原則新增至需要建立服務角色的IAM實體。此政策可讓您建立所指定服務且具有特定名稱的服務角色。然後,您可以將受管或內嵌政策連接至該角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:CreateRole", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME" } ] }

允許IAM實體建立任何服務角色

AWS 建議您只允許系統管理使用者建立任何服務角色。具有建立角色和連接任何政策之許可的人員可以提升自己的許可。反之,建立一個政策,讓他們只建立所需的角色,或讓系統管理員代表他們建立服務角色。

若要附加可讓系統管理員存取您的整個原則 AWS 帳戶,請使用AdministratorAccess AWS 受管理的原則。

允許實IAM體編輯服務角色

將下列原則新增至需要編輯服務角色的IAM實體。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EditSpecificServiceRole", "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "iam:ListRolePolicies", "iam:PutRolePolicy", "iam:UpdateRole", "iam:UpdateRoleDescription" ], "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME" }, { "Sid": "ViewRolesAndPolicies", "Effect": "Allow", "Action": [ "iam:GetPolicy", "iam:ListRoles" ], "Resource": "*" } ] }

允許IAM實體刪除特定服務角色

將下列陳述式新增至需要刪除指定服務角色之IAM實體的權限原則。

{ "Effect": "Allow", "Action": "iam:DeleteRole", "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME" }

允許IAM實體刪除任何服務角色

AWS 建議您只允許系統管理使用者刪除任何服務角色。反之,建立一個政策,只允許他們刪除所需的角色,或讓系統管理員代表他們刪除服務角色。

若要附加可讓系統管理員存取您的整個原則 AWS 帳戶,請使用AdministratorAccess AWS 受管理的原則。

建立 AWS 服務的角色 (主控台)

您可以使用 AWS Management Console 來建立服務的角色。因為有些服務支援多個服務角色,所以請參閱服務的 AWS 文件,以查看要選擇的使用案例。您可以了解如何為角色指派必要的信任和許可政策,以便服務可以代表您擔任角色。您用來控制角色的許可的步驟可能有所不同,端視服務如何定義使用案例,以及是否建立服務連結的角色而定。

若要建立 AWS 服務 (IAM控制台) 的角色
  1. 登入 AWS Management Console 並開啟IAM主控台,位於https://console.aws.amazon.com/iam/

  2. 在IAM主控台的導覽窗格中,選擇 [角色],然後選擇 [建立角色]。

  3. 對於 Trusted entity type (信任的實體類型),請選擇 AWS 服務

  4. 對於服務或使用案例,請選擇服務,然後選擇使用案例。服務會定義使用案例,以包含服務所需的信任政策。

  5. 選擇 Next (下一步)

  6. 對於權限原則,選項取決於您選取的使用案例:

    • 如果服務定義了角色的權限,您就無法選取權限原則。

    • 從一組有限的權限原則中進行選取。

    • 從所有權限原則中選取。

    • 選取 [無權限原則],建立角色後建立原則,然後將原則附加至角色。

  7. (選用) 設定許可界限。這是進階功能,可用於服務角色,而不是服務連結的角色。

    1. 開啟 [設定權限界限] 區段,然後選擇 [使用權限界限] 控制最大角色權限

      IAM包含您帳戶中受 AWS 管理和客戶管理的政策清單。

    2. 選取用於許可界限的政策。

  8. 選擇 Next (下一步)

  9. 對於角色名稱,選項取決於服務:

    • 如果服務定義了角色名稱,您就無法編輯角色名稱。

    • 如果服務定義了角色名稱的前置詞,您可以輸入選擇性的尾碼。

    • 如果服務未定義角色名稱,您可以命名角色。

      重要

      命名角色時,請注意下列事項:

      • 角色名稱在您的內部必須是唯一的 AWS 帳戶,並且不能根據大小寫使用唯一。

        例如,請勿建立同時命名為PRODROLE和的角色prodrole。當角色名稱用於策略中或作為一部分時ARN,角色名稱會區分大小寫,但是當主控台中的客戶 (例如在登入程序期間) 顯示角色名稱時,角色名稱不區分大小寫。

      • 您無法在建立角色之後編輯該角色的名稱,因為其他實體可能會參照該角色。

  10. (選擇性) 在說明中,輸入角色的說明。

  11. (選擇性) 若要編輯角色的使用案例和權限,請在步驟 1:選取信任的實體步驟 2:新增權限區段中,選擇編輯

  12. (選擇性) 若要協助識別、組織或搜尋角色,請將標籤新增為鍵值配對。若要取得有關在中使用標籤的更多資訊IAM,請參閱《使IAM用指南》中的標記IAM資源

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

為服務建立角色 (AWS CLI)

從中建立角色 AWS CLI 需要多個步驟。當您使用主控台建立角色時,許多步驟都是為您完成的,但是 AWS CLI 您必須明確地自行執行每個步驟。您必須建立角色,然後為該角色指派許可政策。如果您正在使用的服務是 AmazonEC2,則還必須創建一個實例配置文件並將角色添加到其中。或者,您也可以設定角色的許可界限

若要從中建立 AWS 服務的角色 AWS CLI
  1. 以下 create-role 命令會建立名為 Test-Role 的角色,並將信任政策連接至該角色:

    aws iam create-role --role-name Test-Role --assume-role-policy-document file://Test-Role-Trust-Policy.json

  2. 將受管許可政策附加到角色:aws iam attach-role-policy

    例如,下列attach-role-policy命令會將名為的 AWS 受管理策略附加ReadOnlyAccess到名為的IAM角色ReadOnlyRole

    aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess --role-name ReadOnlyRole

    為角色建立內嵌許可政策:aws iam put-role-policy

    若要新增嵌許可政策,請參閱以下範例:

    aws iam put-role-policy --role-name Test-Role --policy-name ExamplePolicy --policy-document file://AdminPolicy.json

  3. (選用) 透過連接標籤來將自訂屬性新增至該角色:aws iam tag-role

    如需詳細資訊,請參閱管理IAM角色的標籤 (AWS CLI 或 AWS API)

  4. (可選)設置角色的許可邊界aws iam put-role-permissions-boundary

    許可界限控制角色可以擁有的許可上限。權限界限是一 AWS 項進階功能。

如果您要將該角色與 Amazon EC2 或其他使用 Amazon 的 AWS 服務搭配使用EC2,則必須將該角色存放在執行個體設定檔中。執行個體設定檔是角色的容器,可在啟動時連接至 Amazon EC2 執行個體。執行個體設定檔只能包含一個角色,並且無法增加該限制。如果您使用建立角色 AWS Management Console,則系統會以與角色相同的名稱為您建立執行個體設定檔。如需有關執行個體描述檔的詳細資訊,請參閱 使用例項設定檔。有關如何使用角色啟動EC2執行個體的詳細資訊,請參閱 Amazon EC2使用者指南中的控制對 Amazon EC2 資源的存取。

建立執行個體設定檔並將角色存放在其中 (AWS CLI)
  1. 建立執行個體設定檔:aws iam create-instance-profile

  2. 將角色添加到實例配置文件:aws iam add-role-to-instance 配置文件

下面的示 AWS CLI 例命令集演示了創建角色和附加權限的前兩個步驟。它還說明兩個建立執行個體設定檔和新增角色至描述檔的步驟。此範例信任政策允許 Amazon EC2 服務擔任該角色並檢視 example_bucket Amazon S3 儲存貯體。此範例也假定您在執行 Windows 的用戶端電腦上執行,並且已使用您的帳戶憑證和區域設定您的命令列界面。若要取得更多資訊,請參閱〈規劃 AWS 指令行介面〉。

當您建立角色時,這個範例在第一個命令包含下列信任政策。此信任政策允許 Amazon EC2 服務擔任該角色。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" } }

當您使用第二個命令的政策,您必須將許可政策連接到角色。以下範例許可政策允許角色僅在 example_bucket Amazon S3 儲存貯體上執行 ListBucket 動作。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::example_bucket" } }

若要建立此 Test-Role-for-EC2 角色,您必須先將之前的信任政策以名稱 trustpolicyforec2.json 和之前名為 permissionspolicyforec2.json 的許可政策儲存到您本機 policies 磁碟機的 C: 目錄。然後,您可以使用以下命令來建立角色、連接政策、建立執行個體設定檔,並新增角色到執行個體設定檔。

# Create the role and attach the trust policy that allows EC2 to assume this role. $ aws iam create-role --role-name Test-Role-for-EC2 --assume-role-policy-document file://C:\policies\trustpolicyforec2.json # Embed the permissions policy (in this example an inline policy) to the role to specify what it is allowed to do. $ aws iam put-role-policy --role-name Test-Role-for-EC2 --policy-name Permissions-Policy-For-Ec2 --policy-document file://C:\policies\permissionspolicyforec2.json # Create the instance profile required by EC2 to contain the role $ aws iam create-instance-profile --instance-profile-name EC2-ListBucket-S3 # Finally, add the role to the instance profile $ aws iam add-role-to-instance-profile --instance-profile-name EC2-ListBucket-S3 --role-name Test-Role-for-EC2

啟動EC2執行處理時,如果您使用 AWS 主控台,請在「設定執行處理詳細資訊」頁面中指定執行個體設定檔名稱。如果您使用指aws ec2 run-instancesCLI令,請指定--iam-instance-profile參數。

建立服務的角色 (AWS API)

從中建立角色 AWS API需要多個步驟。當您使用主控台建立角色時,許多步驟都是為您完成的,但是API您必須明確地自行執行每個步驟。您必須建立角色,然後為該角色指派許可政策。如果您正在使用的服務是 AmazonEC2,則還必須創建一個實例配置文件並將角色添加到其中。或者,您也可以設定角色的許可界限

若要建立 AWS 服務的角色 (AWS API)
  1. 建立角色:CreateRole

    對於角色的信任政策,您可以指定一個檔案位置。

  2. 將受管理的權限原則附加至角色:AttachRolePolicy

    建立角色的內嵌權限原則:PutRolePolicy

  3. (選擇性) 透過附加標籤將自訂屬性新增至使用者:TagRole

    如需詳細資訊,請參閱管理IAM使用者的標籤 (AWS CLI 或 AWS API)

  4. (選擇性) 設定角色的權限範圍PutRolePermissionsBoundary

    許可界限控制角色可以擁有的許可上限。權限界限是一 AWS 項進階功能。

如果您要將該角色與 Amazon EC2 或其他使用 Amazon 的 AWS 服務搭配使用EC2,則必須將該角色存放在執行個體設定檔中。執行個體設定檔是角色的容器。每個執行個體設定檔只能包含一個角色,並且無法增加該限制。如果您在中建立角色 AWS Management Console,則系統會以與角色相同的名稱為您建立執行個體設定檔。如需有關執行個體描述檔的詳細資訊,請參閱 使用例項設定檔。有關如何使用角色啟動 Amazon EC2 執行個體的詳細資訊,請參閱 Amazon EC2使用者指南中的控制對 Amazon EC2 資源的存取。

若要建立執行個體設定檔並將角色儲存在其中 (AWS API)
  1. 建立執行個體設定檔:CreateInstanceProfile

  2. 將角色新增至執行個體設定檔:AddRoleToInstanceProfile