使用服務連結角色 - AWS Identity and Access Management

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

使用服務連結角色

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

注意

請記得,服務角色與服務連結角色不同。服務角色是服務擔任的 IAM 角色,可代您執行動作。IAM 管理員可以從 IAM 內建立、修改和刪除服務角色。如需更多資訊,請參閱 IAM 使用者指南中的建立角色以委派許可給 AWS 服務。服務連結角色是一種連結至. AWS 服務服務可以擔任代表您執行動作的角色。服務連結角色會顯示在您的中, AWS 帳戶 且屬於服務所有。IAM 管理員可以檢視,但不能編輯服務連結角色的許可。

連結的服務定義其服務連結角色的許可,除非另有定義,否則僅有該服務可以擔任其角色。定義的許可包括信任政策和許可政策,且該許可政策無法附加至其他 IAM 實體。

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

提示

如需哪些服務支援使用服務連結角色的資訊,請參閱 AWS 與 IAM 搭配使用的服務,並尋找 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 CloudWatch 日誌和亞馬遜 Kinesis。如果您允許帳戶中的使用者和角色修改或建立 RDS 資料庫,他們或許可以透過撥打 RDS 與 Amazon EC2、Amazon SNS、Amazon CloudWatch 日誌日誌和 Amazon Kinesis 資源間接互動,因為 RDS 會使用其服務連結角色存取這些資源。

建立服務連結角色

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

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

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

重要

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

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

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

建立服務連結角色 (主控台)
  1. 登入 AWS Management Console 並開啟身分與存取權管理主控台,網址為 https://console.aws.amazon.com/iam/

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

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

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

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

    • 定義角色使用的許可。

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

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

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

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

    注意

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

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

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

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

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

  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

編輯服務連結角色

您用來編輯服務連結角色的方法取決於服務。有些服務也許可讓您從服務主控台、API 或 CLI 編輯服務連結角色的許可。不過,因為有各種實體可能會參考服務連結角色,所以您無法在建立角色之後變更角色名稱。您可以從 IAM 主控台、API 或 CLI 編輯任何角色的說明。

如需哪些服務支援使用服務連結角色的資訊,請參閱 AWS 與 IAM 搭配使用的服務,並尋找 Service-Linked Role (服務連結角色) 欄中顯示 Yes (是) 的服務。若要了解服務是否支援編輯服務連結角色,請選擇連結以檢視該服務的服務連結角色的文件。

編輯服務連結角色描述 (主控台)

您可以使用 IAM 主控台來編輯服務連結角色的說明。

編輯服務連結角色的說明 (主控台)
  1. 在 IAM 主控台的導覽窗格中,選擇 Roles (角色)。

  2. 選擇要修改之角色的名稱。

  3. Role description (角色說明) 的最右邊,選擇 Edit (編輯)。

  4. 在方塊中輸入新的描述,然後選擇 Save (儲存)

編輯服務連結角色描述 (AWS CLI)

您可以使用中的 IAM 命令 AWS CLI 來編輯服務連結角色的說明。

變更服務連結角色的說明 (AWS CLI)
  1. (選用) 若要檢視角色的目前說明,請執行下列命令:

    aws iam get-role --role-name ROLE-NAME

    透過 CLI 命令,使用角色名稱 (而非 ARN) 來參照角色。例如,如果角色具有下列 ARN:arn:aws:iam::123456789012:role/myrole,請將角色參照為 myrole

  2. 若要更新服務連結角色的說明,請執行下列命令:

    aws iam update-role --role-name ROLE-NAME --description OPTIONAL-DESCRIPTION

編輯服務連結角色說明 (AWS API)

您可以使用 AWS API 編輯服務連結角色的說明。

若要變更服務連結角色 (AWS API) 的說明
  1. (選用) 若要檢視角色的目前說明,請呼叫以下操作並指定角色的名稱:

    AWS API:GetRole

  2. (選用) 若要更新角色的說明,請呼叫以下操作並指定角色的名稱 (和選用描述):

    AWS API:UpdateRole

刪除服務連結角色

您用來建立服務連結角色的方法取決於服務。在某些情況下,您不需要手動刪除一個服務連結角色。例如,當您在服務中完成特定動作 (例如移除資源),該服務可能會為您刪除服務連結角色。

在其他情況下,服務可能支援從服務主控台、API 或 AWS CLI手動刪除服務連結角色。

如需哪些服務支援使用服務連結角色的資訊,請參閱 AWS 與 IAM 搭配使用的服務,並尋找 Service-Linked Role (服務連結角色) 欄中顯示 Yes (是) 的服務。若要了解服務是否支援刪除服務連結角色,請選擇連結以檢視該服務的服務連結角色的文件。

如果服務不支援刪除角色,您可以從 IAM 主控台、API 或 AWS CLI刪除服務連結角色。若您不再使用需要服務連結角色的功能或服務,我們建議您刪除該角色。如此一來,您就沒有未主動監控或維護的未使用實體。然而,務必清除您的服務連結角色,之後才能將其刪除。

清除服務連結角色

您必須先確認服務連結角色沒有作用中的工作階段,並移除該角色使用的資源,之後才能使用 IAM 將其刪除。

檢查服務連結角色是否於 IAM 主控台有作用中的工作階段
  1. 登入 AWS Management Console 並開啟身分與存取權管理主控台,網址為 https://console.aws.amazon.com/iam/

  2. 在 IAM 主控台的導覽窗格中,選擇 Roles (角色)。然後,選擇服務連結角色的名稱 (而非核取方塊)。

  3. 在所選角色的 Summary (摘要) 頁面中,選擇 Access Advisor (存取 Advisor) 分頁。

  4. Access Advisor (存取 Advisor) 分頁中,檢閱服務連結角色的近期活動。

    注意

    如果您不確定服務是否正在使用服務連結角色,您可以嘗試刪除該角色。如果服務正在使用該角色,則刪除會失敗,而您可以檢視正在使用該角色的區域。如果服務正在使用該角色,您必須先等到工作階段結束,才能刪除該角色。您無法撤銷服務連結角色的工作階段。

若要移除服務連結角色所使用的資源

如需哪些服務支援使用服務連結角色的資訊,請參閱 AWS 與 IAM 搭配使用的服務,並尋找 Service-Linked Role (服務連結角色) 欄中顯示 Yes (是) 的服務。若要了解服務是否支援刪除服務連結角色,請選擇連結以檢視該服務的服務連結角色的文件。請參閱該服務的文件,以了解如何移除服務連結角色所使用的資源。

刪除服務連結角色 (主控台)

您可以使用 IAM 主控台刪除服務連結角色。

刪除服務連結角色 (主控台)
  1. 登入 AWS Management Console 並開啟身分與存取權管理主控台,網址為 https://console.aws.amazon.com/iam/

  2. 在 IAM 主控台的導覽窗格中,選擇 Roles (角色)。然後,選擇您要刪除的角色名稱旁的核取方塊,而非名稱或資料列本身。

  3. 在頁面頂端的 Role actions (角色動作) 中選擇 Delete (刪除)。

  4. 在確認對話方塊中,複查上次存取的資訊,其中顯示每個選取角色上次存取 AWS 服務的時間。這可協助您確認角色目前是否作用中。如果您想要繼續進行,請選擇 Yes, Delete (是,刪除) 來提交服務連結角色以進行刪除。

  5. 查看 IAM 主控台通知,監視服務連結角色刪除的進度。因為 IAM 服務連結角色刪除不同步,所以在您提交角色進行刪除之後,刪除任務可能會成功或失敗。

    • 如果任務成功,則會從清單中移除角色,而且成功通知會出現在頁面頂端。

    • 如果任務失敗,您可以從通知中選擇 View details (檢視詳細資訊)View Resources (檢視資源),以了解刪除失敗的原因。如果刪除因角色使用服務資源而失敗,則服務傳回該資訊時,通知會包含資源清單。您接著可以清除資源,並重新提交刪除。

      注意

      根據服務所傳回的資訊,您可能需要重複此程序數次。例如,您的服務連結角色可能會使用六個資源,而且您的服務可能傳回其中五項的相關資訊。如果您清除五個資源,並重新提交刪除角色,則刪除會失敗,而且服務會報告還有一個資源。服務可能會傳回所有資源、其中一些資源,或未報告任何資源。

    • 如果任務失敗,而且通知未包含資源清單,則服務可能未傳回該資訊。若要了解如何清除該服務的資源,請參閱AWS 與 IAM 搭配使用的服務。請在表格中找到您的服務,然後選擇 Yes (是) 連結,檢視該服務的服務連結角色文件。

刪除服務連結角色 (AWS CLI)

您可以使用的 IAM 命令 AWS CLI 來刪除服務連結角色。

刪除服務連結角色 (AWS CLI)
  1. 如果您知道要刪除的服務連結角色的名稱,請輸入以下命令以列出您帳戶中的角色:

    aws iam get-role --role-name role-name

    透過 CLI 命令,使用角色名稱 (而非 ARN) 來參照角色。例如,如果角色具有下列 ARN:arn:aws:iam::123456789012:role/myrole,請將角色參照為 myrole

  2. 因為無法刪除正在使用或具有相關聯資源的服務連結角色,所以您必須提交刪除要求。如果不符合這些條件,則可以拒絕該請求。您必須從回應中擷取 deletion-task-id,以檢查刪除任務的狀態。輸入下列命令,以提交服務連結角色刪除要求:

    aws iam delete-service-linked-role --role-name role-name
  3. 輸入下列命令,以檢查刪除任務的狀態:

    aws iam get-service-linked-role-deletion-status --deletion-task-id deletion-task-id

    刪除任務的狀態可以是 NOT_STARTEDIN_PROGRESSSUCCEEDEDFAILED。如果刪除失敗,則呼叫會傳回失敗原因,以進行疑難排解。如果刪除因角色使用服務資源而失敗,則服務傳回該資訊時,通知會包含資源清單。您接著可以清除資源,並重新提交刪除。

    注意

    根據服務所傳回的資訊,您可能需要重複此程序數次。例如,您的服務連結角色可能會使用六個資源,而且您的服務可能傳回其中五項的相關資訊。如果您清除五個資源,並重新提交刪除角色,則刪除會失敗,而且服務會報告還有一個資源。服務可能會傳回所有資源、其中一些資源,或未報告任何資源。若要了解如何清除未報告任何資源之服務的資源,請參閱AWS 與 IAM 搭配使用的服務。請在表格中找到您的服務,然後選擇 Yes (是) 連結,檢視該服務的服務連結角色文件。

刪除服務連結角色 (AWS API)

您可以使用 AWS API 刪除服務連結角色。

若要刪除服務連結角色 (AWS API)
  1. 若要提交服務連結角色的刪除要求,請致電DeleteServiceLinkedRole。在請求中,指定角色名稱。

    因為無法刪除正在使用或具有相關聯資源的服務連結角色,所以您必須提交刪除要求。如果不符合這些條件,則可以拒絕該請求。您必須從回應中擷取 DeletionTaskId,以檢查刪除任務的狀態。

  2. 要檢查刪除狀態,請致電GetServiceLinkedRoleDeletionStatus。在請求中,指定 DeletionTaskId

    刪除任務的狀態可以是 NOT_STARTEDIN_PROGRESSSUCCEEDEDFAILED。如果刪除失敗,則呼叫會傳回失敗原因,以進行疑難排解。如果刪除因角色使用服務資源而失敗,則服務傳回該資訊時,通知會包含資源清單。您接著可以清除資源,並重新提交刪除。

    注意

    根據服務所傳回的資訊,您可能需要重複此程序數次。例如,您的服務連結角色可能會使用六個資源,而且您的服務可能傳回其中五項的相關資訊。如果您清除五個資源,並重新提交刪除角色,則刪除會失敗,而且服務會報告還有一個資源。服務可能會傳回所有資源、其中一些資源,或未報告任何資源。若要了解如何清除未報告任何資源之服務的資源,請參閱AWS 與 IAM 搭配使用的服務。請在表格中找到您的服務,然後選擇 Yes (是) 連結,檢視該服務的服務連結角色文件。