資料加密

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

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

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

加密金鑰範圍

Apigee Hybrid 加密金鑰有範圍。舉例來說,KMS 金鑰有機構範圍。也就是說,這組金鑰會用來加密整個機構的 KMS 資料。下表列出每個鍵類型的範圍:

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

如果 KVM 政策指定 apiproxypolicy (API 代理程式修訂版本) 範圍,系統會使用組織層級金鑰加密資料。如要概略瞭解 KVM 在 Apigee Edge 中的使用方式,請參閱「使用鍵/值對應」。

快取 僅限環境

關於預設加密金鑰

根據預設,Apigee hybrid 會提供一組 Base64 編碼金鑰,用於加密合約、KVM、KMS 和快取資料。Apigee 混合式安裝程式會將金鑰儲存在執行階段平面中,做為 Kubernetes 密鑰,並使用這些金鑰以 AES-128 標準加密技術加密您的資料。您可以自行控管金鑰,混合式管理層不會在任何時間點察覺金鑰。

建立新的 Apigee 混合式元件時,系統會將預設鍵套用至所有新的 Apigee 混合式元件。

變更預設加密金鑰

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

  1. 將下列節錄複製到覆寫檔案中。這項設定可讓您變更機構層級的 KMS 和 KVM 加密金鑰,以及環境層級的 KVM 和快取加密金鑰:
    defaults:
      org:
        kmsEncryptionKey: base64-encoded-key
        kvmEncryptionKey: base64-encoded-key
        contractEncryptionKey: base64-encoded-key
    
      env:
        kvmEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. 針對每個要取代的金鑰產生新金鑰。每個金鑰都必須是 Base64 編碼字串,長度必須是 16、24 或 32 位元組。另請參閱「如何建立已編碼的金鑰」。
  3. 將預設鍵取代為新鍵。在這個範例中,所有預設鍵都會替換為鍵:
    defaults:
      org:
        kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c="
        kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU="
        contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
      env:
        kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE="
        cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="

覆寫預設鍵

您可以覆寫覆寫檔案中所述機構或特定環境的鍵。建立元件時,您為組織或個別環境指定的鍵會覆寫預設值。

  1. 將下列節錄複製到覆寫檔案中。這項設定可讓您變更機構層級的 KMS 和 KVM 加密金鑰,以及環境層級的 KVM 和快取加密金鑰:
    org:YOUR_ORG_NAME
    
    kmsEncryptionKey: base64-encoded-key
    kvmEncryptionKey: base64-encoded-key
    contractEncryptionKey: base64-encoded-key
    
    envs
      - name: ENV_NAME
        kvmEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
    
      - name: 2ND_ENV_NAME
        kvmEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. 為每個要覆寫的鍵產生新鍵。每個金鑰都必須是 Base64 編碼字串,長度必須是 16、24 或 32 位元組。另請參閱「如何建立已編碼的金鑰」。
  3. 指定要覆寫的鍵。在這個範例中,所有預設鍵都會替換為鍵:
    org:hybrid-org
    
    kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
    kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
    contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
    
    envs:
      - name: prod
        kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
        cacheEncryptionKey: "QjEyAvC1Njc4OTAxMjM0NQ=="
    
    envs:
      - name: test
        kvmEncryptionKey: "A1b2C3d4E5f6G7h8I9j10K=="
        cacheEncryptionKey: "B1c2D3e4F5f6H7i8J9k10L=="

套用主要變更

使用下列 Helm 指令,將覆寫檔案套用至叢集:
  • 如果您變更了機構的合約金鑰或 KVM 金鑰,請更新該機構:
    helm upgrade ORG_NAME apigee-org/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
  • 如果您變更環境的快取鍵或 KVM 鍵,請更新環境:
    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE.yaml
    
  • 如果變更 KMS 金鑰,請同時更新機構和環境:
    helm upgrade ORG_NAME apigee-org/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --set env=ENV_NAME \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

回溯相容性注意事項

如果您在第一次安裝 Apigee hybrid 時移除覆寫檔案中的加密金鑰,就會有效停用加密功能,且值會以未加密的方式儲存。如果您稍後透過提供金鑰啟用加密功能,現有資料仍會保持未加密狀態;不過,日後新增的任何資料都會加密。系統將繼續正常處理未加密的資料和新加密的資料。

另請注意,一旦執行階段資料經過加密,就無法再變更加密金鑰。

如何建立經過編碼的金鑰

KVM、KMS 和快取加密功能需要使用格式正確的 Base-64 編碼金鑰。用於上述任一用途的金鑰,必須是從長度為 16、24 或 32 個位元的字串進行 Base-64 編碼,如下所述:

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

head -c 32 /dev/random | openssl base64