Konfigurieren von vom Kunden verwalteten Schlüsseln zum Verschlüsseln von ruhenden Azure Event Hubs Daten

Azure Event Hubs bietet verschlüsselung ruhender Daten mit Azure Storage Dienstverschlüsselung (Azure SSE). Der Event Hubs-Dienst verwendet Azure Storage zum Speichern der Daten. Alle in Azure Storage gespeicherten Daten werden mithilfe von Microsoft verwalteter Schlüssel verschlüsselt. Wenn Sie Ihren eigenen Schlüssel verwenden (auch als Bring Your Own Key (BYOK) oder kundenverwalteter Schlüssel bezeichnet), werden die Daten weiterhin durch den von Microsoft verwalteten Schlüssel verschlüsselt, aber der von Microsoft verwaltete Schlüssel wird ebenfalls durch den kundenverwalteten Schlüssel verschlüsselt. Mit diesem Feature können Sie den Zugriff für kundenverwaltete Schlüssel erstellen, rotieren, deaktivieren und widerrufen, die zum Verschlüsseln von Microsoft-verwalterten Schlüsseln verwendet werden. Das Aktivieren des BYOK-Features ist ein einmaliger Setupvorgang für Ihren Namespace.

Wichtig

  • Die BYOK-Funktion wird von den Premium- und Dedicated-Tarifen von Event Hubs unterstützt.
  • Du kannst die Verschlüsselung nur für neue oder leere Namespaces aktivieren. Wenn der Namespace Event Hubs enthält, dann schlägt der Verschlüsselungsvorgang fehl.

Sie können Azure Key Vault (einschließlich Azure Key Vault Managed Hardware Security Module) verwenden, um Ihre Schlüssel zu verwalten und ihre Schlüsselverwendung zu überwachen. Sie können entweder eigene Schlüssel erstellen und in einem key vault speichern, oder Sie können die Azure Key Vault-APIs verwenden, um Schlüssel zu generieren. Weitere Informationen zu Azure Key Vault finden Sie unter What is Azure Key Vault?

In diesem Artikel wird erläutert, wie Sie mithilfe der Azure portal eine key vault mit vom Kunden verwalteten Schlüsseln konfigurieren. Um zu lernen, wie man einen Key Vault mit dem Azure-Portal erstellt, siehe Quickstart: Create an Azure Key Vault using the Azure Portal.

Voraussetzungen

  • Ein Azure-Abonnement. Falls Sie kein Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
  • Ein Premium- oder dedizierter Event Hubs-Namespace, der neu oder leer ist. Sie können die Verschlüsselung nur für neue oder leere Namespaces aktivieren. Für die dedizierte Stufe gibt es einen Event Hubs dedizierten Cluster.
  • Ein Schlüsseltresor (oder über Azure Key Vault verwaltetes HSM) mit aktiviertem Schutz vor vorläufigem Löschen und Löschschutz. Vorläufiges Löschen ist für alle Schlüsseltresore standardmäßig aktiviert; den Löschschutz müssen Sie gesondert aktivieren.

Aktivieren von vom Kunden verwalteten Schlüsseln (Azure portal)

Führen Sie die folgenden Schritte aus, um vom Kunden verwaltete Schlüssel im Azure portal zu aktivieren. Wenn Sie die dedizierte Stufe verwenden, navigieren Sie zuerst zu Ihrem dedizierten Event Hubs-Cluster.

  1. Wählen Sie den Namespace aus, für den Sie BYOK aktivieren möchten.

  2. Wählen Sie auf der Seite Einstellungen des Event Hubs-Namespace die Option Verschlüsselung aus.

  3. Wählen Sie die Verschlüsselung im Ruhezustand mit kundenseitig verwalteten Schlüsseln wie in der folgenden Abbildung gezeigt aus.

    Kundenseitig verwaltete Schlüssel aktivieren

Hinweis

Derzeit können Sie Azure Key Vault managed HSM nicht über das Portal konfigurieren.

Einrichten eines Key Vault mit Schlüsseln

Nachdem Sie kundenverwaltete Schlüssel aktiviert haben, müssen Sie den kundenverwalteten Schlüssel mit Ihrem Azure Event Hubs-Namensraum verknüpfen. Event Hubs unterstützen nur Azure Key Vault. Wenn Sie im vorherigen Abschnitt die Option "Verschlüsselung mit kundenverwaltetem Schlüssel" aktivieren, müssen Sie den Schlüssel in Azure Key Vault importieren. Außerdem müssen im Key Vault Soft-Delete und Purge-Schutz aktiviert sein. Sie können diese Einstellungen mit PowerShell oder Azure CLI konfigurieren.

Erstellen eines Schlüsseltresors oder eines verwalteten HSM mit Schlüsseltresor

Wichtig

Die Verwendung von kundenverwalteten Schlüsseln mit Azure Event Hubs erfordert, dass der Schlüsseltresor sowohl den Soft-Delete- als auch den Löschschutz aktiviert hat. Vorläufiges Löschen ist standardmäßig für alle Schlüsseltresore aktiviert und kann nicht deaktiviert werden. Der Löschschutz ist standardmäßig nicht aktiviert. Wenn Sie einen neuen Schlüsseltresor im Azure-Portal erstellen, können Sie während der Erstellung den Löschschutz aktivieren. Wenn du den Löschschutz auf einem bestehenden Key Vault aktivieren musst, nutze entweder PowerShell oder Azure CLI.

  1. Um eine neue key vault zu erstellen, folgen Sie dem Azure Key Vault Quickstart. Weitere Informationen zum Importieren vorhandener Schlüssel finden Sie unter About keys, secrets, and certificates.

  2. Vorläufiges Löschen ist standardmäßig aktiviert. Um beim Erstellen eines Tresors den Löschschutz zu aktivieren, verwenden Sie den Befehl az keyvault create.

    az keyvault create --name ContosoVault --resource-group ContosoRG --location westus --enable-purge-protection true
    
  3. Um einem vorhandenen Schlüsseltresor Löschschutz hinzuzufügen, verwenden Sie den Befehl az keyvault update.

    az keyvault update --name ContosoVault --resource-group ContosoRG --enable-purge-protection true
    

Erstellen von Schlüsseln

Führen Sie diese Schritte durch, um Schlüssel zu erstellen:

  1. Wählen Sie zum Erstellen eines neuen Schlüssels Generieren/Importieren im Menü Schlüssel unter Einstellungen aus.

    Screenshot der Key Vault-Seite mit der Schaltfläche Generieren oder Importieren ausgewählt.

  2. Legen Sie Optionen auf Generieren fest, und benennen Sie den Schlüssel.

    Screenshot der Seite „Einen Schlüssel erstellen“ mit dem angegebenen Schlüsselwert.

  3. Wählen Sie diesen Schlüssel aus, um ihn mit dem Event Hubs-Namensraum zur Verschlüsselung aus der Dropdown-Liste zu verknüpfen.

    Screenshot des Select-Schlüssels von der Azure Key Vault-Seite.

    Hinweis

    Um Redundanz zu gewährleisten, können Sie bis zu drei Schlüssel hinzufügen. Wenn einer der Schlüssel abläuft oder nicht zugänglich ist, werden die anderen Schlüssel zur Verschlüsselung verwendet.

  4. Füllen Sie die Angaben für den Schlüssel aus und wählen Sie Auswählen. Dieser Schritt ermöglicht die Verschlüsselung des von Microsoft verwalteten Schlüssels mit Ihrem Schlüssel (kundenverwalteter Schlüssel).

Verwaltete Identitäten

Es gibt zwei Arten von verwalteten Identitäten, die Sie einem Event Hubs-Namespace zuweisen können.

  • Systemseitig zugewiesen: Sie können eine verwaltete Identität direkt in einem Event Hubs-Namespace aktivieren. Wenn Sie eine systemseitig zugewiesene verwaltete Identität aktivieren, wird in Microsoft Entra eine Identität erstellt, die an den Lebenszyklus des jeweiligen Event Hubs-Namespace gebunden ist. Wenn der Namespace gelöscht wird, löscht Azure also automatisch die Identität für Sie. Standardmäßig kann nur diese Azure Ressource (Namespace) diese Identität verwenden, um Token von Microsoft Entra ID anzufordern.

  • User-assigned: Sie können auch eine verwaltete Identität als eigenständige Azure Ressource erstellen, die als vom Benutzer zugewiesene Identität bezeichnet wird. Sie können eine benutzerseitig zugewiesene verwaltete Identität erstellen und einem oder mehreren Event Hubs-Namespaces zuweisen. Bei benutzerseitig zugewiesenen verwalteten Identitäten wird die Identität getrennt von den Ressourcen verwaltet, für die sie verwendet wird. Sie sind nicht an den Lebenszyklus des Namespace gebunden. Sie können eine benutzerseitig zugewiesene Identität explizit löschen, wenn Sie sie nicht mehr benötigen.

    Weitere Informationen finden Sie unter Was sind verwaltete Identitäten für Azure-Ressourcen?.

Verschlüsseln mithilfe systemseitig zugewiesener Identitäten (Vorlage)

Dieser Abschnitt zeigt, wie man die folgenden Aufgaben mit Azure Resource Manager-Vorlagen erledigt:

  1. Erstellen eines Event Hubs-Namespace mit einer verwalteten Dienstidentität
  2. Erstellen Sie eine Key Vault und gewähren Sie der Dienstidentität Zugriff auf die Key Vault.
  3. Aktualisieren des Event Hubs-Namespace mit den Schlüsseltresorinformationen (Schlüssel/Wert)

Erstellen eines Event Hubs-Clusters und -Namespace mit verwalteter Dienstidentität

Dieser Abschnitt zeigt, wie man einen Azure Event Hubs-Namensraum mit verwalteter Service-Identität erstellt, indem man eine Azure Resource Manager-Vorlage und PowerShell verwendet.

  1. Erstellen Sie eine Azure Resource Manager Vorlage, um einen Event Hubs-Namespace mit einer verwalteten Dienstidentität zu erstellen. Nenne die Datei: 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. Erstellen Sie eine Vorlagenparameterdatei mit dem folgenden Namen: CreateEventHubClusterAndNamespaceParams.json.

    Hinweis

    Ersetzen Sie die folgenden Werte:

    • <EventHubsClusterName>: Der Name Ihres Event Hubs-Clusters.
    • <EventHubsNamespaceName>: Der Name Ihres Event Hubs-Namespace.
    • <Location>: Der Standort Ihres Event Hubs-Namespace.
    {
       "$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. Führen Sie den folgenden PowerShell-Befehl aus, um die Vorlage bereitzustellen und einen Event Hubs-Namespace zu erstellen. Rufen Sie dann die ID des Event Hubs-Namespace ab, um sie zur späteren Verwendung zu nutzen. Ersetzen Sie {MyRG} durch den Namen der Ressourcengruppe, bevor Sie den Befehl ausführen.

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

Gewähren von Zugriff auf den Schlüsseltresor für die Event Hubs-Namespaceidentität

Legen Sie die Zugriffsrichtlinie des Schlüsseltresors so fest, dass die verwaltete Identität des Event Hubs-Namensraums auf die Schlüssel im Schlüsseltresor zugreifen kann. Verwenden Sie die ID des Event Hubs-Namespace aus dem vorherigen Abschnitt.

Hinweis

Bei diesen Schritten wird davon ausgegangen, dass der Schlüsseltresor das Berechtigungsmodell mit Zugriffsrichtlinien verwendet. Wenn Ihr Key Vault das Azure Role-Based Access Control (RBAC)-Berechtigungsmodell verwendet, weisen Sie stattdessen der verwalteten Identität die Rolle Key Vault Crypto Service Encryption User zu. Weitere Informationen finden Sie unter Zugriff auf Key Vault-Schlüssel, -Zertifikate und -Geheimniswerte mit Azure RBAC gewähren.

$identity = (Get-AzResource -ResourceId $EventHubNamespaceId -ExpandProperties).Identity

Set-AzKeyVaultAccessPolicy -VaultName {keyVaultName} -ResourceGroupName {RGName} -ObjectId $identity.PrincipalId -PermissionsToKeys get,wrapKey,unwrapKey,list

Verschlüsseln von Daten im Event Hubs-Namespace mit vom Kunden verwaltetem Schlüssel aus key vault

Führen Sie die folgenden Schritte aus:

  1. Erstellen Sie einen Premium-Namespace mit einer verwalteten Identität.
  2. Erstelle einen Schlüsseltresor und gewähre der verwalteten Identität Zugriff auf den Schlüsseltresor.

In diesem Schritt aktualisieren Sie den Event Hubs-Namensraum mit den Informationen zum Key Vault.

  1. Erstellen Sie eine JSON-Datei mit dem Namen CreateEventHubClusterAndNamespace.json und folgendem Inhalt:

    {
       "$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. Erstellen Sie eine Vorlagenparameterdatei: UpdateEventHubClusterAndNamespaceParams.json.

    Hinweis

    Ersetzen Sie die folgenden Werte:

    • <EventHubsClusterName>: Der Name Ihres Event Hubs-Clusters.
    • <EventHubsNamespaceName>: Der Name Ihres Event Hubs-Namespace.
    • <Location>: Der Standort Ihres Event Hubs-Namespace.
    • <KeyVaultName>: Der Name Ihres Schlüsseltresors
    • <KeyName> - Name des Schlüssels im key vault
    {
       "$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. Führen Sie den folgenden PowerShell-Befehl aus, um die Resource Manager-Vorlage bereitzustellen. Ersetzen Sie {MyRG} durch den Namen Ihrer Ressourcengruppe, bevor Sie den Befehl ausführen.

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

Verschlüsseln mithilfe benutzerseitig zugewiesener Identitäten (Vorlage)

  1. Erstellen Sie eine benutzerseitig zugewiesene Identität.
  2. Erstellen Sie einen Schlüsseltresor und gewähren Sie über Zugriffsrichtlinien Zugriff auf die vom Benutzer zugewiesene Identität.
  3. Erstellen Sie einen Event Hubs-Namespace mit der verwalteten Benutzeridentität und den Key Vault-Informationen.

Erstellen einer benutzerseitig zugewiesenen Identität

Folgen Sie den Anweisungen in "Benutzer zugewiesene verwaltete Identitäten verwalten ", um eine benutzerdefinierte Identität zu erstellen. Sie können eine benutzerzugewiesene Identität erstellen, indem Sie das Azure-Portal, Azure CLI, Azure PowerShell, eine Azure Resource Manager-Vorlage oder REST verwenden.

Hinweis

Sie können einem Namespace bis zu vier Benutzeridentitäten zuweisen. Azure löscht diese Assoziationen, wenn du den Namensraum löschst oder das identity -> type in der Vorlage auf Nonesetzt.

Zugriff auf die vom Benutzer zugewiesene Identität gewähren

  1. Erhalten Sie die Service Principal ID für die Benutzeridentität, indem Sie den folgenden PowerShell-Befehl ausführen. Im Beispiel ist es die vom Benutzer zugewiesene Identität, ud1 die du für die Verschlüsselung verwendest.

    $servicePrincipal=Get-AzADServicePrincipal -SearchString "ud1"    
    
  2. Gewähren Sie der benutzerseitig zugewiesenen Identität Zugriff auf den Schlüsseltresor, indem Sie eine Zugriffsrichtlinie zuweisen.

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

    Hinweis

    Man kann bis zu 3 Schlüssel hinzufügen, aber die für die Verschlüsselung verwendete Benutzeridentität sollte für alle Schlüssel gleich sein. Derzeit wird nur eine einzige Verschlüsselungsidentität unterstützt.

Erstellen eines Event Hubs-Namespaces mit Benutzeridentität und Key Vault-Informationen

Dieser Abschnitt gibt Ihnen ein Beispiel, das zeigt, wie Sie die folgenden Aufgaben mit einer Azure Resource Manager-Vorlage ausführen können.

  1. Weisen Sie einem Event Hubs-Namespace eine benutzerseitig verwaltete Identität zu.

                "identity": {
                    "type": "UserAssigned",
                    "userAssignedIdentities": {
                        "[parameters('identity').userAssignedIdentity]": {}
                    }
                },
    
  2. Aktivieren Sie die Verschlüsselung für den Namespace, indem Sie einen Schlüssel aus Ihrem Schlüsseltresor und die benutzerverwaltete Identität angeben, um auf den Schlüssel zuzugreifen.

                    "encryption":{
                       "keySource":"Microsoft.KeyVault",
                       "keyVaultProperties":[
                            {
                                "keyName": "[parameters('keyName')]",
                                "keyVaultUri": "[parameters('keyVaultUri')]",
                                "identity": {
                                    "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                                }
                            }
                       ]
                    }
    
  3. Erstellen Sie eine JSON-Datei mit dem Namen CreateEventHubsNamespaceWithUserIdentityAndEncryption.json und folgendem Inhalt:

    {
       "$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]"
                            }
                        }
                   ]
                }
             }
          }
       ]
    }        
    
  4. Erstellen Sie eine Vorlagenparameterdatei: 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>"
          }
       }
       }
    }
    

    Ersetzen Sie in der Parameterdatei Platzhalter durch geeignete Werte.

    Platzhalter Wert
    <EventHubsNamespaceName> Der Name des Event Hubs-Namespace.
    <Location> Der Ort, an dem der Namespace erstellt werden soll.
    <KeyVaultName> Name des Schlüsseltresors
    <KeyName> Der Name des Schlüssels im Schlüsseltresor.
    <AZURE SUBSCRIPTION ID> Ihre Azure-Abonnement-ID.
    <RESOURCE GROUP NAME> Die Ressourcengruppe der benutzerseitig verwalteten Identität.
    <USER MANAGED IDENTITY NAME> Der Name der benutzerseitig verwalteten Identität.
  5. Führen Sie den folgenden PowerShell-Befehl aus, um die Resource Manager-Vorlage bereitzustellen. Ersetzen Sie {MyRG} durch den Namen Ihrer Ressourcengruppe, bevor Sie den Befehl ausführen.

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

Verwenden von benutzer- und systemseitig zugewiesenen Identitäten

Ein Namespace kann gleichzeitig sowohl über systemseitig als auch über benutzerseitig zugewiesene Identitäten verfügen. In diesem Fall würde die type-Eigenschaft SystemAssigned, UserAssigned lauten, wie im folgenden Beispiel gezeigt.

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

In diesem Szenario können Sie entweder die systemseitig oder die benutzerseitig zugewiesene Identität zum Verschlüsseln der ruhenden Daten auswählen.

Wenn Sie in der Ressourcen-Manager-Vorlage kein identity-Attribut angeben, wird die systemverwaltete Identität verwendet. Hier sehen Sie einen Beispielcodeausschnitt.

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

Im folgenden Beispiel wird die benutzerseitig verwaltete Identität für die Verschlüsselung verwendet. Beachten Sie, dass das identity-Attribut auf die benutzerseitig verwaltete Identität festgelegt ist.

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

Aktivieren der Infrastrukturverschlüsselung (bzw. Mehrfachverschlüsselung) von Daten

Wenn Sie Ihre Daten noch besser schützen möchten, können Sie die Verschlüsselung auf Infrastrukturebene (auch Mehrfachverschlüsselung genannt) aktivieren.

Bei aktivierter Infrastrukturverschlüsselung werden Daten im Event Hubs-Namespacekonto zweimal (einmal auf Dienstebene und einmal auf Infrastrukturebene) mit zwei unterschiedlichen Verschlüsselungsalgorithmen und zwei verschiedenen Schlüsseln verschlüsselt. Somit schützt die Infrastrukturverschlüsselung von Event Hubs-Daten vor Szenarien, in denen einer der Verschlüsselungsalgorithmen oder Schlüssel kompromittiert werden kann.

Sie können die Infrastrukturverschlüsselung aktivieren, indem Sie die Azure Resource Manager Vorlage mit requireInfrastructureEncryption der Eigenschaft im vorherigen CreateEventHubClusterAndNamespace.json aktualisieren, wie im folgenden Beispiel gezeigt.

"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')]"
         }
      ]
   }
}

Rotieren, Widerrufen und Zwischenspeichern von Verschlüsselungsschlüsseln

Rotieren der Verschlüsselungsschlüssel

Sie können Ihren Schlüssel im Schlüsseltresor mit dem Rotationsmechanismus von Azure Key Vault rotieren. Setze Aktivierungs- und Verfallsdaten, um die Schlüsselrotation zu automatisieren. Der Event Hubs-Dienst erkennt neue Schlüsselversionen und beginnt sie automatisch zu verwenden.

Zugriff auf Schlüssel widerrufen

Das Widerrufen des Zugriffs auf die Verschlüsselungsschlüssel löscht die Daten nicht aus den Event Hubs. Der Zugriff auf die Daten ist jedoch nicht über den Event Hubs-Namespace möglich. Du kannst den Verschlüsselungsschlüssel über eine Zugriffsrichtlinie oder durch Löschen des Schlüssels widerrufen. Um mehr über Zugangsrichtlinien und die Sicherung Ihres Schlüsseltresors zu erfahren, siehe Sicherer Zugriff auf einen Schlüsseltresor.

Nachdem der Verschlüsselungsschlüssel widerrufen wurde, funktioniert der Event Hubs-Dienst im verschlüsselten Namespace nicht mehr. Wenn der Zugriff für den Schlüssel aktiviert ist oder der Löschschlüssel wiederhergestellt wird, wählt der Event Hubs-Dienst den Schlüssel aus, sodass Sie auf die Daten im verschlüsselten Event Hubs-Namespace zugreifen können.

Zwischenspeichern von Schlüsseln

Die Event Hubs-Instanz (Event Hub) fragt alle fünf Minuten ihre angegebenen Verschlüsselungsschlüssel ab. Es speichert und verwendet sie bis zur nächsten Umfrage, die nach fünf Minuten stattfindet. Solange mindestens ein Schlüssel verfügbar ist, kann auf den Ereignishub zugegriffen werden. Wenn bei der Abfrage auf keinen der aufgelisteten Schlüssel zugegriffen werden kann, sind sämtliche Eventhubs nicht mehr verfügbar.

Es folgen weitere Informationen:

  • Alle fünf Minuten überprüft der Event Hubs-Dienst alle im Eintrag des Namespace aufgeführten vom Kunden verwalteten Schlüssel:
    • Wenn ein Schlüssel gedreht wird, aktualisiert sich der Datensatz mit dem neuen Schlüssel.
    • Wenn ein Schlüssel widerrufen wurde, wird er aus dem Datensatz entfernt.
    • Wenn alle Schlüssel widerrufen werden, wird der Verschlüsselungsstatus des Namensraums auf Widerrufen gesetzt. Die Daten können nicht aus dem Event Hubs-Namensraum abgerufen werden.

Überlegungen bei der Verwendung der geografischen Notfallwiederherstellung

Wichtig

Zum Aktivieren von Geo-DR in einem Namespace, der die BYOK-Verschlüsselung verwendet, muss der sekundäre Namespace für die Kopplung über eine aktivierte systemdefinierte oder benutzerdefinierte verwaltete Identität verfügen.

Wiederherstellung nach geografischen Katastrophen - Verschlüsselung mit vom System zugewiesenen Identitäten

Um die Verschlüsselung eines von Microsoft verwalteten Schlüssels mit einem kundenverwalteten Schlüssel zu ermöglichen, richten Sie eine Zugriffsrichtlinie für eine systemzugewiesene verwaltete Identität auf dem angegebenen Azure KeyVault ein. Diese Richtlinie gewährleistet kontrollierten Zugriff auf den Azure KeyVault vom Azure Event Hubs-Namensraum.

Aufgrund dieser Erkrankung:

  • Wenn Geo Disaster Recovery bereits für den Event Hubs-Namensraum aktiviert ist und Sie den Customer Managed Key aktivieren möchten, dann
    • Heben Sie die Kopplung auf.
    • Legen Sie die Zugriffsrichtlinien für die systemseitig zugewiesene verwaltete Identität sowohl für den primären als auch für den sekundären Namespace auf die Key Vault-Instanz fest.
    • Richten Sie die Verschlüsselung für den primären Namespace ein.
    • Stellen Sie die Kopplung des primären und des sekundären Namespace wieder her.
  • Wenn Sie Geo-DR auf einem Event Hubs-Namensraum aktivieren möchten, in dem bereits ein Kunden-verwalteter Schlüssel eingerichtet ist, folgen Sie diesen Schritten:
    • Richten Sie die Zugriffsrichtlinien für die verwaltete Identität für den sekundären Namespace auf den Schlüsseltresor ein.
    • Koppeln Sie den primären und den sekundären Namespace.

Geo-Katastrophenwiederherstellung - Verschlüsselung mit vom Benutzer zugewiesenen Identitäten

Hier sind einige Vorschläge:

  1. Erstellen Sie verwaltete Identität, und weisen Sie Ihrer verwalteten Identität Key Vault Berechtigungen zu.
  2. Fügen Sie die Identität als benutzerseitig zugewiesene Identität hinzu, und aktivieren Sie die Verschlüsselung mit der Identität für beide Namespaces.
  3. Koppeln Sie Namespaces.

Bedingungen für die Aktivierung von Geo-DR (georedundante Notfallwiederherstellung) und der Verschlüsselung mit benutzerdefinierten Identitäten:

  1. Für den sekundären Namespace muss die Verschlüsselung bereits mit einer benutzerseitig zugewiesenen Identität aktiviert sein, wenn er mit einem primären Namespace gekoppelt werden soll, für den die Verschlüsselung aktiviert ist.
  2. Es ist nicht möglich, die Verschlüsselung für einen bereits gekoppelten primären Namespace zu aktivieren, auch wenn dem sekundären Namespace eine benutzerseitig zugewiesene Identität zugeordnet ist.

Einrichten von Diagnoseprotokollen

Durch das Einrichten von Diagnoseprotokollen für durch BYOK aktivierte Namespaces erhalten Sie die erforderlichen Informationen zu den Vorgängen. Diese Protokolle können aktiviert und später in einen Event Hub gestreamt oder über Protokollanalysen analysiert oder an storage gestreamt werden, um benutzerdefinierte Analysen durchzuführen. Weitere Informationen zu Diagnoseprotokollen finden Sie unter Overview von Azure Diagnoseprotokollen. Informationen zum Schema finden Sie unter Überwachen von Datenverweisen.

Kunden-Lockbox für Microsoft Azure

Customer Lockbox für Microsoft Azure gilt nicht für Azure Event Hubs. Microsoft Mitarbeiter greifen während des Supportvorgangs nicht auf Kundenereignisdaten zu. Microsoft Mitarbeiter haben nur Zugriff auf die folgenden Metadaten:

  • Namen von Event Hubs-Entitäten (Event Hubs)
  • Konfigurationseinstellungen für den Namespace und seine Entitäten

Zugriff auf Ereignisdatenheader und Ereignisinhalte ist für Microsoft-Mitarbeiter nicht möglich. Darüber hinaus werden Ereignisdaten in binärformat auf der Clientseite serialisiert, bevor sie an den Event Hubs-Dienst gesendet werden, sodass sie nicht in einem lesbaren Formular auf dem Server gespeichert oder angezeigt werden kann. Daher ist die Kunden-Lockbox-Genehmigung für Azure Event Hubs Supportszenarien nicht erforderlich.