本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立角色以將許可委派給 AWS 服務
許多 AWS 服務要求您使用 角色,以允許服務代表您存取其他服務中的資源。服務會擔任代您執行動作的角色稱為服務角色。當角色做為服務的專業用途時,它歸類為服務連結角色。若要查看使用服務連結的角色支援哪些服務,或者服務是否支援任何形式的臨時憑證的詳細資訊,請參閱 AWS 使用 IAM 的 服務。若要了解個別服務如何使用角色,請在表格中選擇服務名稱以查看該服務的文件。
設定 PassRole
許可時,您應確保使用者傳遞的角色不會具有比您希望使用者具有之許可更多的許可。例如,可能不允許 Alice 執行任何 Amazon S3 動作。如果 Alice 可以將角色傳遞給允許 Amazon S3 動作的服務,則該服務可以在執行任務時代表 Alice 執行 Amazon S3 動作。
如需有關角色如何協助您委派許可的詳細資訊,請參閱 角色術語和概念。
服務角色許可
您必須設定許可,允許 IAM 實體 (使用者或角色) 建立或編輯服務角色。
注意
服務連結角色的 ARN 包括服務主體,這在下列政策中以
形式指出。不要嘗試猜測服務主體,因為它是區分大小寫,且格式可以因各 AWS
服務而異。若要檢視服務的服務主體,請參閱該服務連結的角色文件。SERVICE-NAME
.amazonaws.com
允許 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
允許 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 Management Console 來建立 服務的角色。因為有些服務支援多個服務角色,所以請參閱服務的 AWS 文件,以查看要選擇的使用案例。您可以了解如何為角色指派必要的信任和許可政策,以便服務可以代表您擔任角色。您用來控制角色的許可的步驟可能有所不同,端視服務如何定義使用案例,以及是否建立服務連結的角色而定。
為服務建立角色 (AWS CLI)
從 建立角色 AWS CLI 涉及多個步驟。當您使用 主控台建立角色時,許多步驟都會為您完成,但使用 AWS CLI 時,您必須自行明確執行每個步驟。您必須建立角色,然後為該角色指派許可政策。如果您使用的服務是 Amazon EC2,則還必須建立執行個體描述檔並新增該角色。或者,您也可以設定角色的許可界限。
從 建立 AWS 服務的角色 AWS CLI
-
以下
create-role
命令會建立名為 Test-Role 的角色,並將信任政策連接至該角色:aws iam create-role --role-name Test-Role --assume-role-policy-document file://Test-Role-Trust-Policy.json
-
將受管許可政策連接到角色: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
-
(選用) 透過連接標籤來將自訂屬性新增至該角色:aws iam tag-role
如需詳細資訊,請參閱 管理 IAM 角色的標籤 (AWS CLI 或 AWS API)。
-
(選用) 設定角色的許可界限:aws iam put-role-permissions-boundary
許可界限控制角色可以擁有的許可上限。許可界限是一項進階 AWS 功能。
如果您要將角色與 Amazon EC2 或其他使用 Amazon EC2 AWS 的服務搭配使用,您必須在執行個體設定檔中存放角色。執行個體描述檔是角色的容器,可以在啟動時連接到 Amazon EC2 執行個體。執行個體設定檔只能包含一個角色,並且無法增加該限制。如果您使用 建立角色 AWS Management Console,則會為您建立執行個體描述檔,其名稱與角色相同。如需有關執行個體描述檔的詳細資訊,請參閱 使用執行個體設定檔。如需有關如何使用角色啟動 EC2 執行個體的資訊,請參閱《Amazon EC2 使用者指南》中的控制對 Amazon EC2 資源的存取。
建立執行個體設定檔並將角色存放在其中 (AWS CLI)
-
建立執行個體描述檔:aws iam create-instance-profile
-
將角色新增至執行個體描述檔: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) 的角色
-
建立角色:CreateRole
對於角色的信任政策,您可以指定一個檔案位置。
-
將受管許可政策連接到角色:AttachRolePolicy
或
為角色建立內嵌許可政策:PutRolePolicy
-
(選用) 藉由連接標籤將自訂屬性新增至使用者:TagRole
如需詳細資訊,請參閱 管理 IAM 使用者的標籤 (AWS CLI 或 AWS API)。
-
(選用) 設定角色的許可界限:PutRolePermissionsBoundary
許可界限控制角色可以擁有的許可上限。許可界限是一項進階 AWS 功能。
如果您要將角色與 Amazon EC2 或其他使用 Amazon EC2 AWS 的服務搭配使用,您必須在執行個體設定檔中存放角色。執行個體設定檔是角色的容器。每個執行個體設定檔只能包含一個角色,並且無法增加該限制。如果您在 中建立角色 AWS Management Console,則會為您建立執行個體描述檔,其名稱與角色相同。如需有關執行個體描述檔的詳細資訊,請參閱 使用執行個體設定檔。如需有關如何使用角色啟動 Amazon EC2 執行個體的資訊,請參閱《Amazon EC2 使用者指南》中的控制對 Amazon EC2 資源的存取。
建立執行個體描述檔,並將角色存放在其中 (AWS API)
-
建立執行個體描述檔:CreateInstanceProfile
-
將角色新增至執行個體描述檔:AddRoleToInstanceProfile