本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
IAM 的運作方式
AWS Identity and Access Management 提供控制 AWS 帳戶身分驗證和授權所需的基礎設施。
首先,人類使用者或應用程式會使用其登入憑證來向 AWS 進行身分驗證。IAM 會將登入憑證與 AWS 帳戶信任的主體 (IAM 使用者、聯合身分使用者、IAM 角色或應用程式) 進行比對,並驗證許可來存取 AWS。
接下來,IAM 會提出請求,向主體授予資源的存取權。IAM 根據授權請求來授予或拒絕存取權。舉例來說,當您第一次登入主控台且位於主控台首頁頁面時,您並未存取特定服務。當您選取服務時,會針對該服務將授權請求傳送至 IAM。IAM 會驗證您的身分是否在授權使用者清單中,確定哪些政策控制授予的存取層級,並評估可能有效的任何其他政策。AWS 帳戶內部或您信任的另一個 AWS 帳戶中的主體可提出授權請求。
獲得授權後,主體即可對 AWS 帳戶中的資源執行動作或操作。舉例來說,主體可以啟動新的 Amazon Elastic Compute Cloud 執行個體、修改 IAM 群組成員資格或刪除 Amazon Simple Storage Service 儲存貯體。下圖透過 IAM 基礎設施說明此流程:
![此圖表顯示 IAM 服務如何驗證和授權主體,以對其他 AWS 服務或資源執行動作或操作。](images/intro-diagram _policies_800.png)
請求的元件
當主體嘗試使用 AWS Management Console、AWS API 或 AWS CLI 時,該主體會向 AWS 發送請求。請求包含下列資訊:
-
動作或操作:主體想要執行的動作或操作,例如 AWS Management Console中的動作,或 AWS CLI 或 AWS API 中的操作。
-
資源:主體請求對其執行動作或操作的 AWS 資源物件。
-
主體 – 使用實體 (使用者或角色) 來傳送請求的人員或應用程式。主體的相關資訊包括許可政策。
-
環境資料:IP 地址、使用者代理程式、啟用 SSL 的狀態以及時間戳記的相關資訊。
-
資源資料:與所請求資源相關的資料,例如 DynamoDB 資料表名稱或 Amazon EC2 執行個體上的標籤。
AWS 會將請求資訊收集到請求內容中,IAM 會進行評估以授權請求。
如何對主體進行身分驗證
主體使用 IAM 驗證的憑證登入 AWS,以允許主體將請求傳送至 AWS。某些服務 (如 Amazon S3 和 AWS STS) 允許來自匿名使用者的特定請求。不過,這些服務是此規則的例外。每種類型的使用者都會經過身分驗證。
-
根使用者:您用於身分驗證的登入憑證是您用來建立 AWS 帳戶的電子郵件地址,以及當時指定的密碼。
-
聯合身分使用者:您的身分提供者會驗證您的身分,並將您的憑證傳遞給 AWS,您不必直接登入 AWS。IAM Identity Center 和 IAM 都支援聯合身分使用者。
-
AWS IAM Identity Center 目錄 中的使用者 (非聯合):直接在 IAM Identity Center 預設目錄中建立的使用者使用 AWS 存取入口網站登入,並提供您的使用者名稱和密碼。
-
IAM 使用者:您可以透過提供您的帳戶 ID 或別名、使用者名稱以及密碼來登入。若要從 API 或 AWS CLI 對工作負載進行身分驗證,您可透過充當角色來使用臨時憑證,或者透過提供您的存取金鑰和私密金鑰來使用長期憑證。
AWS 建議您對所有使用者使用多重要素驗證 (MFA) 來提高帳戶的安全性。若要進一步了解 MFA,請參閱 AWS IAM 中的多重要素驗證。
授權和許可政策基本概念
授權是指擁有完成其請求所需許可的主體。在授權期間,IAM 使用請求內容中的值來識別適用於請求的政策。接著使用政策以決定是否允許或拒絕請求。IAM 會將大多數許可政策儲存為 JSON 文件,它們可指定主體實體的許可。
有數種類型的政策會影響授權請求。為了讓使用者有權在自己的帳戶中存取 AWS 資源,您可使用身分型政策。資源型政策可授予跨帳戶存取權。若要在不同的帳戶中發出請求,在其他帳戶中的政策必須可讓您存取資源,而且您用來發出請求的 IAM 實體必須具備允許該請求的身分型政策。
IAM 會檢查適用於請求內容的每個政策。IAM 政策評估使用明確拒絕,這表示如果單一許可政策包含拒絕的動作,則 IAM 會拒絕整個請求並停止評估。由於預設拒絕請求,因此適用的許可政策必須允許 IAM 請求的每個部分,以授權您的請求。用於單一帳戶中請求的評估邏輯遵循以下基本規則:
-
根據預設,所有的請求一律拒絕。(一般而言,一律允許使用帳戶中的資源的 AWS 帳戶根使用者 登入資料提出請求)。
-
任何許可政策中的明確允許 (以身分為基礎或以資源為基礎的政策) 都會覆寫此預設值。
-
如果存在組織服務控制政策 (SCP)、資源控制政策 (RCP)、IAM 許可界限或工作階段政策,則會覆寫該允許。如果這些政策類型中有一或多個存在,則它們必須全部允許該請求。否則,它會被隱含拒絕。如需 SCP 和 RCP 的詳細資訊,請參閱 AWS Organizations User Guide 中 Authorization policies in AWS Organizations。
-
任何政策中的明確拒絕會覆寫任何政策中的任何允許。
如需進一步了解,請參閱 政策評估邏輯。
在 IAM 驗證並授權主體之後,IAM 會透過評估適用於主體的許可政策來核准其請求中的動作或操作。每個 AWS 服務會定義它們支援的動作 (操作),包括您可以對資源執行的動作,例如檢視、建立、編輯和刪除該資源。適用於主體的許可政策必須包含執行操作所需的動作。若要要進一步了解 IAM 如何評估許可政策,請參閱 政策評估邏輯。
該服務定義了主體可對每個資源執行的一組動作。建立許可政策時,務必包含您希望使用者執行的動作。例如,IAM 支援超過 40 個使用者資源動作,包括下列基本動作:
-
CreateUser
-
DeleteUser
-
GetUser
-
UpdateUser
此外,可以在許可政策中指定條件,以便在請求符合指定條件時提供對資源的存取。例如,您可能想要政策陳述式在特定日期之後生效,或者在 API 請求中出現特定值時控制存取。若要指定條件,請使用政策陳述式的 Condition 元素。
在 IAM 核准請求中的操作之後,主體可以使用帳戶中的相關資源。資源是存在於服務內的物件。範例包括 Amazon EC2 執行個體、IAM 使用者和 Amazon S3 儲存貯體。如果主體建立請求,以對未包含在許可政策中的資源執行動作,則服務會拒絕該請求。例如,如果您擁有刪除 IAM 角色的許可,但您請求刪除 IAM 群組,則如果您沒有刪除 IAM 群組的許可,則請求會失敗。若要進一步了解不同 AWS 服務支援的動作、資源和條件索引鍵,請參閱 Actions, Resources, and Condition Keys for AWS Services。