Szyfrowanie dysków systemu operacyjnego przy użyciu klucza zarządzanego przez klienta w usłudze Azure Red Hat OpenShift

Domyślnie dyski systemu operacyjnego maszyn wirtualnych w klastrze usługi Azure Red Hat OpenShift były szyfrowane przy użyciu automatycznie generowanych kluczy zarządzanych przez platformę Microsoft Azure. W celu zapewnienia dodatkowych zabezpieczeń klienci mogą szyfrować dyski systemu operacyjnego przy użyciu kluczy zarządzanych samodzielnie podczas wdrażania klastra Usługi Azure Red Hat OpenShift. Ta funkcja umożliwia większą kontrolę dzięki szyfrowaniu poufnych danych za pomocą kluczy zarządzanych przez klienta (CMK).

Klastry utworzone za pomocą kluczy zarządzanych przez klienta mają domyślną klasę magazynu włączoną z kluczami. W związku z tym oba dyski systemu operacyjnego i dyski danych są szyfrowane przez te klucze. Klucze zarządzane przez klienta są przechowywane w usłudze Azure Key Vault.

Aby uzyskać więcej informacji na temat tworzenia i obsługi kluczy przy użyciu usługi Azure Key Vault, zobacz Szyfrowanie po stronie serwera usługi Azure Disk Storage w dokumentacji platformy Microsoft Azure.

W przypadku szyfrowania opartego na hoście hosta dane przechowywane na hoście maszyn wirtualnych węzłów agenta usługi Azure Red Hat OpenShift są szyfrowane w stanie spoczynku i przepływy szyfrowane w usłudze Storage. Szyfrowanie oparte na hoście oznacza, że dyski tymczasowe są szyfrowane w spoczynku przy użyciu kluczy zarządzanych przez platformę.

Pamięć podręczna dysków systemu operacyjnego i danych jest szyfrowana w spoczynku przy użyciu kluczy zarządzanych przez platformę lub kluczy zarządzanych przez klienta, w zależności od typu szyfrowania ustawionego na tych dyskach. Domyślnie w przypadku korzystania z usługi Azure Red Hat OpenShift dyski systemu operacyjnego i danych są szyfrowane w spoczynku przy użyciu kluczy zarządzanych przez platformę, co oznacza, że pamięci podręczne dla tych dysków są domyślnie szyfrowane w spoczynku przy użyciu kluczy zarządzanych przez platformę.

Możesz określić własne klucze zarządzane, wykonując poniższe kroki szyfrowania. Pamięć podręczna dla tych dysków będzie również szyfrowana przy użyciu klucza określonego w tym kroku.

Ograniczenie

Jest to odpowiedzialność klientów za utrzymanie usługi Key Vault i zestawu szyfrowania dysków na platformie Azure. Niepowodzenie obsługi kluczy spowoduje uszkodzenie klastrów usługi Azure Red Hat OpenShift. Maszyny wirtualne przestaną działać, a w rezultacie cały klaster usługi Azure Red Hat OpenShift przestanie działać.

Zespół inżynierów usługi Azure Red Hat OpenShift nie może uzyskać dostępu do kluczy. W związku z tym nie mogą tworzyć kopii zapasowych, replikować ani pobierać kluczy.

Aby uzyskać szczegółowe informacje na temat używania zestawów szyfrowania dysków do zarządzania kluczami szyfrowania, zobacz Szyfrowanie po stronie serwera usługi Azure Disk Storage w dokumentacji platformy Microsoft Azure.

Wymagania wstępne

  • Zweryfikuj swoje uprawnienia. Musisz mieć uprawnienia współautora i dostępu użytkowników Administracja istrator lub uprawnienia właściciela.

  • Jeśli masz wiele subskrypcji platformy Azure, zarejestruj dostawców zasobów. Aby uzyskać szczegółowe informacje o rejestracji, zobacz Rejestrowanie dostawców zasobów.

  • W subskrypcji musi być włączona funkcja EncryptionAtHost. Możesz ją włączyć, uruchamiając polecenie:

    az feature register --namespace Microsoft.Compute --name EncryptionAtHost
    
  • Możesz sprawdzić bieżący stan funkcji, uruchamiając polecenie:

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

Tworzenie sieci wirtualnej zawierającej dwie puste podsieci

Utwórz sieć wirtualną zawierającą dwie puste podsieci. Jeśli masz istniejącą sieć wirtualną, która spełnia Twoje potrzeby, możesz pominąć ten krok. Aby zapoznać się z procedurą tworzenia sieci wirtualnej, zobacz Tworzenie sieci wirtualnej zawierającej dwie puste podsieci.

Tworzenie wystąpienia usługi Azure Key Vault

Do przechowywania kluczy należy użyć wystąpienia usługi Azure Key Vault. Utwórz nową usługę Key Vault z włączoną ochroną przeczyszczania. Następnie utwórz nowy klucz w usłudze Key Vault, aby przechowywać własny klucz niestandardowy.

  1. Ustaw więcej uprawnień środowiska:
    export KEYVAULT_NAME=$USER-enckv
    export KEYVAULT_KEY_NAME=$USER-key
    export DISK_ENCRYPTION_SET_NAME=$USER-des
    
  2. Utwórz usługę Key Vault i klucz w usłudze 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)
    

Tworzenie zestawu usługi Azure Disk Encryption

Zestaw usługi Azure Disk Encryption jest używany jako punkt odniesienia dla dysków w klastrach usługi Azure Red Hat OpenShift. Jest ona połączona z usługą Azure Key Vault utworzoną w poprzednim kroku i ściąga klucze zarządzane przez klienta z tej lokalizacji.

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)

Udzielanie uprawnień dla zestawu szyfrowania dysków w celu uzyskania dostępu do usługi Key Vault

Użyj zestawu szyfrowania dysków utworzonego w poprzednim kroku i przyznaj uprawnienie dla zestawu szyfrowania dysków, aby uzyskać dostęp do usługi Azure Key Vault i korzystać z niego.

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

Tworzenie klastra usługi Azure Red Hat OpenShift

Utwórz klaster usługi Azure Red Hat OpenShift, aby używać kluczy zarządzanych przez klienta.

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

Po utworzeniu klastra Usługi Azure Red Hat OpenShift wszystkie maszyny wirtualne są szyfrowane przy użyciu kluczy szyfrowania zarządzanych przez klienta.

Aby sprawdzić, czy klucze zostały prawidłowo skonfigurowane, uruchom następujące polecenia:

  1. Pobierz nazwę grupy zasobów klastra, w której znajdują się maszyny wirtualne, dyski klastra itd.:
    CLUSTERRESOURCEGROUP=$(az aro show --resource-group $RESOURCEGROUP --name $CLUSTER --query 'clusterProfile.resourceGroupId' -o tsv | cut -d '/' -f 5)
    
  2. Sprawdź, czy dyski mają dołączony prawidłowy zestaw szyfrowania dysków:
    az disk list -g $CLUSTERRESOURCEGROUP --query '[].encryption'
    
    Pole diskEncryptionSetId w danych wyjściowych musi wskazywać zestaw szyfrowania dysków określony podczas tworzenia klastra Usługi Azure Red Hat OpenShift.