使用鍵/值對應

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

有時候,您可能會想儲存要在執行階段擷取資料 (非過期的資料) 不應在 API Proxy 邏輯中以硬式編碼方式寫入鍵/值對應關係 (KVM) 相當適合用於這類用途。A 罩杯 KVM 是一組經過加密或未加密的鍵/值字串組合。 我們來看看下面兩個範例:

如要瞭解其他類型的持續性,請參閱 新增快取與持續性

KVM 情境

在以下情況中,KVM 可派上用場:

  • 您的 API Proxy 需要在測試中呼叫一個目標 (或服務呼叫) 網址 另一個目標網址您不必以硬式編碼的方式 您可以讓 Proxy 偵測其所在的環境,執行相關的金鑰 值對應作業政策,然後從您的其中一個 KVM 擷取正確的目標網址 已建立。之後,如果其中一個或兩個目標發生變化,只要將 KVM 更新為 新的網址Proxy 會接收新的值,不需重新部署 Proxy。
  • 您想儲存憑證、私密金鑰或權杖 (如外部權杖) 服務、產生 OAuth 權杖所需的憑證 用於 Java 呼叫或 JavaScript 加密或 JSON Web Token (JWT) 簽署。而不是 在要求中傳遞憑證、金鑰或權杖,或在 Proxy 邏輯中以硬式編碼方式撰寫。 可以儲存在 KVM (一律經過加密) 中,並在呼叫 也就是需要這些字串的指定目標

您將瞭解儲存鍵/值字串組合的其他用途。於 在下列情況下,請考慮使用 KVM:

  • 程式碼中的特定位置在執行階段需要不同的值。
  • 傳送機密資料時不得進行硬式編碼。
  • 您希望能儲存不會過期的值,像是快取。

KVM 是範圍

範圍是指「可使用 KVM 的國家/地區」。KVM 可在下列範圍建立: organizationenvironmentapiproxy

舉例來說,如果只有一個 API Proxy 需要 KVM 中的資料,您可以在以下位置建立 KVM: apiproxy 範圍,只有該 API Proxy 可以存取資料。

或者,您可能想要測試環境中的所有 API Proxy 都能存取鍵/值對應, 您需要在環境範圍建立鍵/值對應。部署於 「正式」環境無法存取「test」環境範圍內如果您想要使用相同的 KVM 才能在實際工作環境中使用,請建立範圍限定為「prod」的平行 KVM環境。

如要讓所有環境中的所有 Proxy 存取相同的 KVM,請在 organization 範圍。

關於加密 KVM

加密 KVM 會以 Apigee 產生的 AES-128 加密金鑰進行加密。用來 加密 KVM 會儲存於 KVM 範圍。例如,在某個機構中 您在環境範圍建立的加密 KVM 會使用相同的環境範圍建立 鍵。

Edge 會以下列方式處理加密值的顯示方式。 (如要瞭解如何建立加密 KVM,請參閱管理及使用 KVM 一文)。

Edge UI

加密鍵/值會對應 UI 中以星號遮蔽的顯示值 (*****)。適用對象 範例:

Management API

在 Management API 中,系統會以遮罩方式傳回加密值。以下是範例管理 有關 Get 已加密 KVM 呼叫的 API 回應:

{
  "encrypted": true,
  "entry": [
    {
      "name": "Key1",
      "value": "*****"
    },
    {
      "name": "Key2",
      "value": "*****"
    }
  ],
  "name": "secretMap"
}

追蹤與偵錯

使用鍵/值對應作業政策時 來擷取加密 KVM 值,需提供變數名稱來儲存 值。如要取得加密值,請新增「private.」前置字串為 變數名稱,這會導致 KVM 鍵/值無法顯示在 Trace 和偵錯工作階段中。

限制

您機構: 核心 已啟用持續性服務 (CPS)

  • KVM 名稱/ID 須區分大小寫。
  • 金鑰大小上限為 2 KB。
  • 值的大小上限為 10 KB。

針對 Apigee Edge for Private Cloud,每個 KVM 不得超過 15 MB (也就是鍵與值的總和大小)。 如果超過上限,Apigee Edge for Private Cloud 會傳回錯誤。如要確定 KVM 大小,您可以使用 nodetool cfstats 指令。

KVM 較大可能會導致效能降低。因此,您應該 將單體式 KVM 分成較小的 VM,藉此提高效能

管理及使用 KVM

您可透過多種方式建立、管理及使用 KVM。本節將說明 包括建立、擷取加密和未加密 KVM 的選項。

建立及更新 KVM

您可以透過下列方式建立及更新 KVM:

  • 鍵/值對應作業政策 (無加密功能)

    如要透過 API Proxy 建立及更新執行階段 KVM,請使用 鍵/值對應作業政策: (您可以在政策中指定 KVM 名稱 父項的 mapIdentifier 屬性 element.)

    <InitialEntries> 元素可讓您建立並填入 只要在 UI 中儲存政策或部署 API Proxy (若您是離線開發的 Proxy)。如果政策中的值有所變更, 都會遭到覆寫在現有的 KVM 旁邊新增鍵/值 現有的鍵/值

    如果沒有 KVM,<Put> 元素會建立新的 KVM ,就會建立具有一或多個值的鍵。如果 KVM 已經 系統會新增鍵/值 (如果鍵已存在,則會更新)。別擔心!您可以使用 KVM 政策中的多個 <Put> 元素。

  • 管理 API

    Management API 只能在執行階段 (而非執行階段) 的情況下以 KVM 的身分使用 在您的 API Proxy 中舉例來說,您可能有內部指令碼使用管理 提供相關 API,以便在測試環境中刪除並重新建立 KVM;或者您也可以重設金鑰的值 中,所有 Proxy 都可能取貨。(如要處理 KVM 的執行階段操控,請使用 鍵/值對應作業政策 在您的 Proxy 中)。

    鍵/值 Maps Management API 能讓您建立、更新及刪除已加密的 KVM 和鍵/值 或全部「範圍」 (機構、環境和 apiproxy)。

    如要使用 Management API 建立加密 KVM,請將 "encrypted" : "true" 新增至 JSON 酬載。您只能在建立 Cloud Storage 時加密 KVM 具體做法是指示 Kubernetes 建立並維護 一或多個代表這些 Pod 的物件您無法加密現有的 KVM。

  • 管理 UI

    在 Edge Management UI 中,您可以建立和更新 環境範圍 KVM,是 KVM 範圍的唯一範圍 。您可以透過管理 UI 手動管理 API 的 KVM 資料 Proxy 執行要求 請參閱「建立及編輯環境鍵/值對應關係」一文 瞭解詳情

擷取 KVM

擷取已加密及未加密的金鑰值對應的方式相同,但略有不同 使用鍵/值對應作業政策擷取時。

  • 政策:使用 <Get> 元素中的 鍵/值對應作業政策 來擷取加密及未加密的 KVM。兩者稍有差異 使用政策擷取加密值,您必須在其中新增「private.」 前置字元為包含擷取值的變數名稱,如 「取得作業」區段 參考主題。該前置字串會向 Trace 和偵錯隱藏值 工作階段才會受到影響
  • Management API:如要管理應用程式,您可以使用 建立及編輯環境鍵/值對應關係 以取得 KVM 和鍵/值舉例來說 取得並儲存 JSON 定義來備份 KVM,請使用 Management API。請注意 但經過加密的值在 API 回應中會顯示為 *****。
  • 管理 UI:您可以在管理頁面中查看以環境為範圍的 KVM 方法是依序前往 API >環境設定 >鍵/值對應 (傳統版 Edge) 或「管理」>「管理員」環境 >鍵/值對應 (新邊緣)。

KVM 範例

如需使用 KVM 填入網址值的範例,請參閱 https://community.apigee.com/questions/32727/templatize-target-url-with-kvm-by-environment.html.