

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

# IAM 的運作方式
<a name="intro-structure"></a>

AWS Identity and Access Management 提供必要的基礎設施，以控制 的身分驗證和授權 AWS 帳戶。

首先，人類使用者或應用程式會使用其登入憑證來向 AWS進行身分驗證。IAM 會將登入憑證比對至 信任的委託人 (IAM 使用者、 AWS STS 聯合身分使用者委託人、IAM 角色或應用程式）， AWS 帳戶 並驗證存取 的許可 AWS。

接下來，IAM 會提出請求，向主體授予資源的存取權。IAM 根據授權請求來授予或拒絕存取權。舉例來說，當您第一次登入主控台且位於主控台首頁頁面時，您並未存取特定服務。當您選取服務時，會針對該服務將授權請求傳送至 IAM。IAM 會驗證您的身分是否在授權使用者清單中，確定哪些政策控制授予的存取層級，並評估可能有效的任何其他政策。您內部 AWS 帳戶 或您 AWS 帳戶 信任之其他 的委託人可以提出授權請求。

獲得授權後，主體即可對 AWS 帳戶中的資源執行動作或操作。例如，委託人可以啟動新的 Amazon Elastic Compute Cloud 執行個體、修改 IAM 群組成員資格或刪除儲存 Amazon Simple Storage Service 貯體。下圖透過 IAM 基礎設施說明此流程：

![\[此圖表顯示委託人如何經過 IAM 服務驗證和授權，以在其他 AWS 服務或資源上執行動作或操作。\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/intro-diagram _policies_800.png)


## 請求的元件
<a name="intro-structure-request"></a>

當委託人嘗試使用 AWS 管理主控台、 AWS API 或 時 AWS CLI，該委託人會傳送*請求*至 AWS。請求包含下列資訊：
+ **動作或操作** – 委託人想要執行的動作或操作。例如 中的 動作 AWS 管理主控台，或 AWS CLI 或 AWS API 中的 操作。
+ **資源** – 委託人請求執行動作或操作 AWS 的資源物件。
+ **主體** – 使用實體 (使用者或角色) 來傳送請求的人員或應用程式。主體的相關資訊包括許可政策。
+ **環境資料**：IP 地址、使用者代理程式、啟用 SSL 的狀態以及時間戳記的相關資訊。
+ **資源資料**：與所請求資源相關的資料，例如 DynamoDB 資料表名稱或 Amazon EC2 執行個體上的標籤。

AWS 會將請求資訊收集到*請求內容*中，IAM 會評估這些內容來授權請求。

## 如何對主體進行身分驗證
<a name="intro-structure-authentication"></a>

委託人 AWS 使用 IAM 驗證的登入資料登入 ，以允許委託人傳送請求 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，您可以透過擔任角色來使用暫時登入資料，也可以透過提供存取金鑰和私密金鑰來使用長期登入資料。

  若要進一步了解 IAM 實體，請參閱 [IAM 使用者](id_users.md) 和 [IAM 角色](id_roles.md)。

AWS 建議您對所有使用者使用多重驗證 (MFA)，以提高帳戶的安全性。若要進一步了解 MFA，請參閱 [AWS IAM 中的多重要素驗證](id_credentials_mfa.md)。

## 授權和許可政策基本概念
<a name="intro-structure-authorization"></a>

授權是指擁有完成其請求所需許可的主體。在授權期間，IAM 使用請求內容中的值來識別適用於請求的政策。接著使用政策以決定是否允許或拒絕請求。IAM 會將大多數許可政策儲存為 [JSON 文件](access_policies.md#access_policies-json)，它們可指定主體實體的許可。

有[數種類型的政策](access_policies.md)會影響授權請求。若要提供使用者存取帳戶中 AWS 資源的許可，您可以使用身分型政策。資源型政策可授予[跨帳戶存取權](access_permissions-required.md#UserPermissionsAcrossAccounts)。若要在不同的帳戶中發出請求，在其他帳戶中的政策必須可讓您存取資源，*而且*您用來發出請求的 IAM 實體必須具備允許該請求的身分型政策。

IAM 會檢查適用於請求內容的每個政策。IAM 政策評估使用*明確拒絕*，這表示如果單一許可政策包含拒絕的動作，則 IAM 會拒絕整個請求並停止評估。由於*預設拒絕*請求，因此適用的許可政策必須允許 IAM 請求的每個部分，以授權您的請求。用於單一帳戶中請求的評估邏輯遵循以下基本規則：
+ 根據預設，所有的請求一律拒絕。(一般而言，一律允許使用帳戶中的資源的 AWS 帳戶根使用者 登入資料提出請求)。
+ 任何許可政策中的明確允許 (以身分為基礎或以資源為基礎的政策) 都會覆寫此預設值。
+  AWS Organizations 服務控制政策 (SCP) 或資源控制政策 (RCP)、IAM 許可界限或工作階段政策的存在會覆寫允許。如果這些政策類型中有一或多個存在，則它們必須全部允許該請求。否則，它會被隱含拒絕。如需 SCP 和 RCP 的詳細資訊，請參閱 *AWS Organizations User Guide* 中 [Authorization policies in AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_authorization_policies.html)。
+ 任何政策中的明確拒絕會覆寫任何政策中的任何允許。

如需詳細資訊，請參閱 [政策評估邏輯](reference_policies_evaluation-logic.md)。<a name="intro-structure-actions"></a>

在 IAM 驗證並授權主體之後，IAM 會透過評估適用於主體的許可政策來核准其請求中的動作或操作。每個 AWS 服務都會定義其支援的動作 （操作），並包含您可以對資源執行的動作，例如檢視、建立、編輯和刪除該資源。適用於主體的許可政策必須包含執行操作所需的動作。若要要進一步了解 IAM 如何評估許可政策，請參閱 [政策評估邏輯](reference_policies_evaluation-logic.md)。

該服務定義了主體可對每個資源執行的一組動作。建立許可政策時，務必包含您希望使用者執行的動作。例如，IAM 支援超過 40 個使用者資源動作，包括下列基本動作：
+ `CreateUser`
+ `DeleteUser`
+ `GetUser`
+ `UpdateUser`

此外，可以在許可政策中指定條件，以便在請求符合指定條件時提供對資源的存取。例如，您可能想要政策陳述式在特定日期之後生效，或者在 API 請求中出現特定值時控制存取。若要指定條件，請使用政策陳述式的 [`Condition`](reference_policies_elements_condition_operators.md) 元素。

在 IAM 核准請求中的操作之後，主體可以使用帳戶中的相關資源。資源是存在於服務內的物件。範例包括 Amazon EC2 執行個體、IAM 使用者和 Amazon S3 儲存貯體。如果主體建立請求，以對未包含在許可政策中的資源執行動作，則服務會拒絕該請求。例如，如果您擁有刪除 IAM 角色的許可，但您請求刪除 IAM 群組，則如果您沒有刪除 IAM 群組的許可，則請求會失敗。若要進一步了解不同 AWS 服務支援的動作、資源和條件索引鍵，請參閱 [AWS 服務的動作、資源和條件索引鍵](reference_policies_actions-resources-contextkeys.html)。