

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

# 在 OPA 中擷取 PDP 的外部資料
<a name="external-data-opa"></a>

對於 OPA，如果授權決策所需的所有資料可以作為輸入提供，或作為作為作為查詢元件傳遞的 JSON Web Token (JWT) 的一部分提供，則不需要額外的組態。（將 JWTs和 SaaS 內容資料作為查詢輸入的一部分傳遞至 OPA 相當簡單。) OPA 可以在所謂的*過載輸入方法中接受任意 JSON 輸入*。如果 PDP 需要的資料超過可做為輸入或 JWT 包含的資料，OPA 會提供數個選項來擷取此資料。這些包括綁定、推送資料 （複寫） 和動態資料擷取。

## OPA 綁定
<a name="opa-bundling"></a>

OPA 綁定功能支援下列外部資料擷取程序：

1. 政策強制執行點  (PEP) 會請求授權決策。

1. OPA 會下載新的政策套件，包括外部資料。

1. 綁定服務會複寫來自資料來源 （資料來源） 的資料。

當您使用綁定功能時，OPA 會定期從集中式套件服務下載政策和資料套件。(OPA 不提供套件服務的實作和設定。) 從套件服務提取的所有政策和外部資料都會儲存在記憶體中。如果外部資料大小太大而無法存放在記憶體中，或資料變更太頻繁，此選項將無法運作。

如需綁定功能的詳細資訊，請參閱 [OPA 文件](https://www.openpolicyagent.org/docs/latest/external-data/#option-3-bundle-api)。

## OPA 複寫 （推送資料）
<a name="opa-replication"></a>

OPA 複寫方法支援下列外部資料擷取程序：

1. PEP 請求授權決策。

1. 資料複寫器會將資料推送至 OPA。

1. 資料複寫器會從資料來源 (s) 複寫資料。

在此綁定方法的替代方案中，資料會推送到 ，而不是由 OPA 定期提取。(OPA 不提供複寫器的實作和設定。) 推送方法具有與綁定方法相同的資料大小限制，因為 OPA 會將所有資料存放在記憶體中。推送選項的主要優點是您可以使用差異更新 OPA 中的資料，而不是每次都取代所有外部資料。這使得推送選項更適合經常變更的資料集。 

如需複寫選項的詳細資訊，請參閱 [OPA 文件](https://www.openpolicyagent.org/docs/latest/external-data/#option-4-push-data)。

## OPA 動態資料擷取
<a name="opa-dynamic-data-retrieval"></a>

如果要擷取的外部資料太大而無法快取到 OPA 記憶體中，則在評估授權決策期間，可以從外部來源動態提取資料。當您使用此方法時，資料一律是最新的。這種方法有兩個缺點：網路延遲和可存取性。目前，OPA 只能在執行時間透過 HTTP 請求擷取資料。如果傳送至外部資料來源的呼叫無法以 HTTP 回應傳回資料，則需要自訂 API 或其他機制，才能將此資料提供給 OPA。由於 OPA 只能透過 HTTP 請求擷取資料，而且擷取資料的速度至關重要，我們建議您盡可能使用 Amazon DynamoDB AWS 服務 等 來保留外部資料。

如需提取方法的詳細資訊，請參閱 [OPA 文件](https://www.openpolicyagent.org/docs/latest/external-data/#option-5-pull-data-during-evaluation)。

## 使用授權服務搭配 OPA 實作
<a name="using-an-authorization-service-for-implementation-with-opa"></a>

當您使用綁定、複寫或動態提取方法來擷取外部資料時，我們建議您的授權服務促進此互動。這是因為授權服務可以擷取外部資料並將其轉換為 JSON，以便 OPA 做出授權決策。下圖顯示授權服務如何搭配這三種外部資料擷取方法運作。

![使用 OPA 擷取外部資料](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/saas-multitenant-api-access-authorization/images/opa-external-data.png)


**擷取 OPA 流程的外部資料 – 在決策時間的套件或動態資料擷取** （圖表中以紅色編號的標註表示）：

1. OPA 會呼叫授權服務的本機 API 端點，該端點設定為套件端點，或在授權決策期間用於動態資料擷取的端點。

1. 授權服務會查詢或呼叫外部資料來源來擷取外部資料。（對於套件端點，此資料也應包含 OPA 政策和規則。 套件更新會取代 OPA 快取中的所有項目，包括資料和政策。)

1. 授權服務會對傳回的資料執行任何必要的轉換，以將其轉換為預期的 JSON 輸入。

1. 資料會傳回 OPA。它會快取在用於套件組態的記憶體中，並立即用於動態授權決策。

**擷取 OPA 流程的外部資料 – 複寫器** （圖表中以藍色編號的標註表示）：

1. 複寫器 （授權服務的一部分） 會呼叫外部資料來源，並擷取要在 OPA 中更新的任何資料。這可以包含政策、規則和外部資料。此呼叫可以按照設定的節奏進行，也可以回應外部來源中的資料更新。

1. 授權服務會對傳回的資料執行任何必要的轉換，以將其轉換為預期的 JSON 輸入。

1. 授權服務會呼叫 OPA 並快取記憶體中的資料。授權服務可以選擇性地更新資料、政策和規則。