Konfigurowanie kluczy zarządzanych przez klienta na potrzeby szyfrowania danych magazynowanych w usłudze Azure Event Hubs

Usługa Azure Event Hubs zapewnia szyfrowanie danych magazynowanych przy użyciu usługi Azure Storage Service Encryption (Azure SSE). Usługa Event Hubs używa usługi Azure Storage do przechowywania danych. Wszystkie dane przechowywane w usłudze Azure Storage są szyfrowane przy użyciu kluczy zarządzanych przez firmę Microsoft. Jeśli używasz własnego klucza (określanego również jako Bring Your Own Key (BYOK) lub klucza zarządzanego przez klienta, dane są nadal szyfrowane przy użyciu klucza zarządzanego przez firmę Microsoft, ale dodatkowo klucz zarządzany przez firmę Microsoft będzie szyfrowany przy użyciu klucza zarządzanego przez klienta. Ta funkcja umożliwia tworzenie, obracanie, wyłączanie i odwoływanie dostępu do kluczy zarządzanych przez klienta, które są używane do szyfrowania kluczy zarządzanych przez firmę Microsoft. Włączenie funkcji BYOK jest jednorazowym procesem konfiguracji w przestrzeni nazw.

Ważne

  • Funkcja BYOK jest obsługiwana przez warstwy Premium i dedykowane usługi Event Hubs.
  • Szyfrowanie można włączyć tylko dla nowych lub pustych przestrzeni nazw. Jeśli przestrzeń nazw zawiera centra zdarzeń, operacja szyfrowania zakończy się niepowodzeniem.

Za pomocą usługi Azure Key Vault możesz zarządzać kluczami i przeprowadzać inspekcję użycia kluczy. Możesz utworzyć własne klucze i przechowywać je w magazynie kluczy lub użyć interfejsów API usługi Azure Key Vault do generowania kluczy. Aby uzyskać więcej informacji na temat usługi Azure Key Vault, zobacz Co to jest usługa Azure Key Vault?

W tym artykule pokazano, jak skonfigurować magazyn kluczy przy użyciu kluczy zarządzanych przez klienta przy użyciu witryny Azure Portal. Aby dowiedzieć się, jak utworzyć magazyn kluczy przy użyciu witryny Azure Portal, zobacz Szybki start: tworzenie usługi Azure Key Vault przy użyciu witryny Azure Portal.

Włączanie kluczy zarządzanych przez klienta (witryna Azure Portal)

Aby włączyć klucze zarządzane przez klienta w witrynie Azure Portal, wykonaj następujące kroki. Jeśli używasz dedykowanej warstwy, przejdź najpierw do dedykowanego klastra usługi Event Hubs.

  1. Wybierz przestrzeń nazw, w której chcesz włączyć usługę BYOK.

  2. Na stronie Ustawienia przestrzeni nazw usługi Event Hubs wybierz pozycję Szyfrowanie.

  3. Wybierz szyfrowanie kluczy zarządzanych przez klienta magazynowanych, jak pokazano na poniższej ilustracji.

    Enable customer managed key

Konfigurowanie magazynu kluczy przy użyciu kluczy

Po włączeniu kluczy zarządzanych przez klienta należy skojarzyć klucz zarządzany przez klienta z przestrzenią nazw usługi Azure Event Hubs. Usługa Event Hubs obsługuje tylko usługę Azure Key Vault. Jeśli włączysz opcję Szyfrowanie przy użyciu klucza zarządzanego przez klienta w poprzedniej sekcji, musisz zaimportować klucz do usługi Azure Key Vault. Ponadto klucze muszą mieć nietrwałe usuwanie i nie przeczyszczać skonfigurowane dla klucza. Te ustawienia można skonfigurować przy użyciu programu PowerShell lub interfejsu wiersza polecenia.

  1. Aby utworzyć nowy magazyn kluczy, postępuj zgodnie z przewodnikiem Szybki start usługi Azure Key Vault. Aby uzyskać więcej informacji na temat importowania istniejących kluczy, zobacz Informacje o kluczach, wpisach tajnych i certyfikatach.

    Ważne

    Korzystanie z kluczy zarządzanych przez klienta w usłudze Azure Event Hubs wymaga skonfigurowania dwóch wymaganych właściwości magazynu kluczy. Są to: usuwanie nietrwałe i nie przeczyszczanie. Te właściwości są domyślnie włączone podczas tworzenia nowego magazynu kluczy w witrynie Azure Portal. Jeśli jednak musisz włączyć te właściwości w istniejącym magazynie kluczy, musisz użyć programu PowerShell lub interfejsu wiersza polecenia platformy Azure.

  2. Aby włączyć zarówno usuwanie nietrwałe, jak i ochronę przed przeczyszczeniem podczas tworzenia magazynu, użyj polecenia az keyvault create .

    az keyvault create --name ContosoVault --resource-group ContosoRG --location westus --enable-soft-delete true --enable-purge-protection true
    
  3. Aby dodać ochronę przed przeczyszczeniem do istniejącego magazynu (który ma już włączone usuwanie nietrwałe), użyj polecenia az keyvault update .

    az keyvault update --name ContosoVault --resource-group ContosoRG --enable-purge-protection true
    
  4. Utwórz klucze, wykonując następujące kroki:

    1. Aby utworzyć nowy klucz, wybierz pozycję Generuj/Importuj z menu Klucze w obszarze Ustawienia.

      Select Generate/Import button

    2. Ustaw pozycję Opcje na Generuj i nadaj kluczowi nazwę.

      Create a key

    3. Teraz możesz wybrać ten klucz do skojarzenia z przestrzenią nazw usługi Event Hubs na potrzeby szyfrowania z listy rozwijanej.

      Select key from key vault

      Uwaga

      W celu zapewnienia nadmiarowości można dodać maksymalnie 3 klucze. W przypadku, gdy jeden z kluczy wygasł lub nie jest dostępny, inne klucze będą używane do szyfrowania.

    4. Wypełnij szczegóły klucza, a następnie kliknij pozycję Wybierz. Umożliwi to szyfrowanie klucza zarządzanego przez firmę Microsoft przy użyciu klucza (klucza zarządzanego przez klienta).

Tożsamości zarządzane

Istnieją dwa typy tożsamości zarządzanych, które można przypisać do przestrzeni nazw usługi Event Hubs.

  • Przypisane przez system: tożsamość zarządzana można włączyć bezpośrednio w przestrzeni nazw usługi Event Hubs. Po włączeniu tożsamości zarządzanej przypisanej przez system tożsamość jest tworzona w usłudze Microsoft Entra, która jest powiązana z cyklem życia tej przestrzeni nazw usługi Event Hubs. Dlatego po usunięciu przestrzeni nazw platforma Azure automatycznie usunie tożsamość. Zgodnie z projektem tylko ten zasób platformy Azure (przestrzeń nazw) może używać tej tożsamości do żądania tokenów z identyfikatora Entra firmy Microsoft.

  • Przypisane przez użytkownika: możesz również utworzyć tożsamość zarządzaną jako autonomiczny zasób platformy Azure, który jest nazywany tożsamością przypisaną przez użytkownika. Tożsamość zarządzaną przypisaną przez użytkownika można utworzyć i przypisać ją do co najmniej jednej przestrzeni nazw usługi Event Hubs. W przypadku tożsamości zarządzanych przypisanych przez użytkownika tożsamość jest zarządzana oddzielnie od zasobów, które go używają. Nie są one powiązane z cyklem życia przestrzeni nazw. Możesz jawnie usunąć tożsamość przypisaną przez użytkownika, gdy nie jest już potrzebna.

    Aby uzyskać więcej informacji, zobacz Czym są tożsamości zarządzane dla zasobów platformy Azure?.

Szyfrowanie przy użyciu tożsamości przypisanych przez system (szablon)

W tej sekcji przedstawiono sposób wykonywania następujących zadań przy użyciu szablonów usługi Azure Resource Manager.

  1. Utwórz przestrzeń nazw usługi Event Hubs z tożsamością usługi zarządzanej.
  2. Utwórz magazyn kluczy i przyznaj tożsamości usługi dostęp do magazynu kluczy.
  3. Zaktualizuj przestrzeń nazw usługi Event Hubs przy użyciu informacji o magazynie kluczy (klucz/wartość).

Tworzenie klastra i przestrzeni nazw usługi Event Hubs przy użyciu tożsamości usługi zarządzanej

W tej sekcji pokazano, jak utworzyć przestrzeń nazw usługi Azure Event Hubs z tożsamością usługi zarządzanej przy użyciu szablonu usługi Azure Resource Manager i programu PowerShell.

  1. Utwórz szablon usługi Azure Resource Manager, aby utworzyć przestrzeń nazw usługi Event Hubs z tożsamością usługi zarządzanej. Nadaj plikowi nazwę: CreateEventHubClusterAndNamespace.json:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "clusterName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Event Hub cluster."
             }
          },
          "namespaceName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Namespace to be created in cluster."
             }
          },
          "location":{
             "type":"string",
             "defaultValue":"[resourceGroup().location]",
             "metadata":{
                "description":"Specifies the Azure location for all resources."
             }
          }
       },
       "resources":[
          {
             "type":"Microsoft.EventHub/clusters",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('clusterName')]",
             "location":"[parameters('location')]",
             "sku":{
                "name":"Dedicated",
                "capacity":1
             }
          },
          {
             "type":"Microsoft.EventHub/namespaces",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "identity":{
                "type":"SystemAssigned"
             },
             "sku":{
                "name":"Standard",
                "tier":"Standard",
                "capacity":1
             },
             "properties":{
                "isAutoInflateEnabled":false,
                "maximumThroughputUnits":0,
                "clusterArmId":"[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]"
             },
             "dependsOn":[
                "[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]"
             ]
          }
       ],
       "outputs":{
          "EventHubNamespaceId":{
             "type":"string",
             "value":"[resourceId('Microsoft.EventHub/namespaces',parameters('namespaceName'))]"
          }
       }
    }
    
  2. Utwórz plik parametrów szablonu o nazwie: CreateEventHubClusterAndNamespaceParams.json.

    Uwaga

    Zastąp następujące wartości:

    • <EventHubsClusterName> — Nazwa klastra usługi Event Hubs
    • <EventHubsNamespaceName> - Nazwa przestrzeni nazw usługi Event Hubs
    • <Location> - Lokalizacja przestrzeni nazw usługi Event Hubs
    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "clusterName":{
             "value":"<EventHubsClusterName>"
          },
          "namespaceName":{
             "value":"<EventHubsNamespaceName>"
          },
          "location":{
             "value":"<Location>"
          }
       }
    }
    
    
  3. Uruchom następujące polecenie programu PowerShell, aby wdrożyć szablon w celu utworzenia przestrzeni nazw usługi Event Hubs. Następnie pobierz identyfikator przestrzeni nazw usługi Event Hubs, aby użyć jej później. Zastąp {MyRG} ciąg nazwą grupy zasobów przed uruchomieniem polecenia .

    $outputs = New-AzResourceGroupDeployment -Name CreateEventHubClusterAndNamespace -ResourceGroupName {MyRG} -TemplateFile ./CreateEventHubClusterAndNamespace.json -TemplateParameterFile ./CreateEventHubClusterAndNamespaceParams.json
    
    $EventHubNamespaceId = $outputs.Outputs["eventHubNamespaceId"].value
    

Udzielanie tożsamości przestrzeni nazw usługi Event Hubs dostępu do magazynu kluczy

  1. Uruchom następujące polecenie, aby utworzyć magazyn kluczy z włączoną ochroną przed przeczyszczeniem i usuwaniem nietrwałym.

    New-AzureRmKeyVault -Name {keyVaultName} -ResourceGroupName {RGName}  -Location {location} -EnableSoftDelete -EnablePurgeProtection    
    

    (LUB)

    Uruchom następujące polecenie, aby zaktualizować istniejący magazyn kluczy. Przed uruchomieniem polecenia określ wartości dla nazw grupy zasobów i magazynu kluczy.

    ($updatedKeyVault = Get-AzureRmResource -ResourceId (Get-AzureRmKeyVault -ResourceGroupName {RGName} -VaultName {keyVaultName}).ResourceId).Properties| Add-Member -MemberType "NoteProperty" -Name "enableSoftDelete" -Value "true"-Force | Add-Member -MemberType "NoteProperty" -Name "enablePurgeProtection" -Value "true" -Force
    
  2. Ustaw zasady dostępu do magazynu kluczy, aby tożsamość zarządzana przestrzeni nazw usługi Event Hubs mogła uzyskiwać dostęp do wartości klucza w magazynie kluczy. Użyj identyfikatora przestrzeni nazw usługi Event Hubs z poprzedniej sekcji.

    $identity = (Get-AzureRmResource -ResourceId $EventHubNamespaceId -ExpandProperties).Identity
    
    Set-AzureRmKeyVaultAccessPolicy -VaultName {keyVaultName} -ResourceGroupName {RGName} -ObjectId $identity.PrincipalId -PermissionsToKeys get,wrapKey,unwrapKey,list
    

Szyfrowanie danych w przestrzeni nazw usługi Event Hubs przy użyciu klucza zarządzanego przez klienta z magazynu kluczy

Wykonano następujące kroki do tej pory:

  1. Utworzono przestrzeń nazw w warstwie Premium z tożsamością zarządzaną.
  2. Utwórz magazyn kluczy i przyznaj tożsamości zarządzanej dostęp do magazynu kluczy.

W tym kroku zaktualizujesz przestrzeń nazw usługi Event Hubs przy użyciu informacji o magazynie kluczy.

  1. Utwórz plik JSON o nazwie CreateEventHubClusterAndNamespace.json z następującą zawartością:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "clusterName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Event Hub cluster."
             }
          },
          "namespaceName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Namespace to be created in cluster."
             }
          },
          "location":{
             "type":"string",
             "defaultValue":"[resourceGroup().location]",
             "metadata":{
                "description":"Specifies the Azure location for all resources."
             }
          },
          "keyVaultUri":{
             "type":"string",
             "metadata":{
                "description":"URI of the KeyVault."
             }
          },
          "keyName":{
             "type":"string",
             "metadata":{
                "description":"KeyName."
             }
          }
       },
       "resources":[
          {
             "type":"Microsoft.EventHub/namespaces",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "identity":{
                "type":"SystemAssigned"
             },
             "sku":{
                "name":"Standard",
                "tier":"Standard",
                "capacity":1
             },
             "properties":{
                "isAutoInflateEnabled":false,
                "maximumThroughputUnits":0,
                "clusterArmId":"[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]",
                "encryption":{
                   "keySource":"Microsoft.KeyVault",
                   "keyVaultProperties":[
                      {
                         "keyName":"[parameters('keyName')]",
                         "keyVaultUri":"[parameters('keyVaultUri')]"
                      }
                   ]
                }
             }
          }
       ]
    }
    
  2. Utwórz plik parametrów szablonu: UpdateEventHubClusterAndNamespaceParams.json.

    Uwaga

    Zastąp następujące wartości:

    • <EventHubsClusterName> — Nazwa klastra usługi Event Hubs.
    • <EventHubsNamespaceName> - Nazwa przestrzeni nazw usługi Event Hubs
    • <Location> - Lokalizacja przestrzeni nazw usługi Event Hubs
    • <KeyVaultName> - Nazwa magazynu kluczy
    • <KeyName> - Nazwa klucza w magazynie kluczy
    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "clusterName":{
             "value":"<EventHubsClusterName>"
          },
          "namespaceName":{
             "value":"<EventHubsNamespaceName>"
          },
          "location":{
             "value":"<Location>"
          },
          "keyName":{
             "value":"<KeyName>"
          },
          "keyVaultUri":{
             "value":"https://<KeyVaultName>.vault.azure.net"
          }
       }
    }
    
  3. Uruchom następujące polecenie programu PowerShell, aby wdrożyć szablon usługi Resource Manager. Zastąp {MyRG} ciąg nazwą grupy zasobów przed uruchomieniem polecenia .

    New-AzResourceGroupDeployment -Name UpdateEventHubNamespaceWithEncryption -ResourceGroupName {MyRG} -TemplateFile ./UpdateEventHubClusterAndNamespace.json -TemplateParameterFile ./UpdateEventHubClusterAndNamespaceParams.json 
    

Szyfrowanie przy użyciu tożsamości przypisanych przez użytkownika (szablon)

  1. Utwórz tożsamość przypisaną przez użytkownika.
  2. Utwórz magazyn kluczy i przyznaj dostęp do tożsamości przypisanej przez użytkownika za pośrednictwem zasad dostępu.
  3. Utwórz przestrzeń nazw usługi Event Hubs z zarządzaną tożsamością użytkownika i informacjami o magazynie kluczy.

Tworzenie tożsamości przypisanej przez użytkownika

Postępuj zgodnie z instrukcjami w artykule Tworzenie tożsamości zarządzanej przypisanej przez użytkownika, aby utworzyć tożsamość przypisaną przez użytkownika. Tożsamość przypisaną przez użytkownika można również utworzyć przy użyciu interfejsu wiersza polecenia, programu PowerShell, szablonu usługi Azure Resource Manager i interfejsu REST.

Uwaga

Do przestrzeni nazw można przypisać maksymalnie 4 tożsamości użytkowników. Te skojarzenia są usuwane, gdy przestrzeń nazw zostanie usunięta lub gdy przekażesz identity -> type element w szablonie do None.

Tworzenie magazynu kluczy i udzielanie dostępu do tożsamości przypisanej przez użytkownika

  1. Uruchom następujące polecenie, aby utworzyć magazyn kluczy z włączoną ochroną przed przeczyszczeniem i usuwaniem nietrwałym.

    New-AzureRmKeyVault -Name "{keyVaultName}" -ResourceGroupName {RGName} -Location "{location}" -EnableSoftDelete -EnablePurgeProtection           
    

    (LUB)

    Uruchom następujące polecenie, aby zaktualizować istniejący magazyn kluczy. Przed uruchomieniem polecenia określ wartości dla nazw grupy zasobów i magazynu kluczy.

    ($updatedKeyVault = Get-AzureRmResource -ResourceId (Get-AzureRmKeyVault -ResourceGroupName {RGName} -VaultName {keyVaultName}).ResourceId).Properties| Add-Member -MemberType "NoteProperty" -Name "enableSoftDelete" -Value "true"-Force | Add-Member -MemberType "NoteProperty" -Name "enablePurgeProtection" -Value "true" -Force            
    
  2. Pobierz identyfikator jednostki usługi dla tożsamości użytkownika przy użyciu następującego polecenia programu PowerShell. W tym przykładzie ud1 jest tożsamość przypisana przez użytkownika do użycia na potrzeby szyfrowania.

    $servicePrincipal=Get-AzADServicePrincipal -SearchString "ud1"    
    
  3. Udziel tożsamości przypisanej przez użytkownika dostępu do magazynu kluczy, przypisując zasady dostępu.

    Set-AzureRmKeyVaultAccessPolicy -VaultName {keyVaultName} -ResourceGroupName {RGName} -ObjectId $servicePrincipal.Id -PermissionsToKeys get,wrapKey,unwrapKey,list    
    

    Uwaga

    Można dodać maksymalnie 3 klucze, ale tożsamość użytkownika używana do szyfrowania powinna być taka sama dla wszystkich kluczy. Obecnie obsługiwana jest tylko pojedyncza tożsamość szyfrowania.

Tworzenie przestrzeni nazw usługi Event Hubs z informacjami o tożsamości użytkownika i magazynie kluczy

W tej sekcji przedstawiono przykład, w którym pokazano, jak wykonać następujące zadania przy użyciu szablonu usługi Azure Resource Manager.

  • Przypisz tożsamość zarządzaną przez użytkownika do przestrzeni nazw usługi Event Hubs.

                "identity": {
                    "type": "UserAssigned",
                    "userAssignedIdentities": {
                        "[parameters('identity').userAssignedIdentity]": {}
                    }
                },
    
  • Włącz szyfrowanie w przestrzeni nazw, określając klucz z magazynu kluczy i tożsamość zarządzaną przez użytkownika w celu uzyskania dostępu do klucza.

                    "encryption":{
                       "keySource":"Microsoft.KeyVault",
                       "keyVaultProperties":[
                            {
                                "keyName": "[parameters('keyName')]",
                                "keyVaultUri": "[parameters('keyVaultUri')]",
                                "identity": {
                                    "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                                }
                            }
                       ]
                    }
    
  1. Utwórz plik JSON o nazwie CreateEventHubsNamespaceWithUserIdentityAndEncryption.json o następującej zawartości:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
        "clusterName":{
            "type":"string",
             "metadata":{
                "description":"Name for the Event Hub cluster."
             }
          },
          "namespaceName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Namespace to be created in cluster."
             }
          },
          "location":{
             "type":"string",
             "defaultValue":"[resourceGroup().location]",
             "metadata":{
                "description":"Specifies the Azure location for all resources."
             }
          },
          "keyVaultUri":{
             "type":"string",
             "metadata":{
                "description":"URI of the KeyVault."
             }
          },
          "keyName":{
             "type":"string",
             "metadata":{
                "description":"KeyName."
             },
         "identity": {
            "type": "Object",
            "defaultValue": {
                "userAssignedIdentity": ""
            },
            "metadata": {
                "description": "user-assigned identity."
            }
         }
       },
       "resources":[
          {
             "type":"Microsoft.EventHub/clusters",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('clusterName')]",
             "location":"[parameters('location')]",
             "sku":{
                "name":"Dedicated",
                "capacity":1
             }
          },
          {
             "type":"Microsoft.EventHub/namespaces",
             "apiVersion":"2021-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "sku":{
                "name":"Standard",
                "tier":"Standard",
                "capacity":1
             },
            "identity": {
                "type": "UserAssigned",
                "userAssignedIdentities": {
                    "[parameters('identity').userAssignedIdentity]": {}
                }
            },
             "properties":{
                "encryption":{
                   "keySource":"Microsoft.KeyVault",
                   "keyVaultProperties":[
                        {
                            "keyName": "[parameters('keyName')]",
                            "keyVaultUri": "[parameters('keyVaultUri')]",
                            "identity": {
                                "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                            }
                        }
                   ]
                }
             }
          }
       ]
    }        
    
  2. Utwórz plik parametrów szablonu: CreateEventHubsNamespaceWithUserIdentityAndEncryptionParams.json.

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "value":"<EventHubsNamespaceName>"
          },
          "location":{
             "value":"<Location>"
          },
          "keyVaultUri":{
             "value":"https://<KeyVaultName>.vault.azure.net"
          },
          "keyName":{
             "value":"<KeyName>"
          },
          "identity": {
            "value": {
                "userAssignedIdentity": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER MANAGED IDENTITY NAME>"
            }
         }
       }
    }
    

    W pliku parametrów zastąp symbole zastępcze odpowiednimi wartościami.

    Symbol zastępczy wartość
    <EventHubsNamespaceName> Nazwa przestrzeni nazw usługi Event Hubs.
    <Location> Lokalizacja, w której ma zostać utworzona przestrzeń nazw.
    <KeyVaultName> Nazwa magazynu kluczy.
    <KeyName> Nazwa klucza w magazynie kluczy.
    <AZURE SUBSCRIPTION ID> Identyfikator subskrypcji platformy Azure.
    <RESOURCE GROUP NAME> Grupa zasobów tożsamości zarządzanej przez użytkownika.
    <USER MANAGED IDENTITY NAME> Nazwa tożsamości zarządzanej przez użytkownika.
  3. Uruchom następujące polecenie programu PowerShell, aby wdrożyć szablon usługi Resource Manager. Zastąp {MyRG} ciąg nazwą grupy zasobów przed uruchomieniem polecenia .

    New-AzResourceGroupDeployment -Name CreateEventHubsNamespaceWithEncryption -ResourceGroupName {MyRG} -TemplateFile ./ CreateEventHubsNamespaceWithUserIdentityAndEncryption.json -TemplateParameterFile ./ CreateEventHubsNamespaceWithUserIdentityAndEncryptionParams.json        
    

Używanie tożsamości przypisanych przez użytkownika i przypisanych przez system

Przestrzeń nazw może mieć jednocześnie przypisane przez system i przypisane przez użytkownika tożsamości. W tym przypadku type właściwość będzie miała SystemAssignedwartość , UserAssigned jak pokazano w poniższym przykładzie.

"identity": {
    "type": "SystemAssigned, UserAssigned",
    "userAssignedIdentities": {
        "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userIdentity1>" : {}
    }
}

W tym scenariuszu można wybrać tożsamość przypisaną przez system lub tożsamość przypisaną przez użytkownika do szyfrowania danych magazynowanych.

W szablonie usługi Resource Manager, jeśli nie określisz identity atrybutu, zostanie użyta tożsamość zarządzana przez system. Oto przykładowy fragment kodu.

"properties":{
   "encryption":{
      "keySource":"Microsoft.KeyVault",
      "keyVaultProperties":[
         {
            "keyName":"[parameters('keyName')]",
            "keyVaultUri":"[parameters('keyVaultUri')]"
         }
      ]
   }
}

Zobacz poniższy przykład użycia tożsamości zarządzanej przez użytkownika na potrzeby szyfrowania. Zwróć uwagę, że identity atrybut jest ustawiony na tożsamość zarządzaną przez użytkownika.

"properties":{
   "encryption":{
      "keySource":"Microsoft.KeyVault",
      "keyVaultProperties":[
         {
            "keyName":"[parameters('keyName')]",
            "keyVaultUri":"[parameters('keyVaultUri')]",
            "identity": {
                "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
            }
         }
      ]
   }
}

Włączanie szyfrowania danych w infrastrukturze (lub podwójnej)

Jeśli potrzebujesz wyższego poziomu pewności, że dane są bezpieczne, możesz włączyć szyfrowanie na poziomie infrastruktury, które jest również nazywane podwójnym szyfrowaniem.

Po włączeniu szyfrowania infrastruktury dane na koncie przestrzeni nazw usługi Event Hubs są szyfrowane dwa razy, raz na poziomie usługi i raz na poziomie infrastruktury przy użyciu dwóch różnych algorytmów szyfrowania i dwóch różnych kluczy. W związku z tym szyfrowanie infrastruktury danych usługi Event Hubs chroni przed scenariuszem, w którym może zostać naruszony jeden z algorytmów szyfrowania lub kluczy.

Szyfrowanie infrastruktury można włączyć, aktualizując szablon usługi Azure Resource Manager za pomocą requireInfrastructureEncryption właściwości w powyższym pliku CreateEventHubClusterAndNamespace.json , jak pokazano poniżej.

"properties":{
   "isAutoInflateEnabled":false,
   "maximumThroughputUnits":0,
   "clusterArmId":"[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]",
   "encryption":{
      "keySource":"Microsoft.KeyVault",
      "requireInfrastructureEncryption":true,
      "keyVaultProperties":[
         {
            "keyName":"[parameters('keyName')]",
            "keyVaultUri":"[parameters('keyVaultUri')]"
         }
      ]
   }
}

Obracanie, odwoływanie i buforowanie kluczy szyfrowania

Obracanie kluczy szyfrowania

Klucz można obrócić w magazynie kluczy przy użyciu mechanizmu rotacji usługi Azure Key Vault. Daty aktywacji i wygaśnięcia można również ustawić w celu zautomatyzowania rotacji kluczy. Usługa Event Hubs wykryje nowe wersje kluczy i rozpocznie korzystanie z nich automatycznie.

Odwoływanie dostępu do kluczy

Odwołanie dostępu do kluczy szyfrowania nie spowoduje przeczyszczenia danych z usługi Event Hubs. Nie można jednak uzyskać dostępu do danych z przestrzeni nazw usługi Event Hubs. Klucz szyfrowania można odwołać za pomocą zasad dostępu lub usuwając klucz. Dowiedz się więcej na temat zasad dostępu i zabezpieczania magazynu kluczy z bezpiecznego dostępu do magazynu kluczy.

Po odwołaniu klucza szyfrowania usługa Event Hubs w zaszyfrowanej przestrzeni nazw stanie się nieobsługiwalna. Jeśli dostęp do klucza jest włączony lub przywracany jest klucz usuwania, usługa Event Hubs wybierze klucz, aby można było uzyskać dostęp do danych z zaszyfrowanej przestrzeni nazw usługi Event Hubs.

Buforowanie kluczy

Wystąpienie usługi Event Hubs (centrum zdarzeń) sonduje swoje klucze szyfrowania wyświetlane co 5 minut. Buforuje i używa ich do następnego sondowania, czyli po 5 minutach. Jeśli jest dostępny co najmniej jeden klucz, centrum zdarzeń jest dostępne. Jeśli wszystkie wymienione klucze są niedostępne podczas sondowania, wszystkie centra zdarzeń staną się niedostępne.

Poniżej przedstawiono więcej szczegółów:

  • Co 5 minut usługa Event Hubs sonduje wszystkie klucze zarządzane przez klienta wymienione w rekordzie przestrzeni nazw:
    • Jeśli klucz został obrócony, rekord zostanie zaktualizowany przy użyciu nowego klucza.
    • Jeśli klucz został odwołany, klucz zostanie usunięty z rekordu.
    • Jeśli wszystkie klucze zostały odwołane, stan szyfrowania przestrzeni nazw ma wartość Odwołano. Nie można uzyskać dostępu do danych z przestrzeni nazw usługi Event Hubs".

Zagadnienia dotyczące korzystania z odzyskiwania po awarii geograficznej

Ważne

Aby włączyć funkcję Geo-DR w przestrzeni nazw korzystającej z szyfrowania BYOK, pomocnicza przestrzeń nazw do parowania musi mieć włączoną tożsamość zarządzaną przypisaną przez system lub przypisaną przez użytkownika.

Odzyskiwanie po awarii geograficznej — szyfrowanie przy użyciu tożsamości przypisanych przez system

Aby włączyć szyfrowanie klucza zarządzanego przez firmę Microsoft przy użyciu klucza zarządzanego przez klienta, zasady dostępu są konfigurowane dla tożsamości zarządzanej przypisanej przez system w określonej usłudze Azure KeyVault. Zapewnia to kontrolowany dostęp do usługi Azure KeyVault z przestrzeni nazw usługi Azure Event Hubs.

Ze względu na to:

  • Jeśli odzyskiwanie po awarii geograficznej jest już włączone dla przestrzeni nazw usługi Event Hubs i chcesz włączyć klucz zarządzany przez klienta, wówczas
    • Przerwij parowanie.
    • Skonfiguruj zasady dostępu dla tożsamości zarządzanej przypisanej przez system zarówno dla podstawowych, jak i pomocniczych przestrzeni nazw w magazynie kluczy.
    • Skonfiguruj szyfrowanie w podstawowej przestrzeni nazw.
    • Ponownie połącz podstawowe i pomocnicze przestrzenie nazw.
  • Jeśli chcesz włączyć geo-odzyskiwanie po awarii w przestrzeni nazw usługi Event Hubs, w której klucz zarządzany przez klienta jest już skonfigurowany, wykonaj następujące kroki:
    • Skonfiguruj zasady dostępu dla tożsamości zarządzanej dla pomocniczej przestrzeni nazw w magazynie kluczy.
    • Parowanie podstawowych i pomocniczych przestrzeni nazw.

Odzyskiwanie po awarii geograficznej — szyfrowanie przy użyciu tożsamości przypisanych przez użytkownika

Poniżej przedstawiono kilka zaleceń:

  1. Utwórz tożsamość zarządzaną i przypisz uprawnienia usługi Key Vault do tożsamości zarządzanej.
  2. Dodaj tożsamość jako tożsamość przypisaną przez użytkownika i włącz szyfrowanie przy użyciu tożsamości w obu przestrzeniach nazw.
  3. Łączenie przestrzeni nazw

Warunki włączania odzyskiwania po awarii geograficznej i szyfrowania przy użyciu tożsamości przypisanych przez użytkownika:

  1. Pomocnicza przestrzeń nazw musi już mieć włączoną opcję Szyfrowanie z tożsamością przypisaną przez użytkownika, jeśli ma być sparowana z podstawową przestrzenią nazw z włączoną funkcją Szyfrowanie.
  2. Nie można włączyć szyfrowania dla już sparowanego podstawowego elementu, nawet jeśli pomocnicza ma tożsamość przypisaną przez użytkownika skojarzona z przestrzenią nazw.

Konfigurowanie dzienników diagnostycznych

Ustawienie dzienników diagnostycznych dla przestrzeni nazw z włączoną usługą BYOK zapewnia wymagane informacje o operacjach. Te dzienniki można włączyć, a później przesyłać strumieniowo do centrum zdarzeń lub analizować za pośrednictwem analizy dzienników lub przesyłać strumieniowo do magazynu w celu wykonania dostosowanej analizy. Aby dowiedzieć się więcej na temat dzienników diagnostycznych, zobacz Omówienie dzienników diagnostycznych platformy Azure. Aby zapoznać się ze schematem, zobacz Monitorowanie dokumentacji danych.

Następne kroki

Odwiedź następujące artykuły: