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

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

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

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

服務角色許可

您必須設定許可,允許 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 建議您只允許 IAM 管理員建立任何服務角色。具有建立角色和連接任何政策之許可的人員可以提升自己的許可。反之,建立一個政策,讓他們只建立所需的角色,或讓系統管理員代表他們建立服務角色。

若要連接允許管理員存取整個 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 建議您只允許 IAM 管理員刪除任何服務角色。反之,建立一個政策,只允許他們刪除所需的角色,或讓系統管理員代表他們刪除服務角色。

若要連接允許管理員存取整個 AWS 帳戶 的政策,請使用 AdministratorAccess AWS 受管政策。

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

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

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

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

  2. 在 IAM 主控台的導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)。

  3. 對於 Select trusted entity (選取信任的實體) 區段,選擇 AWS service (<shared id="AWS"/> 服務)。

  4. 選擇服務的使用案例。服務會定義使用案例,以包含服務所需的信任政策。然後選擇 Next (下一步)。

  5. 可以的話,請選取用於許可政策的政策,或者選擇 Create policy (建立政策) 以開啟新的瀏覽器標籤,並從頭建立新的政策。如需詳細資訊,請參閱 建立 IAM 政策。在您建立政策後,關閉該標籤並返回您的原始標籤。選取您要服務具有之許可政策旁的核取方塊。

    根據您選取的使用案例,服務可能可以允許您執行下列任何操作:

    • 無,因為服務會定義角色的許可。

    • 從有限的一組許可中進行選擇。

    • 從任意許可中進行選擇。

    • 此時不選取政策,稍後建立政策,然後將它們連接至角色。

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

    展開 Permissions boundary (許可界限) 區段,並選擇 Use a permissions boundary to control the maximum role permissions (使用許可界限來控制角色許可上限)。IAM 包含您帳戶中的 AWS 受管和客戶受管政策清單。選取用於許可界限的政策,或者選擇 Create policy (建立政策) 以開啟新的瀏覽器標籤,並從頭建立新的政策。如需詳細資訊,請參閱 建立 IAM 政策。在您建立政策後,關閉該標籤並返回您的原始標籤,以選取用於許可界限的政策。

  7. 選擇 Next (下一步)。

  8. 針對 Role name (角色名稱),服務會定義角色名稱自訂程度。如果服務定義角色名稱,則無法編輯此選項。在其他情況下,服務可能會定義角色的字首,並且可允許您輸入選用後綴。有些服務可讓您指定角色的完整名稱。

    如果可能,請輸入角色名稱或角色名稱後綴,以協助您識別此角色的用途。角色名稱在您的 AWS 帳戶內必須是獨一無二的。它們無法透過大小寫進行區分。例如,您無法建立名為 PRODROLEprodrole 的角色。因為有其他 AWS 資源可能會參照角色,所以您無法在建立角色之後編輯角色名稱。

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

  10. Step 1: Select trusted entities (步驟 1:選取受信任的實體) 或者 Step 2: Add permissions (步驟 2:新增許可) 區段中選擇 Edit (編輯),可編輯使用案例和角色許可。

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

  12. 檢閱角色,然後選擇 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 Linux 執行個體使用者指南》中的控制 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 Command Line Interface

當您建立角色時,這個範例在第一個命令包含下列信任政策。此信任政策允許 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 主控台,則請在 Configure Instance Details (設定執行個體詳細資訊) 頁面中指定執行個體設定檔名稱。如果您使用 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 Linux 執行個體使用者指南》中的控制 Amazon EC2 資源的存取

建立執行個體設定檔並將角色存放在其中 (AWS API)

  1. 建立執行個體設定檔:CreateInstanceProfile

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