本文件說明如何啟用 儲存的開發人員應用程式消費者密鑰 (用戶端憑證) 登錄到 Cassandra 資料庫中的資料
總覽
傳統的 Apigee Edge for Private Cloud 針對鍵/值對應關係提供選用加密機制 (KVM) 資料和 OAuth 存取權杖。
下表說明 Apigee 專用私有雲資料的加密選項:
實體 | 預設啟用加密功能 | 可選用加密功能 | 相關說明文件 |
KVM | 否 | 是 | 請參閱關於加密的 KVM。 |
OAuth 存取權杖 | 否 | 是 | 請參閱提高安全性的雜湊權杖。 |
開發人員應用程式消費者密鑰 | 否 | 是 | 如要啟用,請執行本文件的設定步驟。 |
如要啟用用戶端憑證加密功能,您需要在 所有訊息處理器與管理伺服器節點:
- 建立 KeyStore 來儲存 金鑰加密金鑰 (KEK)。Apigee 會使用這組加密金鑰來加密資料加密所需的密鑰。
- 編輯所有管理伺服器和訊息處理器節點的設定屬性。
- 建立開發人員應用程式以觸發金鑰建立程序。
- 重新啟動節點。
本文件詳細說明這些工作。
重要須知 加密功能
本文件中的步驟說明如何啟用 KEK 功能,讓 Apigee 能 用來加密開發人員應用程式的密鑰 靜態儲存用戶端密鑰。
根據預設,資料庫中現有的值會保持不變 (純文字), 繼續照常運作
如果您對未加密的實體執行任何寫入作業,系統會在 作業已儲存。舉例來說,如果您撤銷未加密的權杖,但之後核准了 就會對新核准的權杖進行加密。
保護金鑰安全
請務必將 KEK 儲存的 KeyStore 副本存放在安全的位置。建議您自行使用 安全機制儲存 KeyStore 副本。如本文件所述 每個訊息處理器及管理伺服器節點都必須設置 KeyStore 設定檔可以參照 但儲存容器時 以便妥善保存及當做備份。
啟用金鑰加密
請按照下列步驟執行用戶端密鑰加密:
必要條件
您必須符合下列需求條件,再執行本文件的步驟:
- 您必須安裝或升級至 Apigee Edge for Private Cloud 4.50.00.10 以上版本。
- 您必須是 Apigee Edge for Private Cloud 管理員。
步驟 1:產生 KeyStore
請按照下列步驟建立 KeyStore,用於保存金鑰加密金鑰 (KEK):
- 執行以下指令來產生 KeyStore 以儲存將用於
將 KEK 加密。完整輸入指令,(您可以視需要提供任何 KeyStore 名稱):
keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \ -keystore kekstore.p12 -storetype PKCS12
在系統提示時輸入密碼。您將在後續章節中使用 設定管理伺服器和訊息處理器
這個指令會產生 kekstore.p12 KeyStore 檔案,其中包含 別名 KEYSTORE_NAME。
- (選用) 使用下列指令確認檔案已正確產生。如果檔案
正確,指令會傳回別名 KEYSTORE_NAME 的鍵:
keytool -list -keystore kekstore.p12
步驟 2:設定管理伺服器
接下來,請設定管理伺服器。如果您在多個節點上安裝管理伺服器, 您必須在每個節點重複執行上述步驟
- 將您在步驟 1 產生的 KeyStore 檔案複製到管理伺服器節點的目錄,例如
/opt/apigee/customer/application
。例如:cp certs/kekstore.p12 /opt/apigee/customer/application
- 確保
apigee
使用者能夠讀取檔案:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
chmod 400 /opt/apigee/customer/application/kekstore.p12
- 在
/opt/apigee/customer/application/management-server.properties
中新增下列屬性。 如果檔案不存在,請建立一個。另請參閱「屬性檔案參考資料」。
conf_keymanagement_kmscred.encryption.enabled=true # Fallback is true to ensure your existing plaintext credentials continue to work conf_keymanagement_kmscred.encryption.allowFallback=true conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME # These could alternately be set as environment variables. These variables should be # accessible to Apigee user during bootup of the Java process. If environment # variables are specified, you can skip the password configs below. # KMSCRED_ENCRYPTION_KEYSTORE_PASS= # KMSCRED_ENCRYPTION_KEK_PASS= See also Using environment variables for configuration properties. conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD
請注意,視用於產生 KeyStore 的工具而定,
KEK_PASSWORD
可能與KEYSTORE_PASSWORD
相同。 - 使用下列指令重新啟動管理伺服器:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-management-server wait_for_ready
管理伺服器準備就緒時,
wait_for_ready
指令會傳回下列訊息:Checking if management-server is up: management-server is up.
- 如果您在多個節點上安裝管理伺服器,請在每個管理項目中重複上述步驟 1 到 4 伺服器節點
步驟 3:建立開發人員應用程式
現在管理伺服器已更新,您必須建立開發人員應用程式來觸發產生作業 加密用戶端憑證資料時使用的金鑰:
- 建立開發人員應用程式,觸發建立資料加密金鑰 (KEK) 的建立作業。操作步驟 請參閱註冊應用程式。
- 如有需要,請刪除開發人員應用程式。加密後不需要保留此密碼 就會產生金鑰
步驟 4:設定訊息處理器
除非訊息處理工具已啟用加密功能,否則執行階段要求將無法處理任何加密憑證。
- 將您在步驟 1 產生的 KeyStore 檔案複製到訊息處理器節點的目錄中。
例如
/opt/apigee/customer/application
。例如:cp certs/kekstore.p12 /opt/apigee/customer/application
- 確保
apigee
使用者能夠讀取檔案:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
- 在
/opt/apigee/customer/application/message-processor.properties
中新增下列屬性。 如果檔案不存在,請建立一個。另請參閱「屬性檔案參考資料」。conf_keymanagement_kmscred.encryption.enabled=true # Fallback is true to ensure your existing plaintext credentials continue to work conf_keymanagement_kmscred.encryption.allowFallback=true conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME # These could alternately be set as environment variables. These variables should be # accessible to Apigee user during bootup of the Java process. If environment # variables are specified, you can skip the password configs below. # KMSCRED_ENCRYPTION_KEYSTORE_PASS= # KMSCRED_ENCRYPTION_KEK_PASS= See also Using environment variables for configuration properties. conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD
請注意,
KEK_PASSWORD
可能與KEYSTORE_PASSWORD
相同 具體取決於用來產生 KeyStore 的工具 - 使用下列指令重新啟動訊息處理器:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready
訊息處理工具時,
wait_for_ready
指令會傳回下列訊息 已準備好處理訊息:Checking if message-processor is up: message-processor is up.
- 如果您在多個節點上安裝訊息處理器,請在每個節點上重複執行步驟 1 至 4 訊息處理器節點
摘要
從現在起,您建立的任何開發人員應用程式的憑證密鑰都會在 而這些配置在 Cassandra 資料庫中
使用環境變數 設定屬性
你也可以指定下列訊息處理器及管理伺服器設定 透過環境變數管理各項屬性設定後,環境變數會覆寫屬性。 您在訊息處理工具或管理伺服器設定檔中設定的機制。
conf_keymanagement_kmscred.encryption.keystore.pass= conf_keymanagement_kmscred.encryption.kek.pass=
對應的環境變數如下:
export KMSCRED_ENCRYPTION_KEYSTORE_PASS=KEYSTORE_PASSWORD
export KMSCRED_ENCRYPTION_KEK_PASS=KEK_PASSWORD
如果您設定這些環境變數,可以省略這些設定屬性: 儲存在訊息處理器和管理伺服器節點上,否則系統將忽略這些檔案:
conf_keymanagement_kmscred.encryption.keystore.pass conf_keymanagement_kmscred.encryption.kek.pass
屬性檔案參考資料
本節說明您必須為所有訊息處理器調整的設定屬性 以及管理伺服器節點
屬性 | 預設 | 說明 |
conf_keymanagement_kmscred.encryption.enabled
|
false
|
必須為 true ,才能啟用金鑰加密功能。
|
conf_keymanagement_kmscred.encryption.allowFallback
|
false
|
將 allowFallback 設為 true ,確保現有的明文憑證能繼續運作。
|
conf_keymanagement_kmscred.encryption.keystore.path
|
無 | 請在訊息處理器或管理伺服器節點上提供 KEK KeyStore 路徑。 請參閱步驟 2:設定管理服務 伺服器和步驟 3:設定訊息處理器。 |
conf_keymanagement_kmscred.encryption.kek.alias
|
無 | KeyStore 儲存 KEK 的別名。 |
conf_keymanagement_kmscred.encryption.keystore.pass
|
無 | 如果您使用環境變數來設定這些屬性,則為選用元素。其他參考資訊 使用環境 變數。 |
conf_keymanagement_kmscred.encryption.kek.pass
|
無 | 如果您使用環境變數來設定這些屬性,則為選用元素。其他參考資訊 使用環境 變數。 |