建立角色以將許可委派給 AWS 服務 - AWS Identity and Access Management

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

建立角色以將許可委派給 AWS 服務

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

設定 PassRole 許可時,您應確保使用者傳遞的角色不會具有比您希望使用者具有之許可更多的許可。例如,可能不允許 Alice 執行任何 Amazon S3 動作。如果 Alice 可以將角色傳遞給允許 Amazon S3 動作的服務,則該服務可以在執行任務時代表 Alice 執行 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 文件,以查看要選擇的使用案例。您可以了解如何為角色指派必要的信任和許可政策,以便服務可以代表您擔任角色。您用來控制角色的許可的步驟可能有所不同,端視服務如何定義使用案例,以及是否建立服務連結的角色而定。

IAM console
為 AWS 服務 (IAM 主控台) 建立角色
  1. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

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

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

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

  5. 選擇 Next (下一步)

  6. 對於許可政策,選項取決於您選取的使用案例:

    • 如果服務定義了角色的許可,則您無法選取許可政策。

    • 從一組有限的許可政策中選取。

    • 從所有許可政策中選取。

    • 選取無許可政策,在建立角色之後建立政策,然後將政策連接到角色。

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

    1. 開啟設定許可界限區段,然後選擇使用許可界限來控制角色許可上限

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

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

  8. 選擇 Next (下一步)

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

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

    • 如果服務定義了角色名稱的字首,則可以輸入選用字尾。

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

      重要

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

      • 角色名稱在您的 中必須是唯一的 AWS 帳戶,而且無法依大小寫設為唯一。

        例如,不要同時建立名為 PRODROLEprodrole 的角色。當角色名稱用於政策或 ARN 的一部分時,角色名稱會區分大小寫,但是當角色名稱在主控台中顯示給客戶時,例如在登入過程中,角色名稱不會區分大小寫。

      • 因為其他實體可能會參考角色,所以在建立角色之後,就無法編輯其名稱。

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

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

  12. (選用) 若要協助識別、組織或搜尋角色,請將標籤新增為索引鍵值對。如需在 IAM 中使用標籤的詳細資訊,請參閱《IAM 使用者指南》中的AWS Identity and Access Management 資源的標籤

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

為服務建立角色 (AWS CLI)

從 建立角色 AWS CLI 涉及多個步驟。當您使用 主控台建立角色時,許多步驟都會為您完成,但使用 AWS CLI 時,您必須自行明確執行每個步驟。您必須建立角色,然後為該角色指派許可政策。如果您使用的服務是 Amazon EC2,則還必須建立執行個體描述檔並新增該角色。或者,您也可以設定角色的許可界限

從 建立 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 命令會將名為 ReadOnlyAccess 的 AWS 受管政策連接至名為 ReadOnlyRole 的 IAM 角色:

    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 EC2 AWS 的服務搭配使用,您必須在執行個體設定檔中存放角色。執行個體描述檔是角色的容器,可以在啟動時連接到 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-profile

以下 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-instances CLI 命令,指定 --iam-instance-profile 參數。

為服務建立角色 (AWS API)

從 AWS API 建立角色涉及多個步驟。當您使用主控台建立角色時,有許多步驟會自動為您完成,但是使用 API 的話,您必須自行明確執行每個步驟。您必須建立角色,然後為該角色指派許可政策。如果您使用的服務是 Amazon EC2,則還必須建立執行個體描述檔並新增該角色。或者,您也可以設定角色的許可界限

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

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

  2. 將受管許可政策連接到角色:AttachRolePolicy

    為角色建立內嵌許可政策:PutRolePolicy

  3. (選用) 藉由連接標籤將自訂屬性新增至使用者:TagRole

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

  4. (選用) 設定角色的許可界限PutRolePermissionsBoundary

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

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

建立執行個體描述檔,並將角色存放在其中 (AWS API)
  1. 建立執行個體描述檔:CreateInstanceProfile

  2. 將角色新增至執行個體描述檔:AddRoleToInstanceProfile