根據預設,下列資料會以加密的方式儲存在混合式執行階段平面中:
- 快取資料
- 合約關鍵資料
- 金鑰管理系統 (KMS) 資料
- 鍵/值對應 (KVM) 資料
您不需要特別設定,不過,如果您基於某些原因想要使用自己的加密金鑰 (取代預設金鑰),可以按照本主題的說明進行操作。
加密金鑰範圍
Apigee Hybrid 加密金鑰有範圍。舉例來說,KMS 金鑰有機構範圍。也就是說,這組金鑰會用來加密整個機構的 KMS 資料。下表列出每個鍵類型的範圍:
加密金鑰 | 範圍 |
---|---|
合約 | 僅限機構 |
KMS | 僅限機構 |
KVM |
機構或環境 如果 KVM 政策指定 |
快取 | 僅限環境 |
關於預設加密金鑰
根據預設,Apigee hybrid 會提供一組 Base64 編碼金鑰,用於加密合約、KVM、KMS 和快取資料。Apigee 混合式安裝程式會將金鑰儲存在執行階段平面中,做為 Kubernetes 密鑰,並使用這些金鑰以 AES-128 標準加密技術加密您的資料。您可以自行控管金鑰,混合式管理層不會在任何時間點察覺金鑰。
建立新的 Apigee 混合式元件時,系統會將預設鍵套用至所有新的 Apigee 混合式元件。
變更預設加密金鑰
雖然這不是必要步驟,但您可以視需要變更任何預設加密金鑰。如要取代一或多個預設鍵,請按照下列步驟操作:
- 將下列節錄複製到覆寫檔案中。這項設定可讓您變更機構層級的 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
- 針對每個要取代的金鑰產生新金鑰。每個金鑰都必須是 Base64 編碼字串,長度必須是 16、24 或 32 位元組。另請參閱「如何建立已編碼的金鑰」。
- 將預設鍵取代為新鍵。在這個範例中,所有預設鍵都會替換為鍵:
defaults: org: kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c=" kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU=" contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ==" env: kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE=" cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="
覆寫預設鍵
您可以覆寫覆寫檔案中所述機構或特定環境的鍵。建立元件時,您為組織或個別環境指定的鍵會覆寫預設值。
- 將下列節錄複製到覆寫檔案中。這項設定可讓您變更機構層級的 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
- 為每個要覆寫的鍵產生新鍵。每個金鑰都必須是 Base64 編碼字串,長度必須是 16、24 或 32 位元組。另請參閱「如何建立已編碼的金鑰」。
- 指定要覆寫的鍵。在這個範例中,所有預設鍵都會替換為鍵:
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