

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

# 最佳實務
<a name="best-practices"></a>

本節列出本指南的一些高階要點。如需各點的詳細討論，請遵循對應區段的連結。

## 選取適用於您應用程式的存取控制模型
<a name="selection"></a>

本指南討論數個[存取控制模型](https://docs.aws.amazon.com/prescriptive-guidance/latest/saas-multitenant-api-access-authorization/access-control-types.html)。根據您的應用程式和業務需求，您應該選取適合您的模型。考慮如何使用這些模型來滿足您的存取控制需求，以及存取控制需求可能如何演變，這需要變更您選擇的方法。

## 實作 PDP
<a name="implement-pdp"></a>

[政策決策點 (PDP)](https://docs.aws.amazon.com/prescriptive-guidance/latest/saas-multitenant-api-access-authorization/pdp.html) 的特性可以是政策或規則引擎。此元件負責套用政策或規則，並傳回是否允許特定存取的決定。PDP 允許將應用程式程式碼中的授權邏輯卸載至個別系統。這可以簡化應用程式程式碼。它還提供easy-to-use等冪界面，用於對 APIs、微服務、後端前端 (BFF) 層或任何其他應用程式元件進行授權決策。PDP 可用來在整個應用程式中一致地強制執行租用需求。

## 為應用程式中的每個 API 實作 PEPs
<a name="implement-pep"></a>

[政策強制執行點 (PEP)](https://docs.aws.amazon.com/prescriptive-guidance/latest/saas-multitenant-api-access-authorization/pep.html) 的實作需要判斷應用程式中應在何處執行存取控制。首先，找到應用程式中您可以納入 PEPs點。在決定在何處新增 PEPs 時，請考慮此原則：

*如果應用程式公開 API，則應對該 API 進行授權和存取控制。*

## 考慮使用 Amazon Verified Permissions 或 OPA 作為 PDP 的政策引擎
<a name="use-avp-opa"></a>

Amazon Verified Permissions 優於自訂政策引擎。它為您建置的應用程式提供可擴展、精細的許可管理和授權服務。它支援以高階宣告性開放原始碼語言 Cedar 撰寫政策。因此，相較於實作您自己的解決方案，使用 Verified Permissions 實作政策引擎所需的開發工作較少。此外，Verified Permissions 是完全受管的，因此您不需要管理基礎基礎設施。

開放政策代理程式 (OPA) 優於自訂政策引擎。OPA 及其使用 Rego 進行的政策評估提供彈性的預先建置政策引擎，支援以高階宣告性語言撰寫政策。這使得實作政策引擎所需的工作量遠低於建置您自己的解決方案。此外，OPA 很快就成為支援良好的授權標準。

## 實作適用於 DevOps、監控和記錄的 OPA 控制平面
<a name="implement-control-plane"></a>

由於 OPA 不提供透過來源控制更新和追蹤授權邏輯變更的方法，因此我們建議您[實作控制平面](https://docs.aws.amazon.com/prescriptive-guidance/latest/saas-multitenant-api-access-authorization/considerations.html#monitoring)來執行這些函數。這將允許更輕鬆地將更新分發給 OPA 代理程式，特別是在 OPA 在分散式系統中操作時，這將減少使用 OPA 的管理負擔。此外，控制平面可用來收集日誌以進行彙總，並監控 OPA 代理程式的狀態。

## 在 Verified Permissions 中設定記錄和可觀測性功能
<a name="configure-avp-logging"></a>

Verified Permissions 可讓您輕鬆存取可觀測性功能。您可以設定服務來記錄 Amazon CloudWatch 日誌群組 AWS CloudTrail、S3 儲存貯體或 Amazon Data Firehose 交付串流的所有存取嘗試，以便快速回應安全事件和稽核請求。此外，您可以透過 監控服務的運作狀態 AWS Health 儀板表。由於 Verified Permissions 是受管服務，其運作狀態由 維護 AWS，您可以使用其他 AWS 受管服務來設定其可觀測性功能。

## 使用 CI/CD 管道在 Verified Permissions 中佈建和更新政策存放區和政策
<a name="use-cd-cd-pipeline"></a>

Verified Permissions 是一種受管服務，因此您不需要管理、設定或維護控制平面或代理程式來執行更新。不過，我們仍建議您使用持續整合和持續部署 (CI/CD) 管道，透過 AWS SDK 來管理 Verified Permissions 政策存放區和政策更新的部署。當您變更 Verified Permissions 資源時，這項工作可以消除手動工作，並降低運算子錯誤的可能性。

## 判斷授權決策是否需要外部資料，然後選取模型以容納它
<a name="select-external-data-model"></a>

如果 PDP 可以僅根據 JSON Web Token (JWT) 中包含的資料進行授權決策，則通常不需要匯入外部資料來協助做出這些決策。如果您使用 Verified Permissions 或 OPA 做為 PDP，它也可以接受作為請求一部分傳遞的額外輸入，即使此資料不包含在 JWT 中。對於 Verified Permissions，您可以使用其他資料的內容參數。對於 OPA，您可以使用 JSON 資料作為過載輸入。如果您使用 JWT，內容或過載輸入方法通常比在另一個來源中維護外部資料更容易。如果需要更複雜的外部資料來做出授權決策，[OPA 會提供數種模型來擷取外部資料](https://docs.aws.amazon.com/prescriptive-guidance/latest/saas-multitenant-api-access-authorization/considerations.html#external-data)，而 Verified Permissions 可以透過使用授權服務參考外部來源來補充其授權請求中的資料。