Share via


在 Azure Red Hat OpenShift 上使用客戶管理的金鑰加密 OS 磁片

根據預設,Azure Red Hat OpenShift 叢集中虛擬機器的 OS 磁片會使用由 Microsoft Azure 管理的自動產生金鑰加密。 如需其他安全性,客戶可以在部署 Azure Red Hat OpenShift 叢集時,使用自我管理的金鑰來加密 OS 磁片。 此功能可藉由使用客戶自控金鑰 (CMK) 加密機密資料,以進一步控制。

使用客戶自控金鑰建立的叢集,其金鑰會啟用預設儲存體類別。 因此,OS 磁片和資料磁片都會由這些金鑰加密。 客戶管理的金鑰會儲存在 Azure 金鑰保存庫。

如需使用 Azure 金鑰保存庫建立和維護金鑰的詳細資訊,請參閱 Microsoft Azure 檔中的 Azure 磁片儲存體 伺服器端加密。

使用主機型加密時,儲存在 Azure Red Hat OpenShift 代理程式節點 VM 的 VM 主機上的資料會在待用時加密,並將流量加密至儲存體服務。 主機基底加密表示暫存磁片會使用平臺管理的金鑰進行待用加密。

OS 和資料磁片的快取會使用平臺管理的金鑰或客戶管理的金鑰進行待用加密,視這些磁片上設定的加密類型而定。 根據預設,使用 Azure Red Hat OpenShift 時,OS 和資料磁片會使用平臺管理的金鑰進行待用加密,這表示這些磁片的快取預設也會使用平臺管理的金鑰進行待用加密。

您可以遵循下列加密步驟來指定自己的受控金鑰。 這些磁片的快取也會使用您在此步驟中指定的金鑰來加密。

限制

客戶有責任在 Azure 中維護金鑰保存庫和磁片加密集。 無法維護金鑰會導致 Azure Red Hat OpenShift 叢集中斷。 VM 將會停止運作,因此,整個 Azure Red Hat OpenShift 叢集將會停止運作。

Azure Red Hat OpenShift 工程小組無法存取金鑰。 因此,它們無法備份、複寫或擷取金鑰。

如需使用磁片加密集來管理加密金鑰的詳細資訊,請參閱 Microsoft Azure 檔中的 Azure 磁片儲存體 伺服器端加密。

必要條件

  • 確認您的許可權 。 您必須具有參與者和使用者存取管理員istrator 許可權或擁有者許可權。

  • 如果您有多個 Azure 訂用帳戶,請註冊資源提供者。 如需註冊詳細資料,請參閱 註冊資源提供者

  • 您必須在訂用帳戶上啟用 EncryptionAtHost 功能。 您可以執行下列命令來啟用它:

    az feature register --namespace Microsoft.Compute --name EncryptionAtHost
    
  • 您可以執行下列命令來檢查功能的目前狀態:

    az feature show --namespace Microsoft.Compute --name EncryptionAtHost
    

建立包含兩個空子網的虛擬網路

建立包含兩個空子網的虛擬網路。 如果您有符合您需求的現有虛擬網路,您可以略過此步驟。 若要檢閱建立虛擬網路的程式,請參閱 建立包含兩個空白子網的 虛擬網路。

建立 Azure 金鑰保存庫 實例

您必須使用 Azure 金鑰保存庫 實例來儲存金鑰。 建立已啟用清除保護的新金鑰保存庫。 然後,在金鑰保存庫內建立新的金鑰,以儲存您自己的自訂金鑰。

  1. 設定更多環境許可權:
    export KEYVAULT_NAME=$USER-enckv
    export KEYVAULT_KEY_NAME=$USER-key
    export DISK_ENCRYPTION_SET_NAME=$USER-des
    
  2. 在金鑰保存庫中建立金鑰保存庫和金鑰:
    az keyvault create -n $KEYVAULT_NAME \
                   -g $RESOURCEGROUP \
                   -l $LOCATION \
                   --enable-purge-protection true
    
    az keyvault key create --vault-name $KEYVAULT_NAME \
                           -n $KEYVAULT_KEY_NAME \
                           --protection software
    
    KEYVAULT_ID=$(az keyvault show --name $KEYVAULT_NAME --query "[id]" -o tsv)
    
    KEYVAULT_KEY_URL=$(az keyvault key show --vault-name $KEYVAULT_NAME \
                                            --name $KEYVAULT_KEY_NAME \
                                            --query "[key.kid]" -o tsv)
    

建立Azure 磁碟加密集

Azure 磁碟加密集會作為 Azure Red Hat OpenShift 叢集中磁片的參考點。 它會連線到您在上一個步驟中建立的 Azure 金鑰保存庫,並從該位置提取客戶管理的金鑰。

az disk-encryption-set create -n $DISK_ENCRYPTION_SET_NAME \
                              -l $LOCATION \
                              -g $RESOURCEGROUP \
                              --source-vault $KEYVAULT_ID \
                              --key-url $KEYVAULT_KEY_URL

DES_ID=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g $RESOURCEGROUP --query 'id' -o tsv)

DES_IDENTITY=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME \
                                           -g $RESOURCEGROUP \
                                           --query "[identity.principalId]" \
                                           -o tsv)

授與磁片加密集存取金鑰保存庫的許可權

使用您在上一個步驟中建立的磁片加密集,並授與磁片加密集存取權,並使用 Azure 金鑰保存庫。

az keyvault set-policy -n $KEYVAULT_NAME \
                       -g $RESOURCEGROUP \
                       --object-id $DES_IDENTITY \
                       --key-permissions wrapkey unwrapkey get

建立 Azure Red Hat OpenShift 叢集

建立 Azure Red Hat OpenShift 叢集以使用客戶管理的金鑰。

az aro create --resource-group $RESOURCEGROUP \
              --name $CLUSTER  \
              --vnet aro-vnet  \
              --master-subnet master-subnet \
              --worker-subnet worker-subnet \
              --disk-encryption-set $DES_ID

建立 Azure Red Hat OpenShift 叢集之後,所有 VM 都會使用客戶管理的加密金鑰進行加密。

若要確認您已正確設定金鑰,請執行下列命令:

  1. 取得叢集 VM、磁片等所在叢集資源群組的名稱:
    CLUSTERRESOURCEGROUP=$(az aro show --resource-group $RESOURCEGROUP --name $CLUSTER --query 'clusterProfile.resourceGroupId' -o tsv | cut -d '/' -f 5)
    
  2. 檢查磁片是否已連結正確的磁片加密集:
    az disk list -g $CLUSTERRESOURCEGROUP --query '[].encryption'
    
    輸出中的 欄位 diskEncryptionSetId 必須指向您在建立 Azure Red Hat OpenShift 叢集時指定的磁片加密集。