建立服務連結角色 - AWS Identity and Access Management

建立服務連結角色

服務連結角色是一種獨特的 IAM 角色類型,可直接連結到 AWS 服務。服務連結的角色由服務預先定義,並包含所有該服務代表您呼叫其他 AWS 服務所需的許可。連結的服務也定義您如何建立、修改和刪除服務連結的角色。服務可能會自動建立或刪除角色。做為服務中精靈或程序一部分,它也許可讓您建立、修改或刪除角色。或者,它可能要求您使用 IAM 來建立或刪除角色。不論採用何種方式,服務連結角色可簡化設定服務流程,因為您不必手動新增服務許可,以代表您完成動作。

注意

請記得,服務角色與服務連結角色不同。服務角色是服務擔任的 IAM 角色,可代您執行動作。IAM 管理員可以從 IAM 內建立、修改和刪除服務角色。如需詳細資訊,請參閱《IAM 使用者指南》中的建立角色以委派許可權給 AWS 服務。服務連結角色是一種連結到 AWS 服務 的服務角色類型。服務可以擔任代表您執行動作的角色。服務連結角色會顯示在您的 AWS 帳戶 中,並由該服務所擁有。IAM 管理員可以檢視,但不能編輯服務連結角色的許可。

連結的服務定義其服務連結角色的許可,除非另有定義,否則僅有該服務可以擔任其角色。定義的許可包括信任政策和許可政策,並且該許可政策不能連接到任何其他 IAM 實體。

在您刪除角色之前,您必須首先刪除它們的相關資源。如此可保護您 的資源,避免您不小心移除資源的存取許可。

提示

如需哪些服務支援使用服務連結角色的資訊,請參閱 可搭配 IAM 運作的 AWS 服務,並尋找 Service-Linked Role (服務連結角色) 欄中顯示 Yes (是) 的服務。選擇具有連結的 Yes (是),以檢視該服務的服務連結角色文件。

服務連結角色許可

您必須設定 IAM 實體 (使用者或角色) 的許可,允許使用者或角色建立或編輯服務連結角色。

注意

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

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

將下列政策新增至需要建立服務連結角色的 IAM 實體。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*", "Condition": {"StringLike": {"iam:AWSServiceName": "SERVICE-NAME.amazonaws.com"}} }, { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*" } ] }

若要允許 IAM 實體建立任何服務連結角色

將下列陳述式新增至需要建立服務連結角色的 IAM 實體的許可政策,或包含所需政策的任何服務角色。此政策陳述式不允許 IAM 實體連接政策到角色。

{ "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/*" }

若要允許 IAM 實體編輯任何服務連結角色的說明

將下列陳述式新增至需要編輯服務連結角色說明或任何服務角色的 IAM 實體的許可政策。

{ "Effect": "Allow", "Action": "iam:UpdateRoleDescription", "Resource": "arn:aws:iam::*:role/aws-service-role/*" }

若要允許 IAM 實體刪除特定服務連結角色

將下列陳述式新增至需要刪除服務連結角色的 IAM 實體的許可政策。

{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*" }

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

將下列陳述式新增至需要刪除服務連結角色 (但並非服務角色) 的 IAM 實體許可政策。

{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws:iam::*:role/aws-service-role/*" }

允許 IAM 實體將現有角色傳遞到服務

有些 AWS 服務可讓您將現有角色傳遞到服務,而不是建立新的服務連結角色。若要執行此操作,使用者必須擁有傳遞角色給服務的許可。在需要傳遞角色之 IAM 實體的許可政策中,新增下列陳述式。透過這個政策陳述式,實體也可以檢視角色清單,並從中選擇要傳遞的角色。如需詳細資訊,請參閱授予使用者將角色傳遞至 AWS 服務的許可

{ "Sid": "PolicyStatementToAllowUserToListRoles", "Effect": "Allow", "Action": ["iam:ListRoles"], "Resource": "*" }, { "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/my-role-for-XYZ" }

具有服務連結角色的間接許可

可將服務連結角色授予的許可間接轉移給其他使用者和角色。當服務連結角色正由 AWS 服務使用時,該服務連結角色可以使用自己的許可來呼叫其他 AWS 服務。這表示使用者和角色 (具有呼叫使用服務連結角色之服務的許可) 可能會間接存取該服務連結角色所能存取的服務。

例如,當您建立 Amazon RDS 資料庫執行個體時,RDS 的服務連結角色如果尚未存在,則會自動建立。此服務連結角色可讓 RDS 代您呼叫 Amazon EC2、Amazon SNS、Amazon SNS、Amazon CloudWatch Logs 和 Amazon Kinesis。如果您允許帳戶中的使用者和角色修改或建立 RDS 資料庫,則他們可能可以透過呼叫 RDS 的方式,與 Amazon EC2、Amazon SNS、Amazon CloudWatch Logs 日誌和 Amazon Kinesis 資源間接互動,因為 RDS 會使用其服務連結角色存取這些資源。

建立服務連結角色

您用來建立服務連結角色的方法取決於服務。在某些情況下,您不需要手動建立一個服務連結角色。例如,當您在服務中完成特定動作 (例如建立資源),該服務可能會為您建立服務連結角色。或者,您若在服務開始支援服務連結角色之前已在使用該服務,則服務可能已在您的帳戶中自動建立角色。如需進一步了解,請參閱 顯示在我的 AWS 帳戶中的新角色

在其他情況下,服務可能支援使用服務主控台、API 或 CLI 手動建立服務連結角色。如需哪些服務支援使用服務連結角色的資訊,請參閱 可搭配 IAM 運作的 AWS 服務,並尋找 Service-Linked Role (服務連結角色) 欄中顯示 Yes (是) 的服務。若要了解服務是否支援建立服務連結角色,請選擇連結以檢視該服務的服務連結角色的文件。

如果服務不支援建立角色,則可以使用 IAM 來建立服務連結角色。

重要

服務連結角色算作您的 AWS 帳戶 中的 IAM 角色限制,但是如果您已達到限制,仍然可以在您的帳戶中建立服務連結角色。只有服務連結角色可以超過限制。

建立服務連結角色 (主控台)

在 IAM 中建立服務連結角色之前,了解連結的服務是否自動建立服務連結角色,此外,了解是否您可以從服務主控台、API 或 CLI 建立角色。

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

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

  3. 選擇 AWSService (服務) 角色類型。

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

  5. 選擇一或多個許可政策以連接至角色。根據您選取的使用案例,服務可能可以執行下列任何操作:

    • 定義角色使用的許可。

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

    • 可讓您從任何許可中進行選擇。

    • 可讓您目前無法選取政策、稍後建立政策,然後將它們連接至角色。

    選取可指派您希望角色擁有之許可政策旁的核取方塊,然後選擇下一步

    注意

    您指定的許可適用於任何使用角色的實體。角色預設沒有任何許可。

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

    如果可能,輸入要新增至預設名稱的角色名稱後綴。此後綴可協助您識別此角色的用途。角色名稱在您的 AWS 帳戶內必須是獨一無二的。它們無法透過大小寫進行區分。例如,您無法建立名為 <service-linked-role-name>_SAMPLE<service-linked-role-name>_sample 的角色。因為有各種實體可能會參照角色,所以您無法在建立角色之後編輯角色名稱。

  7. (選用) 在 Description (說明) 中,編輯新服務連結角色的說明。

  8. 您不能在建立角色時,將標籤連接至服務連結的角色。如需有關在 IAM 中使用標籤的詳細資訊,請參閱 AWS Identity and Access Management 資源的標籤

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

建立服務連結角色 (AWS CLI)

在 IAM 中建立服務連結角色之前,了解連結的服務是否自動建立服務連結角色,並且了解是否您可以從服務的 CLI 建立角色。如果不支援服務 CLI,您可以使用 IAM 命令,使用服務擔任該角色所需的信任政策與內嵌政策來建立服務連結角色。

建立服務連結角色 (AWS CLI)

執行以下命令:

aws iam create-service-linked-role --aws-service-name SERVICE-NAME.amazonaws.com

建立服務連結角色 (AWS API)

在 IAM 中建立服務連結角色之前,了解連結的服務是否自動建立服務連結角色,並且了解是否您可以從服務的 API 建立角色。如果不支援服務 API,您可以使用 AWS API,使用服務擔任該角色所需的信任政策與內嵌政策來建立服務連結角色。

若要建立服務連結角色 (AWS API)

使用 CreateServiceLinkedRole API 呼叫。在請求中指定 SERVICE_NAME_URL.amazonaws.com 的服務名稱。

例如,要建立 Lex Bots 服務連結的角色,使用 lex.amazonaws.com