AWS 身份和訪問管理(IAM)角色及其使用方法

AWS 身份和訪問管理(IAM)角色及其使用方法

2024.05.18

Amazon Web Services 依賴 AWS IAM 服務來管理誰被認證和授權使用 AWS 資源。它在 AWS 安全中扮演著極其重要的角色——其各種身份同樣如此。讓我們更詳細地看看 IAM 角色以及它們是如何工作的。

IAM 的目的是什麼?

當您創建一個 AWS 賬戶時,它有一個稱為 AWS 賬戶根用戶的單一登錄(SSO)身份,該身份對 AWS 服務和資源擁有完全訪問權限。為了避免由於這種無限制訪問引起的潛在災難性問題,IAM 允許通過身份共享訪問 AWS 賬戶。

基於安全優先的模型,AWS 默認限制所有身份的所有操作——除了根用戶。這種限制使我們能夠根據最小權限原則管理身份的細粒度訪問,因此只有在執行日常任務所需時才授予權限。

什麼是 IAM 角色?

AWS 用戶、聯合身份和 AWS 角色是三大類 AWS 身份。IAM 角色在概念上類似於 AWS 用戶,但用戶是唯一關聯於一個主體(用戶/應用程序等),而角色可以由任何需要它的人擔任。

與其使用密碼或訪問密鑰,擔任角色的人將獲得臨時安全憑證。這消除了管理用戶及其長期憑證的負擔。

以下任何實體都可以擔任角色以使用其權限:

IAM 角色的結構

IAM 角色的兩個基本方面是信任策略(誰可以擔任 IAM 角色)和權限策略(角色允許用戶做什麼)。

信任策略使用指定的條件來定義和控制哪些主體可以擔任角色。它們防止 IAM 角色被未經授權或意外的實體濫用。

權限策略定義了擔任角色的主體被允許做什麼。

IAM 角色的類型

根據它們的信任策略,AWS IAM 角色分為以下幾個主要類別:

服務角色

AWS 服務是這些角色的受信實體類型,它們被創建是為了允許 AWS 服務代表用戶執行操作。它們通過繼承分配給服務角色的權限來實現此目的。

您可能想知道為什麼 AWS 服務需要相互訪問的權限。這是因為,默認情況下,即使是 AWS 服務也無法訪問 AWS 賬戶中的資源。然而,服務角色允許 AWS 服務根據其需求訪問資源。

大多數 AWS 服務依賴服務角色來實現最佳功能。例如,它們允許 CloudFormation 根據 YAML 或 JSON 文件代表用戶創建和刪除資源。Amazon EC2 IAM 角色是一種特殊類型的服務角色。EC2 依賴實例配置文件作為 IAM 角色的容器,然後由在 EC2 實例內運行的應用程序承擔,以執行角色允許的操作。

服務連接角色

服務連接角色是一種與 AWS 服務連接的特殊 IAM 角色。它通過自動添加服務執行用戶代理操作所需的所有必需權限,簡化了設置服務的過程。它由服務預定義。大多數服務連接角色不允許更改信任或權限策略。

Web 身份角色

當用戶使用身份提供商(如 Amazon 和 Facebook)登錄 AWS 時,他們會承擔一個 Web 身份角色。用戶在 AWS 內部沒有身份;換取一個認證令牌,他們在 AWS 中獲得臨時安全憑證,映射到被授權使用 AWS 賬戶中資源的 IAM 角色。

SAML 2.0 聯盟角色

這些角色由包含在外部用戶目錄中的用戶承擔,通常在組織內。這使得聯合單一登錄(SSO)成為可能,因此組織可以讓用戶訪問 AWS 控制台和 CLI,而無需為每個人創建單獨的 IAM 用戶。一個在 Microsoft Azure Active Directory 中管理其員工的組織可以直接連接到 AWS,並根據賦予 SAML 2.0 聯盟角色的權限,給其用戶訪問 AWS 控制台和 CLI。

自定義 IAM 角色

自定義 IAM 角色不適用於其他類別,支持上述列表以外的場景。

承擔角色的時間限制是多少?

實體可以承擔角色的時間長度由 IAM 角色的會話持續時間屬性決定。例如,如果角色的會話持續時間設置為 12 小時,臨時憑證將在發放後 12 小時過期。

如果您使用 assume-role* 命令承擔角色,您可以使用 duration-seconds 標誌指定會話持續時間的值,範圍從 15 分鐘到角色允許的最大會話持續時間。默認持續時間是一小時,但可以延長到最多 12 小時。可以通過編輯角色調整會話持續時間。

什麼是角色鏈接?

一個角色可以承擔另一個角色,這個過程稱為角色鏈接。角色鏈接的用戶會話不能超過一小時;它不遵循角色的最大會話持續時間字段。

跨賬戶訪問怎麼辦?

身份基於的策略和資源基於的策略都是權限策略,但身份基於的策略附加於身份,如用戶、角色或組,而資源基於的策略附加於資源,如 S3、Amazon SQS 隊列或 VPC 端點。

身份基於的策略指定身份可以採取的行動以及對哪些資源,而資源基於的策略確定被允許訪問與它們鏈接的資源的人,並指定他們可以執行的行動。資源基於的策略必須是內聯的,不能是管理的。此列表提供了哪些資源支持資源基於的策略的詳細信息。

當身份和資源基於的策略同時存在時,AWS 將它們一起評估。如果任一策略允許某項行動,則該行動被允許。如果任一策略包含明確的 DENY,它將覆蓋 ALLOW。

您可以僅使用資源策略而不是使用角色作為代理來提供跨賬戶訪問。這是通過在您想要共享的資源上附加一個資源基於的策略來實現的。這種資源策略包括了所有被允許訪問此資源的主體,與指定主體有訪問權限的資源的身份基於的策略相比。

相比於使用角色,使用資源基於的策略進行跨賬戶訪問具有優勢。

當用戶承擔一個角色時,他們放棄了在受信賬戶中的權限,以便在信任賬戶(共享資源的賬戶)中獲得權限。通過資源基於的策略,用戶保留在受信賬戶中的權限,並且還獲得對信任賬戶中共享資源的訪問權限。主體可以同時訪問兩個賬戶。

AWS IAM Roles Anywhere

AWS IAM Roles Anywhere 是一種服務角色,允許位於 AWS 外部的機器或工作負載(如服務器、容器和應用程序)通過獲取臨時安全憑證來訪問 AWS 上的資源。這完全消除了管理長期憑證的頭疼問題。

工作負載需要擁有由證書授權機構發行的 X.509 證書,該證書必須註冊為 IAM Roles Anywhere 的信任錨。雖然這是一個相對較新的用例,但它標誌著減少使用長期憑證的趨勢。

使用 IAM 角色的好處

關鍵收穫

IAM 角色不僅是支持 IAM 服務的關鍵支柱,也是整個身份驗證和授權流程的重要組成部分。它們的價值遠遠超出了跨賬戶訪問、AWS IAM Roles Anywhere 和身份聯合等應用,對於顯著提高任何組織的安全態勢都非常重要。如果充分利用,它們在 IAM 中可以非常有用。

相關文章