IAM 角色 - AWS Identity and Access Management

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

IAM 角色

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

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

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

注意

當您第一次建立 時 AWS 帳戶,預設不會建立任何角色。為帳戶新增服務時,這些服務可能會新增服務連結角色,以支援其使用案例。

服務連結角色是連結至 的服務角色類型 AWS 服務。服務可以擔任代表您執行動作的角色。服務連結角色會顯示在您的 中 AWS 帳戶 ,並由 服務擁有。IAM 管理員可以檢視,但不能編輯服務連結角色的許可。

在您刪除服務連結角色之前,您必須先刪除這些角色的相關資源。這可保護您的資源,避免您不小心移除資源的存取許可。

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

何時建立IAM使用者 (而非角色)

我們建議您僅將IAM使用者用於聯合身分使用者不支援的使用案例。以下是部分使用案例:

  • 無法使用IAM角色的工作負載 – 您可以從需要存取 的位置執行工作負載 AWS。在某些情況下,您無法使用IAM角色來提供臨時憑證,例如 WordPress 外掛程式。在這些情況下,請使用該工作負載IAM的使用者長期存取金鑰來向 進行身分驗證 AWS。

  • 第三方 AWS 用戶端 – 如果您使用不支援 IAM Identity Center 存取的工具,例如非託管於 的第三方 AWS 用戶端或廠商 AWS,請使用IAM使用者長期存取金鑰。

  • AWS CodeCommit 存取 – 如果您使用 CodeCommit 來存放程式碼,則可以使用具有 SSH金鑰或服務特定憑證IAM的使用者 CodeCommit ,以對您的儲存庫進行身分驗證。除了在 IAM Identity Center 中使用使用者進行一般身分驗證之外,建議您這麼做。IAM Identity Center 中的使用者是您人力中需要存取您的 AWS 帳戶 或雲端應用程式的人員。若要讓使用者存取 CodeCommit 您的儲存庫而不設定IAM使用者,您可以設定git-remote-codecommit公用程式。如需 IAM和 的詳細資訊 CodeCommit,請參閱 IAM認證 CodeCommit:Git 憑證、SSH金鑰和 AWS 存取金鑰。如需設定git-remote-codecommit公用程式的詳細資訊,請參閱 AWS CodeCommit 使用者指南中的使用輪換憑證連線至 AWS CodeCommit 儲存庫

  • Amazon Keyspaces (適用於 Apache Cassandra) 存取 – 您無法在 IAM Identity Center 中使用使用者的情況,例如為了測試 Cassandra 相容性,您可以使用具有服務特定憑證IAM的使用者來驗證 Amazon Keyspaces。IAM Identity Center 中的使用者是您人力中需要存取您的 AWS 帳戶 或雲端應用程式的人員。您也可以使用暫時性憑證連線到 Amazon Keyspaces。如需詳細資訊,請參閱 Amazon Keyspaces (適用於 Apache Cassandra) 開發人員指南 中的使用臨時憑證使用 IAM角色和 SigV4 外掛程式連線至 Amazon Keyspaces。

  • 緊急存取:無法存取身分提供者且必須在 AWS 帳戶中採取動作的情況下。建立緊急存取IAM使用者可能是您恢復計畫的一部分。我們建議使用多重要素驗證 () 嚴格控制和保護緊急使用者憑證MFA。

角色術語和概念

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

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的角色。IAM 管理員可以從 內部建立、修改和刪除服務角色IAM。如需詳細資訊,請參閱 使用者指南 中的建立角色以將許可委派給 AWS 服務IAM

AWS 服務連結角色

服務連結角色是連結至 的服務角色類型 AWS 服務。服務可以擔任代表您執行動作的角色。服務連結角色會顯示在您的 中 AWS 帳戶 ,並由 服務擁有。IAM 管理員可以檢視,但不能編輯服務連結角色的許可。

注意

如果當服務開始支援服務連結的角色時您已經在使用服務,您可能會收到一封電子郵件,宣告您帳戶中的新角色。在這種情況下,服務會自動在您的帳戶中建立服務連結的角色。您不需要採取任何動作來支援此角色,而且您不應手動刪除它。如需詳細資訊,請參閱 顯示在我的 AWS 帳戶中的新角色

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

角色鏈結

角色鏈結是指使用角色透過 AWS CLI 或 擔任第二個角色API。例如,RoleA 擁有擔任 RoleB 的許可。您可以在 操作中使用RoleA其長期使用者憑證,以啟用 User1 AssumeRole API擔任 。這會傳回 RoleA 短期憑證。透過角色鏈結,您可以使用 RoleA 的短期憑證,啟用 User1 擔任 RoleB

當您擔任角色時,您可以傳遞工作階段標籤,並將標籤設為可轉移。可轉移工作階段標籤會傳遞到角色鏈中所有的後續工作階段。若要進一步了解工作階段標籤,請參閱 在 中傳遞工作階段標籤 AWS STS

角色鏈結將您的 AWS CLI 或 AWS API角色工作階段限制為最多一小時。當您使用 AssumeRoleAPI操作擔任角色時,您可以使用 DurationSeconds 參數指定角色工作階段的持續時間。您可以指定參數值高達 43200 秒 (12 小時),這取決於您角色的最大工作階段持續時間設定 。然而,如果在您使用角色鏈結來擔任角色時,並提供大於一小時的 DurationSeconds 參數值,則操作失敗。

委派

授予許可給某人,以允許存取您控制的資源。委派涉及設定兩個帳戶間的信任。第一個是擁有資源的帳戶 (信任帳戶)。第二個是包含需要存取資源使用者的帳戶 (受信任帳戶)。受信任帳戶和信任帳戶可以是以下任何一個:

  • 相同帳戶。

  • 都在您的組織的控制之下的個別帳戶。

  • 由不同組織擁有的兩個帳戶。

若要委派存取資源的許可,您可以在已連接兩個政策的信任帳戶中建立IAM角色許可政策會授予角色的使用者所需的許可,以對資源執行預定的任務。信任政策會指定允許哪些受信任帳戶成員可擔任角色。

建立信任政策時,您無法在主體元素ARN中指定萬用字元 (*) 作為 和 的一部分。信任政策會連接到信任帳戶中的角色,並且是許可的二分之一。另外一半是連接到受信任帳戶中使用者的許可政策,其允許切換為該使用者或擔任該角色 。擔任角色的使用者會暫時放棄其自己的許可,改為接受該角色的許可。當使用者退出或停止使用該角色時,會恢復原有的使用者許可。其他稱為外部 ID 的參數有助於確保在不是由相同組織控制的帳戶之間安全使用角色。

信任政策

您可以在其中定義您信任擔任角色的委託人JSON的政策文件。角色信任政策是連接至 中角色的必要資源型政策IAM。您在信任政策中可指定的主體包含使用者、角色、帳戶和服務。

跨帳戶存取的角色

將一個帳戶中的資源存取權,授予不同帳戶中受信任主體的角色。角色是授予跨帳戶存取的主要方式。不過,某些 AWS 服務可讓您將政策直接連接至資源 (而不是使用角色做為代理)。這些稱為資源型政策,您可以使用它們來授予資源的其他 AWS 帳戶 存取權中的主體。其中一些資源包括 Amazon Simple Storage Service (S3) 儲存貯體、S3 Glacier 保存庫、Amazon Simple Notification Service (SNS) 主題和 Amazon Simple Queue Service (SQS) 佇列。若要了解哪些服務支援以資源為基礎的政策,請參閱 AWS 使用 的 服務 IAM。如需有關以資源為基礎的政策詳細資訊,請參閱 中的跨帳戶資源存取 IAM

其他資源

下列資源可協助您進一步了解與IAM角色相關的IAM術語。

  • 主體是 中的實體 AWS ,可以執行動作和存取資源。主體可以是 AWS 帳戶根使用者、IAM使用者或角色。代表 AWS 服務身分的委託人是服務委託人 。使用角色信任政策中的主體元素來定義您信任擔任角色的主體。

    如需您可以允許擔任角色之主體的詳細資訊和範例,請參閱 AWS JSON政策元素:Principal

  • 身分聯合會在外部身分提供者與 之間建立信任關係 AWS。您可以使用現有的 OpenID Connect (OIDC) 或安全宣告標記語言 (SAML) 2.0 供應商來管理誰可以存取 AWS 資源。當您使用 SAML OIDC和 2.0 設定這些外部身分提供者與 之間的信任關係時 AWS ,系統會將使用者指派給IAM角色。使用者也可以接收臨時憑證,其允許使用者存取您的 AWS 資源。

    如需有關聯合身分使用者的詳細資訊,請參閱 身分提供者與聯合

  • 聯合使用者是來自 AWS Directory Service、您的企業使用者目錄或OIDC提供者的現有身分。這些稱為聯合身分使用者 。當透過身分提供者 請求存取時, 會將角色 AWS 指派給聯合身分使用者。

    如需有關聯合身分使用者的詳細資訊,請參閱 聯合身分使用者和角色

  • 許可政策是以身分為基礎的政策,定義角色可以使用的動作和資源。文件是根據IAM政策語言的規則撰寫。

    如需詳細資訊,請參閱IAMJSON策略參考

  • 許可界限是一項進階功能,您可以在其中使用政策來限制身分型政策可授予角色的最大許可。您不能將許可界限用到服務連結的角色。

    如需詳細資訊,請參閱IAM 實體的許可界限