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

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

IAM 的運作方式

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

IntroTo工程圖

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

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

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

條款

使用下列項目時通常使用這些 IAM 術語 AWS:

IAM 資源

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

  • 使用者

  • 群組

  • role

  • 政策

  • 身分供應商物件

IAM 實體

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

  • 使用者

  • role

IAM 身分

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

資源、身分和實體
主體

使用 IAM 使用者或 IAM 角色登入並向其提出請求的個人或應用程式 AWS。 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 使用請求內容的值來檢查套用於請求的政策。接著使用政策以決定是否允許或拒絕請求。大多數原則會 AWS 以 JSON 文件的形式儲存在中,並指定主體實體的權限。有數種類型的政策會影響是否授權請求。若要為您的使用者提供存取其帳戶中 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 服務的動作、資源和條件索引鍵