IAM 的運作方式 - AWS Identity and Access Management

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

IAM 的運作方式

IAM 提供控制 AWS 帳戶 身分驗證和授權所需的基礎設施。下圖會說明 IAM 的基礎設施:


      IntroToIAM_Diagram

首先,人類使用者或應用程式會使用其登入憑證來向 AWS 進行身分驗證。系統會透過將登入憑證與受 AWS 帳戶 信任的主體 (IAM 使用者、聯合身分使用者、IAM 角色或應用程式) 進行比對來提供身分驗證。

接下來,系統會提出請求來向主體授與資源的存取權。系統是為了回應授權請求而授與存取權。舉例來說,當您第一次登入主控台且位於主控台首頁頁面時,您並未存取特定服務。選取某項服務時,系統會將授權請求傳送至該服務,該項服務會檢查您的身分是否在授權使用者清單上、強制執行了哪些政策來控制授與的存取層級,以及任何可能生效中的其他政策。授權請求可透過您 AWS 帳戶 內部的主體或您信任的另一個 AWS 帳戶 提出。

獲得授權後,主體即可對您 AWS 帳戶 中的資源採取動作或執行操作。舉例來說,主體可以啟動新的 Amazon Elastic Compute Cloud 執行個體、修改 IAM 群組成員資格或刪除 Amazon Simple Storage Service 儲存貯體。

條款

使用 AWS 時通常會用上這些 IAM 術語:

IAM 資源

IAM 資源儲存在 IAM 中。您可以從 IAM 中新增、編輯和移除這些資源。

  • 使用者

  • 群組

  • 角色

  • 政策

  • 身分供應商物件

IAM 實體

AWS 用於身分驗證的 IAM 資源。在以資源為基礎的政策中,實體可以指定為主體。

  • 使用者

  • 角色

IAM 身分

可在政策中授權以執行動作和存取資源的 IAM 資源。身分包括使用者、群組和角色。


              資源、身分和實體
主體

使用 AWS 帳戶根使用者、IAM 使用者或 IAM 角色登入並向 AWS 提出請求的人員或應用程式。主體包括聯合身分使用者及擔任的角色。

人類使用者

也稱為 人類身分;是應用程式的相關人員、管理員、開發人員、操作員和消費者。

工作負載

可提供商業價值的資源和程式碼的集合,例如應用程式或後端程序。可包括應用程式、操作工具和元件。

Principal

主體是一個人類使用者或工作負載,可針對 AWS 資源上的動作或操作提出請求。在驗證身分以後,主體可被授予永久或臨時性憑證,以便向 AWS 提出請求,具體取決於主體類型。IAM 使用者和根使用者被授予永久憑證,而角色則被授予臨時性憑證。我們建議的最佳實務是,您要求人類使用者和工作負載透過使用臨時性憑證存取 AWS 資源。

請求

當主體嘗試使用 AWS Management Console、AWS API 或 AWS CLI 時,該主體會向 AWS 發送請求。請求包含下列資訊:

  • 動作或操作 – 主體想要執行的動作或操作。這可能是 AWS Management Console 中的動作,或在 AWS CLI 或 AWS API 中的操作。

  • 資源 – 對其執行動作或操作的 AWS 資源物件。

  • 主體 – 使用實體 (使用者或角色) 來傳送請求的人員或應用程式。有關主體的資訊,包括與該主體用於登入之實體相關聯的政策。

  • 環境資料 – IP 地址、使用者代理程式、啟用 SSL 的狀態或一天中時間的相關資訊。

  • 資源資料 – 與所請求資源相關的資料。這可以包括諸如 DynamoDB 資料表名稱或 Amazon EC2 執行個體上之標籤的資訊。

AWS 將請求資訊收集到請求內容,這是用於評估和授權請求。

身分驗證

主體必須使用憑證通過身分驗證 (登入 AWS),以傳送請求至 AWS。某些服務 (如 Amazon S3 和 AWS STS) 允許來自匿名使用者的少數請求。不過,這些服務是此規則的例外。

若要從主控台通過根使用者的身分驗證,您必須使用您的電子郵件地址和密碼登入。身為聯合身分使用者,您要通過身分提供者的身分驗證,並且透過擔任 IAM 角色取得對 AWS 資源的存取權。以 IAM 使用者的身分,提供帳戶 ID 或別名,然後您的使用者名稱和密碼。若要從 API 或 AWS CLI 對工作負載進行身分驗證,您可能要用指派給角色的臨時性憑證,或者您也可能要透過提供您的存取金鑰和私密金鑰來使用長期憑證。您可能還需要提供額外的安全性資訊。做為最佳實務,AWS 建議您使用多重要素驗證 (MFA) 和臨時性憑證來提高帳戶的安全。若要進一步了解 AWS 可進行身分驗證的 IAM 實體,請參閱 IAM 使用者IAM 角色

授權

您也必須獲得授權 (允許) 以完成您的請求。在授權期間,AWS 使用請求內容的值來檢查套用於請求的政策。接著使用政策以決定是否允許或拒絕請求。大多數的政策會以 JSON 文件形式存放在 AWS 中,並負責指定主體實體的許可。有數種類型的政策會影響是否授權請求。為了讓使用者有權以自己的帳戶存取 AWS 資源,您只需以身分為基礎的政策。資源類型政策最常用於授與跨帳戶存取權。其他政策類型是進階功能,應謹慎使用。

AWS 檢查適用於請求內容的每個政策。如果單一許可政策包含拒絕的動作,AWS 將拒絕整個請求並停止評估。此稱為明確拒絕。由於請求是預設拒絕的,因此只有在請求的每個部分均被適用許可政策允許時,AWS 才會授權該請求。用於單一帳戶中請求的評估邏輯會遵循下列一般規則:

  • 根據預設,所有的請求一律拒絕。(一般而言,一律允許使用帳戶中的資源的 AWS 帳戶根使用者 登入資料提出請求)。

  • 任何許可政策中的明確允許 (以身分為基礎或以資源為基礎的政策) 都會覆寫此預設值。

  • 如果 Organizations SCP、IAM 許可界限或工作階段政策存在就會覆寫該允許。如果這些政策類型中有一或多個存在,則它們必須全部允許該請求。否則,它會被隱含拒絕。

  • 任何政策中的明確拒絕會覆寫任何允許。

若要進一步了解如何評估所有政策類型的詳細資訊,請參閱 政策評估邏輯。如果您需要在不同的帳戶發出請求,在其他帳戶中的政策必須可讓您存取資源,而且您用來發出請求的 IAM 實體必須具備允許該請求的以身分為基礎的政策。

動作或操作

在您的請求經過身分驗證和獲授權,AWS 會核准您請求的動作或操作。操作由服務定義,包括您可以對資源執行的動作,例如查看、建立、編輯和刪除該資源。例如,IAM 支援大約 40 個用於使用者資源的動作,包括下列動作:

  • CreateUser

  • DeleteUser

  • GetUser

  • UpdateUser

若要允許主體執行操作,您必須在適用於主體或受影響資源的政策中包含必要的動作。若要查看每個服務支援的動作、資源類型和條件金鑰的清單,請參閱 AWS 服務的動作、資源和條件金鑰

資源

在 AWS 核准您請求的操作後,可以對您帳戶中的相關資源執行這些操作。資源是存在於服務內的物件。範例包括 Amazon EC2 執行個體、IAM 使用者和 Amazon S3 儲存貯體。該服務定義了可以在每個資源執行的一組動作。如果您建立了對資源執行不相關動作的請求,則拒絕該請求。例如,如果您請求刪除 IAM 角色但提供 IAM 群組資源,則請求將失敗。若要查看識別哪些資源受動作影響的 AWS 服務表格,請參閱 AWS 服務的動作、資源和條件金鑰