

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

# IAM 角色
<a name="id_roles"></a>

*IAM 角色*是您可以在帳戶中建立的另一種 IAM 身分，具有特定的許可。IAM 角色類似於 IAM 使用者，因為同樣是 AWS 身分，也有許可政策可決定該身分在 AWS中可執行和不可執行的操作。但是，角色的目的是讓需要它的任何人可代入，而不是單獨地與某個人員關聯。此外，角色沒有與之關聯的標準長期憑證，例如密碼或存取金鑰。反之，當您擔任角色時，其會為您的角色工作階段提供臨時安全性憑證。

您可以使用 角色將存取權委派給通常無法存取 AWS 資源的使用者、應用程式或服務。例如，您可能想要授予您 AWS 帳戶中的使用者存取他們通常沒有的資源，或授予使用者 AWS 帳戶 存取另一個帳戶中的資源。或者，您可能想要允許行動應用程式使用 AWS 資源，但不想在應用程式中嵌入 AWS 金鑰 （在難以更新的地方，以及使用者可以擷取的地方）。有時，您想要提供 AWS 存取權給已在 外部定義身分的使用者 AWS，例如在您的公司目錄中。或者，您可能需要向第三方授予存取您帳戶的許可，讓他們可以對您的資源執行稽核。

對於這些案例，您可以使用 *IAM 角色*委派對 AWS 資源的存取。本節介紹各種角色和它們的不同使用方式，如何從不同方式中選出適合的時機與方法，以及如何建立、管理、切換到 (或擔任) 和刪除角色。

**注意**  
當您第一次建立 時 AWS 帳戶，預設不會建立任何角色。為帳戶新增服務時，這些服務可能會新增服務連結角色，以支援其使用案例。  
 服務連結角色是連結至 的一種服務角色 AWS 服務。服務可以擔任代表您執行動作的角色。服務連結角色會出現在您的 中 AWS 帳戶 ，並由服務擁有。IAM 管理員可以檢視，但不能編輯服務連結角色的許可。  
在您刪除服務連結角色之前，您必須先刪除這些角色的相關資源。這可保護您的資源，避免您不小心移除資源的存取許可。  
如需哪些服務支援使用服務連結角色的資訊，請參閱 [AWS 使用 IAM 的 服務](reference_aws-services-that-work-with-iam.md)，並尋找 **Service-Linked Role (服務連結角色)** 欄中顯示 **Yes (是)** 的服務。選擇具有連結的 **Yes (是)**，以檢視該服務的服務連結角色文件。

**Topics**
+ [何時建立 IAM 使用者 (而不是角色)](#id_which-to-choose)
+ [角色術語和概念](#id_roles_terms-and-concepts)
+ [其他資源](#id_roles_additional-resources)
+ [混淆代理人問題](confused-deputy.md)
+ [IAM 角色的常見案例](id_roles_common-scenarios.md)
+ [IAM 角色建立](id_roles_create.md)
+ [IAM 角色管理](id_roles_manage.md)
+ [擔任角色的方法](id_roles_manage-assume.md)

## 何時建立 IAM 使用者 (而不是角色)
<a name="id_which-to-choose"></a>

建議您僅將 IAM 使用者用於聯合身分不支援的使用案例。以下是部分使用案例：
+ **無法使用 IAM 角色的工作負載** - 您可以從需要存取 AWS的位置執行工作負載。在某些情況下，您無法使用 IAM 角色提供暫時性憑證，例如針對 WordPress 外掛程式。在這些情況下，請將 IAM 使用者長期存取金鑰用於該工作負載，對 AWS進行身分驗證。
+ **第三方 AWS 用戶端** – 如果您使用不支援透過 IAM Identity Center 存取的工具，例如非託管的第三方 AWS 用戶端或廠商 AWS，請使用 IAM 使用者長期存取金鑰。
+ **AWS CodeCommit 存取** – 如果您使用 CodeCommit 存放程式碼，您可以使用 IAM 使用者搭配 SSH 金鑰或服務特定的登入資料，讓 CodeCommit 驗證您的儲存庫。除了將 IAM Identity Center 中的使用者用於一般身分驗證之外，我們也建議您這樣做。IAM Identity Center 中的使用者是您人力中需要存取您的 AWS 帳戶 或雲端應用程式的人員。若要將您 CodeCommit 儲存庫的存取權授予使用者，而不設定 IAM 使用者，您可以設定 **git-remote-codecommit** 公用程式。如需 IAM 和 CodeCommit 的詳細資訊，請參閱 [CodeCommit 的 IAM 登入資料：Git 登入資料、SSH 金鑰和 AWS 存取金鑰](id_credentials_ssh-keys.md)。如需設定**git-remote-codecommit**公用程式的詳細資訊，請參閱*AWS CodeCommit 《 使用者指南*》中的[使用輪換憑證連線至 AWS CodeCommit 儲存庫](https://docs.aws.amazon.com/codecommit/latest/userguide/temporary-access.html#temporary-access-configure-credentials)。
+ **Amazon Keyspaces (適用於 Apache Cassandra) 存取** – 在無法使用 IAM Identity Center 中的使用者的情況下，例如為了測試 Cassandra 相容性，您可以將 IAM 使用者搭配服務特定憑證使用，以便使用 Amazon Keyspaces 進行身分驗證。IAM Identity Center 中的使用者是您人力中需要存取您的 AWS 帳戶 或雲端應用程式的人員。您也可以使用暫時性憑證連線到 Amazon Keyspaces。如需詳細資訊，請參閱 *Amazon Keyspaces (for Apache Cassandra) Developer Guide* 中的 [Using temporary credentials to connect to Amazon Keyspaces using an IAM role and the SigV4 plugin](https://docs.aws.amazon.com/keyspaces/latest/devguide/access.credentials.html#temporary.credentials.IAM)。
+ **緊急存取**：無法存取身分提供者且必須在 AWS 帳戶中採取動作的情況下。您可以將建立緊急存取 IAM 使用者列入彈性計劃中的一環。建議您使用多重要素驗證 (MFA) 嚴格控管緊急使用者憑證並加以保護。

## 角色術語和概念
<a name="id_roles_terms-and-concepts"></a>

以下是一些基本術語，可協助您開始使用角色。

****Role****  
您可以在帳戶中建立的 IAM 身分具有特定的許可。IAM 角色與 IAM 使用者有一些相似之處。角色和使用者都是具備許可政策的 AWS 身分，可決定身分在 AWS中可執行和不可執行的操作。但是，角色的目的是讓需要它的任何人可代入，而不是單獨地與某個人員關聯。此外，角色沒有與之關聯的標準長期憑證，例如密碼或存取金鑰。反之，當您擔任角色時，其會為您的角色工作階段提供臨時安全性憑證。  
角色可由以下項目擔任：  
+ 相同 AWS 帳戶 或另一個 中的 IAM 使用者 AWS 帳戶
+ 相同帳戶中的 IAM 角色
+ 服務主體，用於 AWS 服務和功能，例如：
  + 可讓您在運算服務上執行程式碼的服務，例如 Amazon EC2 或 AWS Lambda
  + 代表您對資源執行動作的功能，例如 Amazon S3 物件複寫
  + 為在 外部執行的應用程式提供臨時安全登入資料的服務 AWS，例如 IAM Roles Anywhere 或 Amazon ECS Anywhere
+ 透過外部身分提供者 (IdP) 服務進行驗證的外部使用者，並且該服務與 SAML 2.0 或 OpenID Connect 相容

****AWS 服務角色****  
 服務角色是服務擔任的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)，可代您執行動作。IAM 管理員可以從 IAM 內建立、修改和刪除服務角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[建立角色以委派許可給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

****AWS 服務連結角色****  
 服務連結角色是連結至 的一種服務角色 AWS 服務。服務可以擔任代表您執行動作的角色。服務連結角色會出現在您的 中 AWS 帳戶 ，並由服務擁有。IAM 管理員可以檢視，但不能編輯服務連結角色的許可。  
如果當服務開始支援服務連結的角色時您已經在使用服務，您可能會收到一封電子郵件，宣告您帳戶中的新角色。在這種情況下，服務會自動在您的帳戶中建立服務連結的角色。您不需要採取任何動作來支援此角色，而且您不應手動刪除它。如需詳細資訊，請參閱 [我的 AWS 帳戶中出現新角色](troubleshoot_roles.md#troubleshoot_roles_new-role-appeared)。
如需哪些服務支援使用服務連結角色的資訊，請參閱 [AWS 使用 IAM 的 服務](reference_aws-services-that-work-with-iam.md)，並尋找 **Service-Linked Role (服務連結角色)** 欄中顯示 **Yes (是)** 的服務。選擇具有連結的 **Yes (是)**，以檢視該服務的服務連結角色文件。如需詳細資訊，請參閱[建立服務連結角色](id_roles_create-service-linked-role.md)。

****角色鏈結****  
當您使用一個角色來擔任第二個角色時，會發生角色鏈結。您可以透過 AWS 管理主控台 切換角色 AWS CLI、 或 API，透過 執行角色鏈結。例如，`RoleA` 擁有擔任 `RoleB` 的許可。您可以透過在 AssumeRole API 操作中使用長期使用者憑證，啟用 User1 擔任 `RoleA`。這會傳回 `RoleA` 短期憑證。透過角色鏈結，您可以使用 `RoleA` 的短期憑證，啟用 User1 擔任 `RoleB`。  
當您擔任角色時，您可以傳遞工作階段標籤，並將標籤設為可轉移。可轉移工作階段標籤會傳遞到角色鏈中所有的後續工作階段。若要進一步了解工作階段標籤，請參閱 [在 中傳遞工作階段標籤 AWS STS](id_session-tags.md)。  
角色鏈結會將您的 AWS 管理主控台 AWS CLI 或 AWS API 角色工作階段限制為最多一小時。無論為個別角色設定的工作階段持續時間上限為何，其皆適用。當您使用 [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API 操作來擔任角色時，可以使用 `DurationSeconds` 參數指定角色工作階段的持續時間。您可以指定參數值高達 43200 秒 (12 小時)，這取決於您角色的[最大工作階段持續時間設定](id_roles_update-role-settings.md#id_roles_update-session-duration) 。然而，如果在您使用角色鏈結來擔任角色時，並提供大於一小時的 `DurationSeconds` 參數值，則操作失敗。  
如需切換到 中角色的資訊 AWS 管理主控台，請參閱 [從使用者切換至 IAM 角色 (主控台)](id_roles_use_switch-role-console.md)。

****委派****  
授予許可給某人，以允許存取您控制的資源。委派涉及設定兩個帳戶間的信任。第一個是擁有資源的帳戶 (信任帳戶)。第二個是包含需要存取資源使用者的帳戶 (受信任帳戶)。受信任帳戶和信任帳戶可以是以下任何一個：  
+ 相同帳戶。
+ 都在您的組織的控制之下的個別帳戶。
+ 由不同組織擁有的兩個帳戶。
若要委派許可來存取資源，您要在具有連接兩個政策的信任帳戶中[建立 IAM 角色](id_roles_create_for-user.md)。*許可政策*會授予角色的使用者所需的許可，以對資源執行預定的任務。*信任政策*會指定允許哪些受信任帳戶成員可擔任角色。  
當您建立信任政策時，您無法在委託人元素中指定萬用字元 (\*) 做為 ARN 的一部分。信任政策會連接到信任帳戶中的角色，並且是許可的二分之一。另外一半是連接到受信任帳戶中使用者的許可政策，其[允許切換為該使用者或擔任該角色 ](id_roles_use_permissions-to-switch.md)。擔任角色的使用者會暫時放棄其自己的許可，改為接受該角色的許可。當使用者退出或停止使用該角色時，會恢復原有的使用者許可。其他稱為[外部 ID](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id) 的參數有助於確保在不是由相同組織控制的帳戶之間安全使用角色。

****信任政策****  
[JSON 政策文件](reference_policies_grammar.md)，您會在其中定義您*信任*擔任角色的主體。角色信任政策是在 IAM 中連接至角色的[以資源為基礎的必要政策](access_policies.md#policies_resource-based)。您在信任政策中可指定的[主體](reference_policies_elements_principal.md)包含使用者、角色、帳戶和服務。如需詳細資訊，請參閱 *AWS 安全部落格*中的 [How to use trust policies in IAM roles](https://aws.amazon.com/blogs//security/how-to-use-trust-policies-with-iam-roles/)。

****跨帳戶存取的角色****  
將一個帳戶中的資源存取權，授予不同帳戶中受信任主體的角色。角色是授予跨帳戶存取權的主要方式。不過，某些 AWS 服務可讓您將政策直接連接到資源 （而不是使用角色做為代理）。這些稱為以資源為基礎的政策，您可以使用它們來授予其他資源 AWS 帳戶 存取權中的委託人。其中一些資源包括 Amazon Simple Storage Service (S3) 儲存貯體、Amazon Glacier 保存庫、Amazon Simple Notification Service (SNS) 主題以及 Amazon Simple Queue Service (SQS) 佇列。若要了解哪些服務支援以資源為基礎的政策，請參閱 [AWS 使用 IAM 的 服務](reference_aws-services-that-work-with-iam.md)。如需有關以資源為基礎的政策詳細資訊，請參閱 [IAM 中的跨帳戶資源存取](access_policies-cross-account-resource-access.md)。

## 其他資源
<a name="id_roles_additional-resources"></a>

下列資源可協助您進一步了解與 IAM 角色相關的 IAM 術語。
+ **委託人**是 中的實體 AWS ，可執行動作和存取資源。委託人可以是 AWS 帳戶根使用者、IAM 使用者或角色。代表 AWS 服務身分的委託人是[服務委託人](reference_policies_elements_principal.md#principal-services)。使用角色信任政策中的 Principal 元素，來定義您信任能夠擔任角色的主體。

   如需您可以允許擔任角色之主體的詳細資訊和範例，請參閱 [AWS JSON 政策元素： Principal](reference_policies_elements_principal.md)。
+ **聯合身分**會在外部身分提供者與 之間建立信任關係 AWS。您可以使用現有的 OpenID Connect (OIDC) 或安全性聲明標記語言 (SAML) 2.0 提供者來管理誰可以存取 AWS 資源。當您使用 OIDC 和 SAML 2.0 設定這些外部身分提供者與 之間的信任關係時 AWS ，系統會將使用者指派給 IAM 角色。使用者也可以接收臨時憑證，其允許使用者存取您的 AWS 資源。

  如需有關聯合身分主體的詳細資訊，請參閱[身分提供者和聯合身分 AWS](id_roles_providers.md)。
+ **聯合主體**是來自 Directory Service企業使用者目錄或 OIDC 提供者的現有身分。當透過[身分提供者](id_roles_providers.md)請求存取時， 會將角色 AWS 指派給聯合主體。

  如需有關 SAML 和 OIDC 聯合身分主體的詳細資訊，請參閱[聯合身分使用者工作階段和角色](introduction_access-management.md#intro-access-roles)。
+ **許可政策**是身分型政策，可定義角色可以使用的動作和資源。文件的撰寫會根據 IAM 政策語言的規則。

  如需詳細資訊，請參閱[IAM JSON 政策參考](reference_policies.md)。
+ **許可界限**是一種進階功能，可供您使用政策，限制身分型政策可以授予角色的最大許可。您不能將許可界限用到服務連結的角色。

  如需詳細資訊，請參閱[IAM 實體的許可界限](access_policies_boundaries.md)。