共用方式為


在 Azure Red Hat OpenShift 上使用客戶自控金鑰加密 OS 磁碟

根據預設,Azure Red Hat OpenShift 叢集中虛擬機器的 OS 磁碟會使用由 Microsoft Azure 管理的自動產生金鑰進行加密。 為了獲得額外的安全性,客戶可以在部署 Azure Red Hat OpenShift 叢集時,使用自控金鑰來加密 OS 磁碟。 這項功能可藉由使用客戶自控金鑰 (CMK) 加密機密資料,來提供更多控制權。

使用客戶自控金鑰建立的叢集,會具備使用其金鑰啟用的預設儲存類別。 因此,OS 磁碟和資料磁碟兩者都會由這些金鑰加密。 客戶自控金鑰均儲存於 Azure Key Vault 中。

如需使用 Azure Key Vault 建立和維護金鑰的詳細資訊,請參閱 Microsoft Azure 文件中的 Azure 磁碟儲存體的伺服器端加密

透過主機型加密,儲存於搭載 Azure Red Hat OpenShift 代理節點 VM 的 VM 主機上資料,將可進行待用加密,並以加密方式流向儲存體服務。 主機型加密表示暫存磁碟將可使用平台代控金鑰進行待用加密。

視在磁碟上設定的加密類型而定,您可以使用平台代控金鑰或客戶自控金鑰,針對作業系統和資料磁碟的快取進行待用加密。 依預設,當使用 Azure Red Hat OpenShift 時,作業系統和資料磁碟是以平台代控金鑰進行待用加密,這表示這些磁碟的快取也預設為使用平台代控金鑰進行待用加密。

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

限制

客戶必須負責維護 Azure 中的 Key Vault 和磁碟加密集。 無法維護金鑰將導致 Azure Red Hat OpenShift 叢集中斷。 VM 將會停止運作,整個 Azure Red Hat OpenShift 叢集也將因此停止運作。

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

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

必要條件

  • 驗證權限。 您必須擁有參與者和使用者存取管理員權限或擁有者權限。

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

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

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

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

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

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

建立 Azure 金鑰保存庫執行個體

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

  1. 設定更多環境權限:
    export KEYVAULT_NAME=$USER-enckv
    export KEYVAULT_KEY_NAME=$USER-key
    export DISK_ENCRYPTION_SET_NAME=$USER-des
    
  2. 在 Key Vault 中建立金鑰保存庫和金鑰:
    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 Key Vault,並從該位置提取客戶自控金鑰。

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)

授與磁碟加密集存取 Key Vault 的權限

使用您在上一個步驟中建立的磁碟加密集,並授與磁碟加密集存取和使用 Azure Key Vault 的權限。

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 叢集以使用客戶自控金鑰。

注意

現有 ARO 叢集上啟用 CMK 僅適用於背景工作角色節點,不適用於主要節點。 您可以透過 machineset CR 使用機器 API 來達成此目的。 如需詳細資訊,請參閱啟用機器集的客戶自控金鑰以及修改計算機器集

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 叢集時指定的磁碟加密集。