

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

# 評估邏輯
<a name="sns-access-policy-language-evaluation-logic"></a>

評估時間的目標是決定是否應該允許或拒絕授予的請求。評估邏輯遵循幾個基本規則：
+ 根據預設，所有使用您的資源的請求來自任何人，但是您被拒絕
+ 所有允許覆寫任何預設拒絕
+ 明確拒絕覆寫任何允許
+ 評估政策的順序並不重要

以下流程圖和討論更詳細說明如何做出決定。

![\[說明 AWS 用來判斷是否應允許或拒絕存取資源的請求的決策程序。它從預設拒絕開始，檢查適用政策中是否有任何明確拒絕，然後尋找任何允許指示，最後，如果找不到允許，則預設會拒絕請求。\]](http://docs.aws.amazon.com/zh_tw/sns/latest/dg/images/AccessPolicyLanguage_Evaluation_Flow.gif)



|  |  | 
| --- |--- |
| 1 |  決定以預設拒絕開始。  | 
| 2 |   然後強制執行程式碼會評估所有適用於請求的政策 (根據資源、委託人、動作和條件)。 強制執行程式碼評估政策的順序並不重要。  | 
| 3 |   在所有那些政策中，強制執行程式碼會尋找適用於請求的明確拒絕。 如果找到即使一個，強制執行程式碼也會傳回「拒絕」的決定，然後完成程序 (這是明確拒絕；如需詳細資訊，請參閱 [明確拒絕](sns-access-policy-language-key-concepts.md#Define_HardDeny))。  | 
| 4 |  如果找不到明確拒絕，強制執行程式碼會尋找適用於請求的任何「允許」指示。 如果找到即使一個，強制執行程式碼也會傳回「允許」的決定，然後完成程序 (服務繼續處理請求)。  | 
| 5 |  如果找不到允許，則最後決定是「拒絕」(因為沒有明確拒絕或允許，這會被視為*預設拒絕* (如需詳細資訊，請參閱 [預設拒絕](sns-access-policy-language-key-concepts.md#Define_SoftDeny)))。  | 

## 明確拒絕和預設拒絕的相互作用
<a name="denials"></a>

如果政策不直接套用於請求，其會導致預設拒絕。例如，如果使用者請求使用 Amazon SNS，但主題上的政策 AWS 帳戶 完全不參考使用者的 ，則該政策會導致預設拒絕。

如果未符合陳述式中的條件，政策也會導致預設拒絕。如果符合陳述式中的所有條件，則政策會根據政策中的效用元素的值導致允許或明確拒絕。如果未符合條件，政策不會指定做什麼，所以該狀況下的預設結果是預設拒絕。

例如，假設您想要防止來自南極的請求。您撰寫一個僅允許非來自南極之請求的政策 (稱為政策 A1)。下圖說明該政策。

![\[說明政策 （政策 A1)，允許不是來自南極的請求。它顯示請求不得來自南極的條件，以套用「允許」效果；否則，預設動作是拒絕請求。\]](http://docs.aws.amazon.com/zh_tw/sns/latest/dg/images/AccessPolicyLanguage_Allow_Override_1.gif)


如果某人從美國傳送請求，便符合條件 (請求不是來自南極)。因此，允許該請求。但是，若某人從南極傳送請求，便不符合條件，於是請求的結果是預設拒絕。

您可以透過重寫政策 (名為政策 A2)(如下圖)，將結果轉變為明確拒絕。這時，若請求來自南極，政策明確拒絕該請求。

![\[說明政策 （政策 A2)，明確拒絕來自南極的請求。它顯示當滿足條件時 （請求來自南極），政策會產生明確拒絕，這表示在這些情況下請求一律會被拒絕。\]](http://docs.aws.amazon.com/zh_tw/sns/latest/dg/images/AccessPolicyLanguage_Allow_Override_2.gif)


若某人從南極傳送請求，便符合條件，於是請求的結果是明確拒絕。

預設拒絕和明確拒絕的區別非常重要，因為允許可以覆寫前者，但不能覆寫後者。例如，假設有另一個政策允許請求在 2010 年 6 月 1 日到達。當此政策結合限制從南極來的存取的政策時，此政策會如何影響整體結果？ 我們來比較結合以日期為基礎的政策 (我將其稱為政策 B) 和前述政策 A1 和 A2 時的整體結果。情況 1 結合政策 A1 和政策 B，情況 2 結合政策 A2 和政策 B。下圖和討論顯示當請求在 2010 年 6 月 1 日來自南極時的結果。

![\[比較兩個政策根據請求的原始伺服器 （南極） 和請求日期 (2010 年 6 月 1 日） 限制存取的情況。在案例 1 中，政策的組合會導致預設拒絕被允許覆寫，允許請求。在案例 2 中，一個政策的明確拒絕會覆寫另一個政策的允許，導致請求遭拒。\]](http://docs.aws.amazon.com/zh_tw/sns/latest/dg/images/AccessPolicyLanguage_Allow_Override.gif)


在情況 1 中，政策 A1 如本節之前所述傳回預設拒絕。政策 B 因為政策 (按照定義) 允許 2010 年 6 月 1 日進來的請求而傳回允許。政策 B 的允許會覆寫政策 A1 的預設拒絕，請求因此而被允許。

在情況 2 中，政策 A2 如本節之前所述傳回明確拒絕。一樣，政策 B 傳回允許。政策 A2 的明確拒絕會覆寫政策 B 的允許，請求因此而被拒絕。