

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

# 以身分為基礎和以資源為基礎的政策
<a name="access_policies_identity-vs-resource"></a>

政策是 中的物件， AWS 當與身分或資源建立關聯時， 會定義其許可。當您建立許可政策來限制對資源的存取時，您可以選擇*以身分為基礎的政策*或*以資源為基礎的政策*。

**以身分為基礎的政策**會連接至 IAM 使用者、群組或角色。這些政策可讓您指定該身分可以執行哪些動作 (其許可)。例如，您可以將政策連接到名為 John 的 IAM 使用者，指出他已獲允許而可執行 Amazon EC2 `RunInstances` 動作。政策可進一步指出 John 已獲允許而可從名為 `MyCompany` 的 Amazon DynamoDB 資料表中取得項目。您也可以允許 John 管理他自己的 IAM 安全憑證。以身分為基礎的政策，可以[受管理或內嵌](access_policies_managed-vs-inline.md)。

**以資源為基礎的政策**會連接至資源。例如，您可以將資源型政策連接到 Amazon S3 儲存貯體、Amazon SQS 佇列、VPC 端點、 AWS Key Management Service 加密金鑰和 Amazon DynamoDB 資料表和串流。如需有關可支援以資源為基礎之政策的服務清單，請參閱[AWS 使用 IAM 的 服務](reference_aws-services-that-work-with-iam.md)。

有了以資源為基礎的政策，您可以指定誰可以存取資源，以及他們可以在資源上執行哪些動作。若要了解在您信任區域 (受信任組織或帳戶) 外帳戶中的主體是否具有擔任您角色的許可，請參閱[什麼是 IAM Access Analyzer？](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html)。以資源為基礎的政策僅是內嵌，而不是受管理。

**注意**  
*以資源為基礎的*政策不同於*資源層級*的許可。您可以將以資源為基礎的政策直接連接到本主題中所述的資源。資源層級許可代表有能力使用 [ARN](reference_identifiers.md#identifiers-arns) 在政策中指定個別的資源。只有部分 AWS 服務支援資源型政策。如需服務支援以資源為基礎的政策和資源層級許可的清單明細，請參閱[AWS 使用 IAM 的 服務](reference_aws-services-that-work-with-iam.md)。

若要了解以身分為基礎的政策和以資源為基礎的政策如何在相同帳戶內進行互動，請參閱 [單一帳戶中請求的政策評估](reference_policies_evaluation-logic_policy-eval-basics.md)。

若要了解政策如何跨帳戶互動，請參閱 [跨帳戶政策評估邏輯](reference_policies_evaluation-logic-cross-account.md)。

為了更了解這些概念，檢視這些圖表。`123456789012` 帳戶的管理員會將*以身分為基礎的政策*連接至`John`、`Carlos` 和 `Mary` 使用者。您可以對特定資源執行在這些政策中的一些動作。例如，使用者 `John` 可以對 `Resource X` 執行一些動作。這是一個在以身分為基礎政策的*資源層級許可*。管理員也將*以資源為基礎的政策*新增至 `Resource X`、`Resource Y` 和 `Resource Z`。以資源為基礎的政策允許您指定誰可以存取該資源。例如，在 `Resource X` 上以資源為基礎的政策允許 `John` 和 `Mary` 使用者列出和讀取資源的存取權。

![\[以身分為基礎和以資源為基礎的政策之比較\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/Types_of_Permissions.diagram.png)


`123456789012` 帳戶範例允許以下使用者執行所列的動作：
+ **John** – John 可以對 `Resource X` 執行列出和讀取動作。他是由以其使用者身分為基礎的政策和以資源為基礎的政策 `Resource X` 獲與此許可。
+ **Carlos** – Carlos 可以對 `Resource Y` 執行列出、讀取和寫入動作，但存取 `Resource Z` 時會遭拒。以 Carlos 之身分為基礎的政策允許可執行對 `Resource Y` 的列出和讀取動作。以 `Resource Y` 資源為基礎的政策允許擁有寫入許可。不過，雖然他的以身分為基礎的政策可允許存取 `Resource Z`，以 `Resource Z` 資源為基礎的政策會拒絕該存取。明確 `Deny`拒絕會覆寫 `Allow`，且他對 `Resource Z` 的存取會遭拒。如需詳細資訊，請參閱[政策評估邏輯](reference_policies_evaluation-logic.md)。
+ **Mary** – Mary 可以對 `Resource X`、`Resource Y` 和 `Resource Z` 執行列出、讀取和寫入操作。她的以身分為基礎的政策允許比以資源為基礎的政策對更多動作執行更多動作，但這些以資源為基礎的政策不會拒絕存取。
+ **Zhang** –Zhang 擁有對 `Resource Z` 的完整存取權。Zhang 沒有以身分為基礎的政策，但以 `Resource Z` 資源為基礎的政策可允許完整存取資源。Zhang 也可以對 `Resource Y` 執行清單和讀取動作。

以身分為基礎的政策和以資源為基礎的政策都是許可政策，且會同時受到評估。對於僅套用許可政策的請求， AWS 會先檢查 的所有政策`Deny`。如果有的話，則該請求會遭拒。然後， AWS 會檢查各個 `Allow`。如果至少有一個政策陳述式允許在請求中的動作，則該請求會受到允許。在以身分為基礎的政策中或以資源為基礎的政策中，是否有 `Allow` 並不重要。

**重要**  
此邏輯僅在單一 AWS 帳戶內做出該請求時適用。對於從一個帳戶對另一個帳戶所做的請求，在 `Account A` 中的請求者必須擁有以身分為基礎的政策，該政策能允許對 `Account B` 中的資源做出請求。此外，在 `Account B` 中以資源為基礎的政策，必須允許在 `Account A` 中的請求者存取資源。兩個帳戶中均須有允許操作的政策，否則請求會失敗。如需有關使用跨帳戶存取之以資源為基礎的政策詳細資訊，請參閱 [IAM 中的跨帳戶資源存取](access_policies-cross-account-resource-access.md)。

具有特定許可的使用者可能請求資源，而該資源也有連接許可政策。在這種情況下， 會在決定是否授予對資源的存取權時， AWS 評估兩組許可。如需有關如何評估政策的詳細資訊，請參閱[政策評估邏輯](reference_policies_evaluation-logic.md)。

**注意**  
Amazon S3 支援以身分為基礎的政策和以資源為基礎的政策 (稱為*儲存貯體政策*)。此外，Amazon S3 支援許可機制稱為*存取控制清單 (ACL)*，其為獨立的 IAM 政策和許可。您可以合併使用 IAM 政策與 Amazon S3 ACL。如需詳細資訊，請參閱 *Amazon Simple Storage Service 使用者指南*中的[存取控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingAuthAccess.html) 。