Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Domyślnie Microsoft Azure używa automatycznie wygenerowanych kluczy do szyfrowania dysków systemu operacyjnego maszyn wirtualnych w klastrze Azure Red Hat OpenShift. Aby uzyskać dodatkowe zabezpieczenia, można zaszyfrować dyski systemu operacyjnego przy użyciu kluczy zarządzanych samodzielnie podczas wdrażania klastra. Ta funkcja zapewnia większą kontrolę dzięki szyfrowaniu poufnych danych za pomocą kluczy zarządzanych przez klienta.
Klastry z kluczami zarządzanymi przez klienta mają włączoną domyślną klasę pamięci dla tych kluczy. W związku z tym te klucze szyfrują zarówno dyski systemu operacyjnego, jak i dyski danych. Azure Key Vault przechowuje klucze zarządzane przez klienta. Aby uzyskać więcej informacji na temat używania usługi Key Vault do tworzenia kluczy i zarządzania nimi, zobacz Podstawowe pojęcia dotyczące usługi Azure Key Vault.
W przypadku szyfrowania opartego na hoście dane przechowywane na hoście maszyny wirtualnej węzła usługi Azure Red Hat OpenShift są szyfrowane w stanie spoczynku. Te dane są szyfrowane do Azure 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. Typ kluczy zależy od typu szyfrowania ustawionego na tych dyskach. Domyślnie w przypadku używania Azure Red Hat OpenShift dyski systemu operacyjnego i danych są szyfrowane w spoczynku przy użyciu kluczy zarządzanych przez platformę. To ustawienie domyślne oznacza, że pamięci podręczne dla tych dysków są również domyślnie szyfrowane w spoczynku przy użyciu kluczy zarządzanych przez platformę.
Możesz określić własne klucze zarządzane, wykonując kroki szyfrowania w następnej sekcji. Klucze określone w tym kroku również szyfrują pamięć podręczną dla tych dysków.
Ograniczenie
Klienci muszą obsługiwać magazyn kluczy i szyfrowanie dysków ustawione w Azure. Nieutrzymywanie kluczy skutkuje uszkodzeniem klastrów Azure Red Hat OpenShift. Maszyny wirtualne przestaną działać, a w rezultacie cały klaster Azure Red Hat OpenShift przestanie działać.
Zespół inżynierów 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 Azure Disk Storage po stronie serwera.
Wymagania wstępne
Zweryfikuj swoje uprawnienia. Musisz mieć uprawnienia do tworzenia klastra Azure Red Hat OpenShift, magazynu kluczy i zestawu szyfrowania dysków.
Upewnij się, że masz rolę Key Vault Crypto Officer. Ta rola ma uprawnienia do tworzenia klucza.
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.
Upewnij się, że masz włączoną
EncryptionAtHostfunkcję w subskrypcji. Możesz ją włączyć, uruchamiając polecenie:az feature register --namespace Microsoft.Compute --name EncryptionAtHostMożesz sprawdzić bieżący stan funkcji, uruchamiając polecenie:
az feature show --namespace Microsoft.Compute --name EncryptionAtHost
Utwórz wystąpienie Key Vault
Do przechowywania kluczy należy użyć wystąpienia Key Vault. Utwórz nowy magazyn kluczy z włączoną ochroną przeczyszczania. Następnie utwórz nowy klucz w magazynie kluczy, aby przechowywać własny klucz.
Ustaw zmienne środowiskowe:
export KEYVAULT_NAME=aro-enckv export KEYVAULT_KEY_NAME=aro-key export DISK_ENCRYPTION_SET_NAME=aro-des export LOCATION=<location-name> export RESOURCEGROUP=<resource-group-name>Utwórz magazyn kluczy:
az keyvault create \ --name $KEYVAULT_NAME \ --resource-group $RESOURCEGROUP \ --location $LOCATION \ --enable-purge-protection trueUwaga / Notatka
Należy włączyć ochronę przed trwałym usunięciem. Zobacz Konfigurowanie usługi Azure Key Vault.
Opcjonalnie: ponieważ ochrona przed przeczyszczeniem jest włączona, nie można natychmiast ponownie użyć nazwy magazynu kluczy po usunięciu. Dodając specyfikację
--retention-days <NUMBER_OF_DAYS>, możesz określić, jak długo magazyn pozostaje w stanie „usunięcia nietrwałego”. Wartość domyślna to 90 dni, ale ustawienie jej na niższą wartość (minimum 7 dni) oznacza, że można szybciej odzyskać nazwę.Utwórz klucz w magazynie kluczy:
az keyvault key create \ --vault-name $KEYVAULT_NAME \ --name $KEYVAULT_KEY_NAME \ --protection softwareUstaw identyfikator zasobu usługi Key Vault i zmienne adresu URL klucza:
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 szyfrowania dysku
Użyj zestawu szyfrowania dysków Azure jako punktu odniesienia dla dysków w klastrach Azure Red Hat OpenShift. Jest on połączony z magazynem kluczy utworzonym w poprzednim kroku i pobiera klucze zarządzane przez klienta z tej lokalizacji.
Utwórz zestaw szyfrowania dysków:
az disk-encryption-set create \ --name $DISK_ENCRYPTION_SET_NAME \ --location $LOCATION \ --resource-group $RESOURCEGROUP \ --source-vault $KEYVAULT_ID \ --key-url $KEYVAULT_KEY_URLOkreśl identyfikator zasobu zestawu szyfrowania dysków oraz zmienne tożsamości:
DES_ID=$(az disk-encryption-set show --name $DISK_ENCRYPTION_SET_NAME --resource-group $RESOURCEGROUP --query 'id' -o tsv) DES_IDENTITY=$(az disk-encryption-set show --name $DISK_ENCRYPTION_SET_NAME --resource-group $RESOURCEGROUP --query "[identity.principalId]" -o tsv)
Udzielanie uprawnień dla zestawu szyfrowania dysków w celu uzyskania dostępu do magazynu kluczy
Chcesz, aby tożsamość zarządzana zestawu szyfrowania dysków używała klucza szyfrowania. Przypisz wbudowaną rolę, która zapewnia wymagane uprawnienia klucza, takie jak użytkownik szyfrowania usługi kryptograficznej Key Vault lub użytkownik kryptograficzny Key Vault. Alternatywnie należy użyć roli niestandardowej, o ile zawiera niezbędne uprawnienia (wrapkey, unwrapkeyi get) do wykonywania kluczowych operacji wymaganych przez zestawy szyfrowania dysków.
az role assignment create \
--assignee $DES_IDENTITY \
--role "Key Vault Crypto Service Encryption User" \
--scope $KEYVAULT_ID
Tworzenie klastra usługi Azure Red Hat OpenShift
Podczas tworzenia klastra można włączyć klucze zarządzane przez klienta, określając zestaw szyfrowania dysków. Użyj parametru --disk-encryption-set . Na przykład --disk-encryption-set $DES_ID.
Aby utworzyć klaster z jednostką usługi, postępuj zgodnie z instrukcjami w Tworzenie klastra Azure Red Hat OpenShift.
Oto przykład tworzenia klastra z parametrem --disk-encryption-set :
az aro create \
--resource-group $RESOURCEGROUP \
--name $CLUSTER \
--vnet aro-vnet \
--master-subnet master-subnet \
--worker-subnet worker-subnet \
--disk-encryption-set $DES_ID
Uwaga / Notatka
Klucze zarządzane przez klienta można włączyć tylko w istniejących klastrach dla węzłów roboczych, a nie węzłów głównych. Tę konfigurację można osiągnąć. Aby uzyskać więcej informacji, zobacz dokumentację oprogramowania Red Hat, w tym Włączanie kluczy szyfrowania zarządzanych przez klienta dla zestawu maszyn i Modyfikowanie zestawu maszyn obliczeniowych.
Aby utworzyć klaster Azure Red Hat OpenShift z tożsamościami zarządzanymi, przed utworzeniem klastra należy nadać uprawnienia tożsamości machine-api i tożsamości disk-csi-driver. Należy również przyznać jednostce usługi Azure Red Hat OpenShift Microsoft.Compute/diskEncryptionSets/read uprawnienia do zestawu szyfrowania dysków.
Przykładowe przypisania ról dla tożsamości machine-api, tożsamości disk-csi-driver oraz jednostki usługi ARO własnej firmy Microsoft:
az role assignment create \
--assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name disk-csi-driver --query principalId -o tsv)" \
--assignee-principal-type ServicePrincipal \
--role <ROLE> \
--scope $DES_ID"
az role assignment create \
--assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name machine-api --query principalId -o tsv)" \
--assignee-principal-type ServicePrincipal \
--role <ROLE> \
--scope $DES_ID
az role assignment create \
--assignee-object-id "$(az ad sp list --display-name "Azure Red Hat OpenShift RP" --query '[0].id' -o tsv)" \
--assignee-principal-type ServicePrincipal \
--role <ROLE> \
--scope $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:
Pobierz nazwę grupy zasobów klastra, w której znajdują się maszyny wirtualne, dyski i inna infrastruktura klastra:
CLUSTERRESOURCEGROUP=$(az aro show --resource-group $RESOURCEGROUP --name $CLUSTER --query 'clusterProfile.resourceGroupId' -o tsv | cut -d '/' -f 5)Sprawdź, czy dyski mają dołączony prawidłowy zestaw szyfrowania dysków:
az disk list --resource-group $CLUSTERRESOURCEGROUP --query '[].encryption'
Pole diskEncryptionSetId w danych wyjściowych musi wskazywać zestaw szyfrowania dysku określony podczas tworzenia klastra Azure Red Hat OpenShift.
Dodaj obsługę zarządzanego modułu HSM (mHSM) dla kluczy zarządzanych przez klienta i egzekwowania zasad Azure Policy
Można również dodać obsługę zarządzanego modułu HSM (mHSM) dla kluczy zarządzanych przez klienta oraz wymagać i odrzucać określone atrybuty szyfrowania. Ta obsługa wymaga zmian interfejsu API i Azure Policy.
Wykonaj następujące kroki, aby utworzyć klaster Azure Red Hat OpenShift przy użyciu oprogramowania mHSM i kluczy zarządzanych przez klienta:
Aprowizuj i aktywuj zarządzany moduł HSM przy użyciu Azure CLI.
Eksportuj zmienne środowiskowe z poprzedniego kroku:
export HSM_NAME=<hsm-name> export RESOURCE_GROUP=<resource-group>Włącz ochronę przed przeczyszczaniem i zarządzanie kluczami za pomocą Azure Resource Manager:
az keyvault update-hsm \ --hsm-name $HSM_NAME \ --resource-group $RESOURCE_GROUP \ --enable-purge-protection true az keyvault setting update \ --hsm-name $HSM_NAME \ --name AllowKeyManagementOperationsThroughARM \ --value trueWykonaj pozostałe kroki, aby aktywować rozwiązanie mHSM: Aktywowanie zarządzanego modułu HSM.
Przypisz sobie rolę
Managed HSM Crypto User, aby móc tworzyć klucze w module mHSM.oid=$(az ad signed-in-user show --query id -o tsv) az keyvault role assignment create \ --hsm-name $HSM_NAME \ --role "Managed HSM Crypto User" \ --assignee $oid \ --scope /keysUtwórz tożsamość zarządzaną i przyznaj
Managed HSM Crypto Service Encryption Userjej rolę w usłudze mHSM.export UA_IDENTITY=<new-ua-identity>HSM_ID="https://${HSM_NAME}.managedhsm.azure.net" az identity create \ --resource-group $RESOURCE_GROUP \ --name $UA_IDENTITY IDENTITY_OBJECT_ID=$(az identity show \ --resource-group $RESOURCE_GROUP \ --name $UA_IDENTITY \ --query principalId -o tsv) az keyvault role assignment create \ --id "$HSM_ID" \ --role "Managed HSM Crypto Service Encryption User" \ --assignee-object-id "$IDENTITY_OBJECT_ID" \ --scope "/keys/byok-key"Utwórz zestaw szyfrowania dysków, biorąc pod uwagę:
Ustaw typ szyfrowania na
Encryption at-rest with a customer-managed key.Użyj tożsamości przypisanej przez użytkownika utworzonej w poprzednim kroku.
Przed utworzeniem zestawu szyfrowania dysków ukończ przypisanie roli.
Eksportuj zmienne środowiskowe z poprzedniego kroku:
export LOCATION=<yourLocation> export CLUSTER=<yourNewClusterName> export VIRTUAL_NETWORK=<yourVirtualNetwork> export KEYVAULT_NAME=<yourKeyvaultName> export KEYVAULT_KEY_NAME=byok-key export DISK_ENCRYPTION_SET_NAME=<yourDiskEncryptionSetName>Utwórz klaster z nowym zestawem szyfrowania dysków:
DES_ID=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g $RESOURCE_GROUP --query 'id' -o tsv) az aro create --resource-group $RESOURCE_GROUP \ --name $CLUSTER \ --vnet $VIRTUAL_NETWORK \ --master-subnet master-subnet \ --worker-subnet worker-subnet \ --disk-encryption-set $DES_IDPo uruchomieniu klastra potwierdź szyfrowanie:
az disk list -g $VIRTUAL_NETWORK --query "[].{DiskName:name, VM:managedBy, EncryptionType:encryption.type, DiskEncryptionSet:encryption.diskEncryptionSetId}" -o tableAby zweryfikować szyfrowanie, poszukaj
EncryptionAtRestWithCustomerKeyw kolumnieEncryptionType.