Konfigurowanie kluczy zarządzanych przez klienta dla elastycznej sieci SAN platformy Azure

Wszystkie dane zapisywane w woluminie Elastic SAN są automatycznie szyfrowane w spoczynku przy użyciu klucza szyfrowania danych (DEK). Platforma Azure używa szyfrowania kopert do szyfrowania klucza szyfrowania przy użyciu klucza szyfrowania kluczy (KEK). Domyślnie klucz KEK jest zarządzany przez platformę (zarządzany przez firmę Microsoft), ale możesz tworzyć własne elementy i zarządzać nimi.

W tym artykule pokazano, jak skonfigurować szyfrowanie elastycznej grupy woluminów SIECI SAN przy użyciu kluczy zarządzanych przez klienta przechowywanych w usłudze Azure Key Vault.

Ograniczenia

Poniższa lista zawiera regiony, w których jest obecnie dostępna elastyczna sieć SAN i które regiony obsługują magazyn strefowo nadmiarowy (ZRS) i magazyn lokalnie nadmiarowy (LRS) lub tylko magazyn LRS:

  • Republika Południowej Afryki Północnej — LRS
  • Azja Wschodnia — LRS
  • Azja Południowo-Wschodnia — LRS
  • Brazylia Południowa — LRS
  • Kanada Środkowa — LRS
  • Francja Środkowa — LRS i ZRS
  • Niemcy Zachodnio-środkowe — LRS
  • Australia Wschodnia — LRS
  • Europa Północna — LRS i ZRS
  • Europa Zachodnia — LRS i ZRS
  • Południowe Zjednoczone Królestwo — LRS
  • Japonia Wschodnia — LRS
  • Korea Środkowa — LRS
  • Środkowe stany USA
  • Wschodnie stany USA — LRS
  • Południowo-środkowe stany USA — LRS
  • Wschodnie stany USA 2 — LRS
  • Zachodnie stany USA 2 — LRS i ZRS
  • Zachodnie stany USA 3 — LRS
  • Szwecja Środkowa — LRS
  • Szwajcaria Północna — LRS

Wymagania wstępne

Aby wykonać operacje opisane w tym artykule, musisz przygotować konto platformy Azure i narzędzia do zarządzania, których planujesz użyć. Przygotowanie obejmuje instalowanie niezbędnych modułów, logowanie się do konta oraz ustawianie zmiennych dla programu PowerShell i interfejsu wiersza polecenia platformy Azure. Ten sam zestaw zmiennych jest używany w tym artykule, więc ustawienie ich teraz umożliwia używanie tych samych we wszystkich przykładach.

Aby wykonać operacje opisane w tym artykule przy użyciu programu PowerShell:

  1. Zainstaluj najnowszą wersję programu Azure PowerShell , jeśli jeszcze tego nie zrobiono.

  2. Po zainstalowaniu programu Azure PowerShell zainstaluj wersję 0.1.2 lub nowszą z rozszerzeniem Elastic SAN za pomocą Install-Module -Name Az.ElasticSan -Repository PSGallerypolecenia .

  3. Zaloguj się do Azure.

    Connect-AzAccount
    

Tworzenie zmiennych do użycia w przykładach programu PowerShell w tym artykule

Skopiuj przykładowy kod i zastąp cały tekst zastępczy własnymi wartościami. Użyj tych samych zmiennych we wszystkich przykładach w tym artykule:

# Define some variables
# The name of the resource group where the resources will be deployed.
$RgName          = "ResourceGroupName"

# The name of the Elastic SAN that contains the volume group to be configured.
$EsanName        = "ElasticSanName"

# The name of the Elastic SAN volume group to be configured.
$EsanVgName      = "ElasticSanVolumeGroupName"

# The region where the new resources will be created.
$Location        = "Location"

# The name of the Azure Key Vault that will contain the KEK.
$KvName          = "KeyVaultName"

# The name of the Azure Key Vault key that is the KEK.
$KeyName         = "KeyName"

# The name of the user-assigned managed identity, if applicable.
$ManagedUserName = "ManagedUserName"

Konfigurowanie magazynu kluczy

Do przechowywania kluczy zarządzanych przez klienta można użyć nowego lub istniejącego magazynu kluczy. Zaszyfrowany zasób i magazyn kluczy mogą znajdować się w różnych regionach lub subskrypcjach w tej samej dzierżawie identyfikatora Entra firmy Microsoft. Aby dowiedzieć się więcej o usłudze Azure Key Vault, zobacz Omówienie usługi Azure Key Vault i Co to jest usługa Azure Key Vault?.

Korzystanie z kluczy zarządzanych przez klienta z szyfrowaniem wymaga włączenia ochrony przed usuwaniem nietrwałym i przeczyszczaniem dla magazynu kluczy. Usuwanie nietrwałe jest domyślnie włączone podczas tworzenia nowego magazynu kluczy i nie można go wyłączyć. Ochronę przeczyszczania można włączyć podczas tworzenia magazynu kluczy lub po jego utworzeniu. Usługa Azure Elastic SAN Encryption obsługuje klucze RSA o rozmiarach 2048, 3072 i 4096.

Usługa Azure Key Vault obsługuje autoryzację za pomocą kontroli dostępu opartej na rolach platformy Azure za pośrednictwem modelu uprawnień RBAC platformy Azure. Firma Microsoft zaleca korzystanie z modelu uprawnień RBAC platformy Azure za pośrednictwem zasad dostępu do magazynu kluczy. Aby uzyskać więcej informacji, zobacz Udzielanie aplikacji uprawnień dostępu do magazynu kluczy platformy Azure przy użyciu kontroli dostępu opartej na rolach platformy Azure.

Istnieją dwa kroki związane z przygotowaniem magazynu kluczy jako magazynu dla zestawów KEKs grupy woluminów:

  • Utwórz nowy magazyn kluczy z włączoną ochroną usuwania nietrwałego i przeczyszczania lub włącz ochronę przed przeczyszczeniem istniejącego magazynu.
  • Utwórz lub przypisz rolę RBAC platformy Azure z tworzeniem kopii zapasowej, aby pobrać uprawnienia do przywracania aktualizacji listy.

Poniższy przykład:

  • Tworzy nowy magazyn kluczy z włączoną ochroną usuwania nietrwałego i przeczyszczania.
  • Pobiera nazwę UPN konta użytkownika.
  • Przypisuje rolę administratora kryptograficznego usługi Key Vault dla nowego magazynu kluczy do twojego konta.

Użyj tych samych zmiennych zdefiniowanych wcześniej w tym artykule.

# Setup the parameters to create the key vault.
$NewKvArguments = @{
    Name                    = $KvName
    ResourceGroupName       = $RgName
    Location                = $Location
    EnablePurgeProtection   = $true
    EnableRbacAuthorization = $true
}

# Create the key vault.
$KeyVault = New-AzKeyVault @NewKvArguments

# Get the UPN of the currently loggged in user.
$MyAccountUpn = (Get-AzADUser -SignedIn).UserPrincipalName

# Setup the parameters to create the role assignment.
$CrptoOfficerRoleArguments = @{
    SignInName         = $MyAccountUpn
    RoleDefinitionName = "Key Vault Crypto Officer"
    Scope              = $KeyVault.ResourceId
}

# Assign the Cypto Officer role to your account for the key vault.
New-AzRoleAssignment @CrptoOfficerRoleArguments

Aby dowiedzieć się, jak włączyć ochronę przed przeczyszczeniem w istniejącym magazynie kluczy przy użyciu programu PowerShell, zobacz Omówienie odzyskiwania usługi Azure Key Vault.

Aby uzyskać więcej informacji na temat przypisywania roli RBAC za pomocą programu PowerShell, zobacz Przypisywanie ról platformy Azure przy użyciu programu Azure PowerShell.

Dodawanie klucza

Następnie dodaj klucz do magazynu kluczy. Przed dodaniem klucza upewnij się, że przypisano ci rolę administratora kryptograficznego usługi Key Vault.

Usługa Azure Storage i elastyczne szyfrowanie SAN obsługują klucze RSA o rozmiarach 2048, 3072 i 4096. Aby uzyskać więcej informacji na temat obsługiwanych typów kluczy, zobacz About keys (Informacje o kluczach).

Użyj tych przykładowych poleceń, aby dodać klucz do magazynu kluczy za pomocą programu PowerShell. Użyj tych samych zmiennych zdefiniowanych wcześniej w tym artykule.

# Get the key vault where the key is to be added.
$KeyVault = Get-AzKeyVault -ResourceGroupName $RgName -VaultName $KvName

# Setup the parameters to add the key to the vault.
$NewKeyArguments = @{
    Name        = $KeyName
    VaultName   = $KeyVault.VaultName
    Destination = "Software"
}

# Add the key to the vault.
$Key = Add-AzKeyVaultKey @NewKeyArguments

Wybieranie strategii rotacji kluczy

Poniższe najlepsze rozwiązania kryptograficzne oznaczają rotację klucza, który chroni grupę woluminów Elastic SAN zgodnie z regularnym harmonogramem, zwykle co najmniej co dwa lata. Usługa Azure Elastic SAN nigdy nie modyfikuje klucza w magazynie kluczy, ale można skonfigurować zasady rotacji kluczy w celu rotacji klucza zgodnie z wymaganiami dotyczącymi zgodności. Aby uzyskać więcej informacji, zobacz Konfigurowanie automatycznego obracania kluczy kryptograficznych w usłudze Azure Key Vault.

Po rotacji klucza w magazynie kluczy należy zaktualizować konfigurację szyfrowania dla elastycznej grupy woluminów SIECI SAN w celu użycia nowej wersji klucza. Klucze zarządzane przez klienta obsługują zarówno automatyczne, jak i ręczne aktualizowanie wersji klucza szyfrowania kluczy. Zdecyduj, którego podejścia chcesz użyć przed skonfigurowaniem kluczy zarządzanych przez klienta dla nowej lub istniejącej grupy woluminów.

Aby uzyskać więcej informacji na temat rotacji kluczy, zobacz Aktualizowanie wersji klucza.

Ważne

Podczas modyfikowania klucza lub wersji klucza ochrona głównego klucza szyfrowania danych zmienia się, ale dane w grupie woluminów Elastic SAN platformy Azure pozostają szyfrowane przez cały czas. Użytkownik nie musi podejmować żadnych dodatkowych działań, aby zapewnić ochronę swoich danych. Rotacja wersji klucza nie ma wpływu na wydajność i nie wiąże się z nim żadnych przestojów.

Automatyczna rotacja wersji klucza

Usługa Azure Elastic SAN może automatycznie aktualizować klucz zarządzany przez klienta, który jest używany do szyfrowania w celu używania najnowszej wersji klucza z magazynu kluczy. Elastyczna sieć SAN sprawdza magazyn kluczy codziennie pod kątem nowej wersji klucza. Gdy zostanie udostępniona nowa wersja, automatycznie zacznie używać najnowszej wersji klucza do szyfrowania. Podczas obracania klucza pamiętaj, aby poczekać 24 godziny przed wyłączeniem starszej wersji.

Ważne

Jeśli grupa woluminów Elastic SAN została skonfigurowana do ręcznego aktualizowania wersji klucza i chcesz zmienić ją na automatyczną aktualizację, zmień wersję klucza na pusty ciąg. Aby uzyskać więcej informacji na temat ręcznej zmiany wersji klucza, zobacz Automatyczne aktualizowanie wersji klucza.

Ręczne obracanie wersji klucza

Jeśli wolisz ręcznie zaktualizować wersję klucza, określ identyfikator URI dla określonej wersji w czasie konfigurowania szyfrowania przy użyciu kluczy zarządzanych przez klienta. Po określeniu identyfikatora URI elastyczna sieć SAN nie będzie automatycznie aktualizować wersji klucza po utworzeniu nowej wersji w magazynie kluczy. Aby elastyczna sieć SAN korzystała z nowej wersji klucza, należy ją zaktualizować ręcznie.

Aby zlokalizować identyfikator URI dla określonej wersji klucza w witrynie Azure Portal:

  1. Przejdź do magazynu kluczy.
  2. W obszarze Obiekty wybierz pozycję Klucze.
  3. Wybierz żądany klucz, aby wyświetlić jego wersje.
  4. Wybierz wersję klucza, aby wyświetlić ustawienia dla tej wersji.
  5. Skopiuj wartość pola Identyfikator klucza , który udostępnia identyfikator URI.
  6. Zapisz skopiowany tekst do użycia później podczas konfigurowania szyfrowania dla grupy woluminów.

Screenshot showing key vault key URI in Azure portal.

Wybierz tożsamość zarządzaną, aby autoryzować dostęp do magazynu kluczy

Po włączeniu kluczy szyfrowania zarządzanych przez klienta dla elastycznej grupy woluminów SIECI SAN należy określić tożsamość zarządzaną używaną do autoryzowania dostępu do magazynu kluczy zawierającego klucz. Tożsamość zarządzana musi mieć następujące uprawnienia:

  • get
  • zawijanie klucza
  • unwrapkey

Tożsamość zarządzana, która ma autoryzowany dostęp do magazynu kluczy, może być tożsamością zarządzaną przypisaną przez użytkownika lub przypisaną przez system. Aby dowiedzieć się więcej o tożsamościach zarządzanych przypisanych przez system i przypisanych przez użytkownika, zobacz Typy tożsamości zarządzanych.

Po utworzeniu grupy woluminów zostanie automatycznie utworzona tożsamość przypisana przez system. Jeśli chcesz użyć tożsamości przypisanej przez użytkownika, utwórz ją przed skonfigurowaniem kluczy szyfrowania zarządzanych przez klienta dla grupy woluminów. Aby dowiedzieć się, jak utworzyć tożsamość zarządzaną przypisaną przez użytkownika i zarządzać nią, zobacz Zarządzanie tożsamościami zarządzanymi przypisanymi przez użytkownika.

Używanie tożsamości zarządzanej przypisanej przez użytkownika do autoryzowania dostępu

Po włączeniu kluczy zarządzanych przez klienta dla nowej grupy woluminów należy określić tożsamość zarządzaną przypisaną przez użytkownika. Istniejąca grupa woluminów obsługuje używanie tożsamości zarządzanej przypisanej przez użytkownika lub tożsamości zarządzanej przypisanej przez system do konfigurowania kluczy zarządzanych przez klienta.

Podczas konfigurowania kluczy zarządzanych przez klienta przy użyciu tożsamości zarządzanej przypisanej przez użytkownika tożsamość zarządzana przypisana przez użytkownika jest używana do autoryzowania dostępu do magazynu kluczy zawierającego klucz. Przed skonfigurowaniem kluczy zarządzanych przez klienta należy utworzyć tożsamość przypisaną przez użytkownika.

Tożsamość zarządzana przypisana przez użytkownika jest autonomicznym zasobem platformy Azure. Aby dowiedzieć się więcej o tożsamościach zarządzanych przypisanych przez użytkownika, zobacz Typy tożsamości zarządzanych. Aby dowiedzieć się, jak utworzyć tożsamość zarządzaną przypisaną przez użytkownika i zarządzać nią, zobacz Zarządzanie tożsamościami zarządzanymi przypisanymi przez użytkownika.

Tożsamość zarządzana przypisana przez użytkownika musi mieć uprawnienia dostępu do klucza w magazynie kluczy. Możesz ręcznie udzielić uprawnień tożsamości lub przypisać wbudowaną rolę z zakresem magazynu kluczy w celu udzielenia tych uprawnień.

W poniższym przykładzie pokazano, jak:

  • Utwórz nową tożsamość zarządzaną przypisaną przez użytkownika.
  • Poczekaj na ukończenie tworzenia tożsamości przypisanej przez użytkownika.
  • Pobierz element PrincipalId z nowej tożsamości.
  • Przypisz rolę RBAC do nowej tożsamości w zakresie do magazynu kluczy.

Użyj tych samych zmiennych zdefiniowanych wcześniej w tym artykule.

# Create a new user-assigned managed identity.
$UserIdentity = New-AzUserAssignedIdentity -ResourceGroupName $RgName -Name $ManagedUserName -Location $Location

Napiwek

Przed kontynuowaniem poczekaj około 1 minuty na zakończenie tworzenia tożsamości przypisanej przez użytkownika.

# Get the `PrincipalId` for the new identity.
$PrincipalId = $UserIdentity.PrincipalId

# Setup the parameters to assign the Crypto Service Encryption User role.
$CryptoUserRoleArguments = @{
    ObjectId           = $PrincipalId
    RoleDefinitionName = "Key Vault Crypto Service Encryption User"
    Scope              = $KeyVault.ResourceId
}

# Assign the Crypto Service Encryption User role to the managed identity so it can access the key in the vault.
New-AzRoleAssignment @CryptoUserRoleArguments

Używanie przypisanej przez system tożsamości zarządzanej do autoryzowania dostępu

Tożsamość zarządzana przypisana przez system jest skojarzona z wystąpieniem usługi platformy Azure, takim jak grupa woluminów Elastic SAN platformy Azure.

Tożsamość zarządzana przypisana przez system musi mieć uprawnienia dostępu do klucza w magazynie kluczy. W tym artykule użyto roli użytkownika szyfrowania usługi Kryptograficznej usługi Key Vault do przypisanej przez system tożsamości zarządzanej z zakresem magazynu kluczy w celu udzielenia tych uprawnień.

Po utworzeniu grupy woluminów tożsamość przypisana przez system jest automatycznie tworzona, jeśli -IdentityType "SystemAssigned" parametr jest określony za New-AzElasticSanVolumeGroup pomocą polecenia . Tożsamość przypisana przez system nie jest dostępna dopiero po utworzeniu grupy woluminów. Musisz również przypisać odpowiednią rolę, taką jak rola użytkownika szyfrowania usługi kryptograficznej usługi Key Vault do tożsamości, zanim będzie mogła uzyskać dostęp do klucza szyfrowania w magazynie kluczy. Nie można więc skonfigurować kluczy zarządzanych przez klienta do używania tożsamości przypisanej przez system podczas tworzenia grupy woluminów. Podczas tworzenia nowej grupy woluminów przy użyciu kluczy zarządzanych przez klienta należy użyć tożsamości przypisanej przez użytkownika podczas tworzenia grupy woluminów, można skonfigurować tożsamość przypisaną przez system po jej utworzeniu.

Użyj tego przykładowego kodu, aby przypisać wymaganą rolę RBAC do przypisanej przez system tożsamości zarządzanej w zakresie do magazynu kluczy. Użyj tych samych zmiennych zdefiniowanych wcześniej w tym artykule.

# Get the Elastic SAN volume group.
$ElasticSanVolumeGroup = Get-AzElasticSanVolumeGroup -Name $EsanVgName -ElasticSanName $EsanName -ResourceGroupName $RgName

# Generate a system-assigned identity if one does not already exist.
If ($ElasticSanVolumeGroup.IdentityPrincipalId -eq $null) {
Update-AzElasticSanVolumeGroup -ResourceGroupName $RgName -ElasticSanName $EsanName -Name $EsanVgName -IdentityType "SystemAssigned"}

# Get the `PrincipalId` (system-assigned identity) of the volume group.
$PrincipalId = $ElasticSanVolumeGroup.IdentityPrincipalId

# Setup the parameters to assign the Crypto Service Encryption User role.
$CryptoUserRoleArguments = @{
    ObjectId           = $PrincipalId
    RoleDefinitionName = "Key Vault Crypto Service Encryption User"
    Scope              = $KeyVault.ResourceId
}

# Assign the Crypto Service Encryption User role.
New-AzRoleAssignment @CryptoUserRoleArguments

Konfigurowanie kluczy zarządzanych przez klienta dla grupy woluminów

Wybierz moduł Azure PowerShell lub kartę interfejsu wiersza polecenia platformy Azure, aby uzyskać instrukcje dotyczące konfigurowania kluczy szyfrowania zarządzanych przez klienta przy użyciu preferowanego narzędzia do zarządzania.

Po wybraniu programu PowerShell wybierz kartę odpowiadającą tym, czy chcesz skonfigurować ustawienia podczas tworzenia nowej grupy woluminów, czy zaktualizować ustawienia dla istniejącej grupy.

Użyj tego przykładu, aby skonfigurować klucze zarządzane przez klienta z automatycznym aktualizowaniem wersji klucza podczas tworzenia nowej grupy woluminów przy użyciu programu PowerShell:

# Setup the parameters to create the volume group.
$NewVgArguments        = @{
    Name                         = $EsanVgName
    ElasticSanName               = $EsanName
    ResourceGroupName            = $RgName
    ProtocolType                 = "Iscsi"
    Encryption                   = "EncryptionAtRestWithCustomerManagedKey"
    KeyName                      = $KeyName
    KeyVaultUri                  = $KeyVault.VaultUri
    IdentityType                 = "UserAssigned"
    IdentityUserAssignedIdentity = @{$UserIdentity.Id=$UserIdentity}
    EncryptionIdentityEncryptionUserAssignedIdentity = $UserIdentity.Id
}

# Create the volume group.
New-AzElasticSanVolumeGroup @NewVgArguments

Aby skonfigurować klucze zarządzane przez klienta przy użyciu ręcznego aktualizowania wersji klucza podczas tworzenia nowej grupy woluminów przy użyciu programu PowerShell, dodaj KeyVersion parametr, jak pokazano w tym przykładzie:

# Setup the parameters to create the volume group.
$NewVgArguments        = @{
    Name                         = $EsanVgName
    ElasticSanName               = $EsanName
    ResourceGroupName            = $RgName
    ProtocolType                 = "Iscsi"
    Encryption                   = "EncryptionAtRestWithCustomerManagedKey"
    KeyName                      = $KeyName
    KeyVaultUri                  = $KeyVault.VaultUri
    KeyVersion                   = $Key.Version
    IdentityType                 = "UserAssigned"
    IdentityUserAssignedIdentity = @{$UserIdentity.Id=$UserIdentity}
    EncryptionIdentityEncryptionUserAssignedIdentity = $UserIdentity.Id
}

# Create the volume group.
New-AzElasticSanVolumeGroup @NewVgArguments

Następne kroki