在 OPA 中擷取 PDP 的外部資料 - AWS 方案指引

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

在 OPA 中擷取 PDP 的外部資料

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

OPA 綁定

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

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

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

  3. 綁定服務會複寫來自資料來源 (資料來源) 的資料。

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

如需綁定功能的詳細資訊,請參閱 OPA 文件

OPA 複寫 (推送資料)

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

  1. PEP 請求授權決策。

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

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

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

如需複寫選項的詳細資訊,請參閱 OPA 文件

OPA 動態資料擷取

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

如需提取方法的詳細資訊,請參閱 OPA 文件

使用授權服務搭配 OPA 實作

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

使用 OPA 擷取外部資料

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

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

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

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

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

擷取 OPA 流程的外部資料 – 複寫器 (在圖表中以藍色編號的標註表示):

  1. 複寫器 (授權服務的一部分) 會呼叫外部資料來源,並擷取要在 OPA 中更新的任何資料。這可能包括政策、規則和外部資料。此呼叫可以是在設定的節奏上,也可能是回應外部來源中的資料更新而發生。

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

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