啟用密鑰加密

本文件說明如何啟用 儲存的開發人員應用程式消費者密鑰 (用戶端憑證) 登錄到 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):

  1. 執行以下指令來產生 KeyStore 以儲存將用於 將 KEK 加密。完整輸入指令,(您可以視需要提供任何 KeyStore 名稱):
    keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \
    -keystore kekstore.p12 -storetype PKCS12

    在系統提示時輸入密碼。您將在後續章節中使用 設定管理伺服器和訊息處理器

    這個指令會產生 kekstore.p12 KeyStore 檔案,其中包含 別名 KEYSTORE_NAME

  2. (選用) 使用下列指令確認檔案已正確產生。如果檔案 正確,指令會傳回別名 KEYSTORE_NAME 的鍵:
    keytool -list -keystore kekstore.p12

步驟 2:設定管理伺服器

接下來,請設定管理伺服器。如果您在多個節點上安裝管理伺服器, 您必須在每個節點重複執行上述步驟

  1. 將您在步驟 1 產生的 KeyStore 檔案複製到管理伺服器節點的目錄,例如 /opt/apigee/customer/application。例如:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. 確保 apigee 使用者能夠讀取檔案:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
    chmod 400 /opt/apigee/customer/application/kekstore.p12
  3. /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 相同。

  4. 使用下列指令重新啟動管理伺服器:
    /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.
    
  5. 如果您在多個節點上安裝管理伺服器,請在每個管理項目中重複上述步驟 1 到 4 伺服器節點

步驟 3:建立開發人員應用程式

現在管理伺服器已更新,您必須建立開發人員應用程式來觸發產生作業 加密用戶端憑證資料時使用的金鑰:

  1. 建立開發人員應用程式,觸發建立資料加密金鑰 (KEK) 的建立作業。操作步驟 請參閱註冊應用程式
  2. 如有需要,請刪除開發人員應用程式。加密後不需要保留此密碼 就會產生金鑰

步驟 4:設定訊息處理器

除非訊息處理工具已啟用加密功能,否則執行階段要求將無法處理任何加密憑證。

  1. 將您在步驟 1 產生的 KeyStore 檔案複製到訊息處理器節點的目錄中。 例如 /opt/apigee/customer/application。例如:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. 確保 apigee 使用者能夠讀取檔案:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
  3. /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 的工具

  4. 使用下列指令重新啟動訊息處理器:
    /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.
  5. 如果您在多個節點上安裝訊息處理器,請在每個節點上重複執行步驟 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 如果您使用環境變數來設定這些屬性,則為選用元素。其他參考資訊 使用環境 變數