資料加密

根據預設,下列資料會加密儲存在混合式執行階段平面中:

  • 金鑰管理系統 (KMS) 資料
  • 鍵/值對應 (KVM) 資料
  • 快取資料

您不必進行任何特殊設定,不過,如果您基於某些原因想使用自己的加密金鑰 (取代預設金鑰),可以按照本主題的說明操作。

加密金鑰範圍

KMS、KVM 和快取加密金鑰都有範圍。舉例來說,KMS 金鑰的範圍是「機構」。也就是說,這個金鑰會用於加密整個機構的 KMS 資料。 下表列出各類金鑰的適用範圍:

加密金鑰 範圍
KMS 僅限機構
KVM 機構或環境

如果 KVM 政策指定 apiproxypolicy (API Proxy 修訂版本) 範圍,系統會使用機構層級金鑰加密資料。如要大致瞭解如何在 Apigee Edge 中使用 KVM,請參閱「使用鍵/值對應」。

快取 僅限環境

關於預設加密金鑰

根據預設,Apigee Hybrid 提供一組 Base64 編碼金鑰,用於加密 KVM、KMS 和快取資料。Apigee Hybrid 安裝程式會將金鑰儲存在執行階段層面,做為 Kubernetes Secret,並使用這些金鑰以 AES-128 標準加密方式加密資料。金鑰由您控管,混合式管理平台絕不會知道金鑰。

變更預設加密金鑰

雖然不是必要步驟,但您可以視需要變更任何預設加密金鑰。 如要取代一或多個預設金鑰,請按照下列步驟操作:

  1. 將下列詩節複製到覆寫檔案。 您可以透過這項設定,變更機構層級的 KMS 和 KVM 加密金鑰,以及環境層級的 KVM 和快取加密金鑰:
    defaults:
      org:
        kmsEncryptionKey: base64-encoded-key
        kvmEncryptionKey: base64-encoded-key
      env:
        kvmEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. 為要取代的每個金鑰產生新金鑰。每個金鑰都必須是 Base64 編碼的字串,且長度必須為 16、24 或 32 個位元組。 另請參閱如何建立編碼金鑰
  3. 將預設鍵替換為新鍵。在本範例中,所有預設鍵都會替換為鍵:
    defaults:
      org:
        kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c="
        kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU="
      env:
        kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE="
        cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="
  4. 將覆寫檔案套用至叢集,方法如下:
    • 如果變更 KVM 或快取金鑰,請只更新環境:
      $APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --env env_name
    • 如果變更 KMS 金鑰,請更新機構和環境:
      $APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --env env_name --org org_name

回溯相容性注意事項

如果您在第一次安裝 Apigee Hybrid 時,移除覆寫檔案中的加密金鑰,就會有效停用加密功能,且系統會以未加密的形式儲存值。如果您日後提供金鑰來啟用加密功能,現有資料仍不會加密,但之後新增的資料都會加密。系統會繼續正常運作,處理未加密的資料和新加密的資料。

此外,請注意,執行階段資料加密後,您就無法變更加密金鑰。

如何建立編碼金鑰

KVM、KMS 和快取加密功能需要格式正確的 Base64 編碼金鑰。 用於上述任一用途的金鑰必須經過 Base64 編碼,且長度為 16、24 或 32 位元組,如下所示:

以下範例指令會產生適用的隨機 32 字元 Base64 編碼字串:

head -c 32 /dev/random | openssl base64