Konfigurera kundhanterade nycklar för kryptering av Azure Event Hubs-data i vila

Azure Event Hubs tillhandahåller kryptering av vilande data med Azure Storage Service Encryption (Azure SSE). Event Hubs-tjänsten använder Azure Storage för att lagra data. Alla data som lagras med Azure Storage krypteras med hjälp av Microsoft-hanterade nycklar. Om du använder din egen nyckel (kallas även BYOK (Bring Your Own Key) eller kundhanterad nyckel krypteras data fortfarande med hjälp av den Microsoft-hanterade nyckeln, men dessutom krypteras den Microsoft-hanterade nyckeln med hjälp av den kundhanterade nyckeln. Med den här funktionen kan du skapa, rotera, inaktivera och återkalla åtkomst till kundhanterade nycklar som används för kryptering av Microsoft-hanterade nycklar. Att aktivera BYOK-funktionen är en engångskonfigurationsprocess i ditt namnområde.

Viktigt!

  • FUNKTIONEN BYOK stöds av premium- och dedikerade nivåer i Event Hubs.
  • Krypteringen kan endast aktiveras för nya eller tomma namnområden. Om namnområdet innehåller händelsehubbar misslyckas krypteringsåtgärden.

Du kan använda Azure Key Vault för att hantera dina nycklar och granska din nyckelanvändning. Du kan antingen skapa egna nycklar och lagra dem i ett nyckelvalv, eller så kan du använda Azure Key Vault-API:erna för att generera nycklar. Mer information om Azure Key Vault finns i Vad är Azure Key Vault?

Den här artikeln visar hur du konfigurerar ett nyckelvalv med kundhanterade nycklar med hjälp av Azure-portalen. Information om hur du skapar ett nyckelvalv med hjälp av Azure-portalen finns i Snabbstart: Skapa ett Azure Key Vault med azure-portalen.

Aktivera kundhanterade nycklar (Azure-portalen)

Följ dessa steg för att aktivera kundhanterade nycklar i Azure-portalen. Om du använder den dedikerade nivån går du först till ditt Event Hubs Dedicated-kluster.

  1. Välj det namnområde där du vill aktivera BYOK.

  2. På sidan Inställningar i Event Hubs-namnområdet väljer du Kryptering.

  3. Välj den kundhanterade nyckelkryptering i vila som visas i följande bild.

    Enable customer managed key

Konfigurera ett nyckelvalv med nycklar

När du har aktiverat kundhanterade nycklar måste du associera den kundhanterade nyckeln med ditt Azure Event Hubs-namnområde. Event Hubs stöder endast Azure Key Vault. Om du aktiverar alternativet Kryptering med kundhanterad nyckel i föregående avsnitt måste nyckeln importeras till Azure Key Vault. Dessutom måste nycklarna ha Mjuk borttagning och Rensa inte konfigurerat för nyckeln. De här inställningarna kan konfigureras med PowerShell eller CLI.

  1. Om du vill skapa ett nytt nyckelvalv följer du snabbstarten för Azure Key Vault. Mer information om hur du importerar befintliga nycklar finns i Om nycklar, hemligheter och certifikat.

    Viktigt!

    Användning av kundhanterade nycklar med Azure Event Hubs kräver att nyckelvalvet har två nödvändiga egenskaper konfigurerade. De är: Mjuk borttagning och Rensa inte. De här egenskaperna aktiveras som standard när du skapar ett nytt nyckelvalv i Azure-portalen. Men om du behöver aktivera dessa egenskaper i ett befintligt nyckelvalv måste du använda antingen PowerShell eller Azure CLI.

  2. Om du vill aktivera både mjukt borttagnings- och rensningsskydd när du skapar ett valv använder du kommandot az keyvault create .

    az keyvault create --name ContosoVault --resource-group ContosoRG --location westus --enable-soft-delete true --enable-purge-protection true
    
  3. Om du vill lägga till rensningsskydd i ett befintligt valv (som redan har mjuk borttagning aktiverat) använder du kommandot az keyvault update .

    az keyvault update --name ContosoVault --resource-group ContosoRG --enable-purge-protection true
    
  4. Skapa nycklar genom att följa dessa steg:

    1. Om du vill skapa en ny nyckel väljer du Generera/importeramenyn Nycklar under Inställningar.

      Select Generate/Import button

    2. Ange Alternativ till Generera och ge nyckeln ett namn.

      Create a key

    3. Du kan nu välja den här nyckeln som ska associeras med Event Hubs-namnområdet för kryptering från listrutan.

      Select key from key vault

      Kommentar

      För redundans kan du lägga till upp till 3 nycklar. Om en av nycklarna har upphört att gälla eller inte är tillgänglig används de andra nycklarna för kryptering.

    4. Fyll i informationen för nyckeln och klicka på Välj. Detta aktiverar kryptering av den Microsoft-hanterade nyckeln med din nyckel (kundhanterad nyckel).

Hanterade identiteter

Det finns två typer av hanterade identiteter som du kan tilldela till ett Event Hubs-namnområde.

  • Systemtilldelad: Du kan aktivera en hanterad identitet direkt på ett Event Hubs-namnområde. När du aktiverar en systemtilldelad hanterad identitet skapas en identitet i Microsoft Entra som är kopplad till livscykeln för event hubs-namnområdet. Så när namnområdet tas bort tar Azure automatiskt bort identiteten åt dig. Avsiktligt kan endast den Azure-resursen (namnområdet) använda den här identiteten för att begära token från Microsoft Entra-ID.

  • Användartilldelad: Du kan också skapa en hanterad identitet som en fristående Azure-resurs, som kallas användartilldelad identitet. Du kan skapa en användartilldelad hanterad identitet och tilldela den till en eller flera Event Hubs-namnområden. När det gäller användartilldelade hanterade identiteter hanteras identiteten separat från de resurser som använder den. De är inte knutna till namnområdets livscykel. Du kan uttryckligen ta bort en användartilldelad identitet när du inte längre behöver den.

    Mer information finns i Vad är hanterade identiteter för Azure-resurser?

Kryptera med systemtilldelade identiteter (mall)

Det här avsnittet visar hur du utför följande uppgifter med hjälp av Azure Resource Manager-mallar.

  1. Skapa ett Event Hubs-namnområde med en hanterad tjänstidentitet.
  2. Skapa ett nyckelvalv och ge tjänstidentiteten åtkomst till nyckelvalvet.
  3. Uppdatera Event Hubs-namnområdet med information om nyckelvalvet (nyckel/värde).

Skapa ett Event Hubs-kluster och ett namnområde med hanterad tjänstidentitet

Det här avsnittet visar hur du skapar ett Azure Event Hubs-namnområde med hanterad tjänstidentitet med hjälp av en Azure Resource Manager-mall och PowerShell.

  1. Skapa en Azure Resource Manager-mall för att skapa ett Event Hubs-namnområde med en hanterad tjänstidentitet. Namnge filen: 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. Skapa en mallparameterfil med namnet: CreateEventHubClusterAndNamespaceParams.json.

    Kommentar

    Ersätt följande värden:

    • <EventHubsClusterName> – Namnet på ditt Event Hubs-kluster
    • <EventHubsNamespaceName> – Namnet på eventhubs-namnområdet
    • <Location> – Plats för event hubs-namnområdet
    {
       "$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. Kör följande PowerShell-kommando för att distribuera mallen för att skapa ett Event Hubs-namnområde. Hämta sedan ID:t för Event Hubs-namnområdet för att använda det senare. Ersätt {MyRG} med namnet på resursgruppen innan du kör kommandot.

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

Bevilja Event Hubs-namnområdesidentitet åtkomst till nyckelvalvet

  1. Kör följande kommando för att skapa ett nyckelvalv med rensningsskydd och mjuk borttagning aktiverat.

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

    (ELLER)

    Kör följande kommando för att uppdatera ett befintligt nyckelvalv. Ange värden för resursgrupps- och nyckelvalvsnamn innan du kör kommandot.

    ($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. Ange åtkomstprincipen för nyckelvalvet så att den hanterade identiteten för Event Hubs-namnområdet kan komma åt nyckelvärdet i nyckelvalvet. Använd ID:t för Event Hubs-namnområdet från föregående avsnitt.

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

Kryptera data i Event Hubs-namnrymden med kundhanterad nyckel från nyckelvalvet

Du har gjort följande hittills:

  1. Skapade ett premiumnamnområde med en hanterad identitet.
  2. Skapa ett nyckelvalv och bevilja den hanterade identiteten åtkomst till nyckelvalvet.

I det här steget uppdaterar du Event Hubs-namnområdet med information om nyckelvalvet.

  1. Skapa en JSON-fil med namnet CreateEventHubClusterAndNamespace.json med följande innehåll:

    {
       "$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. Skapa en mallparameterfil: UpdateEventHubClusterAndNamespaceParams.json.

    Kommentar

    Ersätt följande värden:

    • <EventHubsClusterName> – Namnet på ditt Event Hubs-kluster.
    • <EventHubsNamespaceName> – Namnet på eventhubs-namnområdet
    • <Location> – Plats för event hubs-namnområdet
    • <KeyVaultName> – Namnet på ditt nyckelvalv
    • <KeyName> – Namnet på nyckeln i nyckelvalvet
    {
       "$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. Kör följande PowerShell-kommando för att distribuera Resource Manager-mallen. Ersätt {MyRG} med namnet på resursgruppen innan du kör kommandot.

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

Kryptera med användartilldelade identiteter (mall)

  1. Skapa en användartilldelad identitet.
  2. Skapa ett nyckelvalv och bevilja åtkomst till den användartilldelade identiteten via åtkomstprinciper.
  3. Skapa ett Event Hubs-namnområde med den hanterade användaridentiteten och nyckelvalvsinformationen.

Skapa en användartilldelad identitet

Följ anvisningarna i artikeln Skapa en användartilldelad hanterad identitet för att skapa en användartilldelad identitet. Du kan också skapa en användartilldelad identitet med hjälp av CLI, PowerShell, Azure Resource Manager-mall och REST.

Kommentar

Du kan tilldela upp till 4 användaridentiteter till ett namnområde. Dessa associationer tas bort när namnområdet tas bort eller när du skickar identity -> type i mallen till None.

Skapa ett nyckelvalv och bevilja åtkomst till användartilldelad identitet

  1. Kör följande kommando för att skapa ett nyckelvalv med rensningsskydd och mjuk borttagning aktiverat.

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

    (ELLER)

    Kör följande kommando för att uppdatera ett befintligt nyckelvalv. Ange värden för resursgrupps- och nyckelvalvsnamn innan du kör kommandot.

    ($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. Hämta tjänstens huvudnamns-ID för användaridentiteten med hjälp av följande PowerShell-kommando. I exemplet ud1 är den användartilldelade identiteten som ska användas för kryptering.

    $servicePrincipal=Get-AzADServicePrincipal -SearchString "ud1"    
    
  3. Ge den användartilldelade identiteten åtkomst till nyckelvalvet genom att tilldela en åtkomstprincip.

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

    Kommentar

    Du kan lägga till upp till tre nycklar, men användaridentiteten som används för kryptering bör vara densamma för alla nycklar. För närvarande stöds endast en enda krypteringsidentitet.

Skapa ett Event Hubs-namnområde med information om användaridentitet och nyckelvalv

Det här avsnittet innehåller ett exempel som visar hur du utför följande uppgifter med hjälp av en Azure Resource Manager-mall.

  • Tilldela en användarhanterad identitet till ett Event Hubs-namnområde.

                "identity": {
                    "type": "UserAssigned",
                    "userAssignedIdentities": {
                        "[parameters('identity').userAssignedIdentity]": {}
                    }
                },
    
  • Aktivera kryptering på namnområdet genom att ange en nyckel från nyckelvalvet och den användarhanterade identiteten för att få åtkomst till nyckeln.

                    "encryption":{
                       "keySource":"Microsoft.KeyVault",
                       "keyVaultProperties":[
                            {
                                "keyName": "[parameters('keyName')]",
                                "keyVaultUri": "[parameters('keyVaultUri')]",
                                "identity": {
                                    "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                                }
                            }
                       ]
                    }
    
  1. Skapa en JSON-fil med namnet CreateEventHubsNamespaceWithUserIdentityAndEncryption.json med följande innehåll:

    {
       "$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. Skapa en mallparameterfil: 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>"
            }
         }
       }
    }
    

    Ersätt platshållarna med lämpliga värden i parameterfilen.

    Platshållare värde
    <EventHubsNamespaceName> Namn på Event Hubs-namnområdet.
    <Location> Plats där du vill att namnområdet ska skapas.
    <KeyVaultName> Namnet på nyckelvalvet.
    <KeyName> Namnet på nyckeln i nyckelvalvet.
    <AZURE SUBSCRIPTION ID> ditt prenumerations-ID för Azure
    <RESOURCE GROUP NAME> Resursgrupp för den användarhanterade identiteten.
    <USER MANAGED IDENTITY NAME> Namnet på den användarhanterade identiteten.
  3. Kör följande PowerShell-kommando för att distribuera Resource Manager-mallen. Ersätt {MyRG} med namnet på resursgruppen innan du kör kommandot.

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

Använda både användartilldelade och systemtilldelade identiteter

Ett namnområde kan ha både systemtilldelade och användartilldelade identiteter samtidigt. I det här fallet skulle egenskapen type vara SystemAssigned, UserAssigned som du ser i följande exempel.

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

I det här scenariot kan du välja antingen den systemtilldelade identiteten eller den användartilldelade identiteten för kryptering av vilande data.

Om du inte anger något identity attribut i Resource Manager-mallen används den systemhanterade identiteten. Här är ett exempelfragment.

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

Se följande exempel för att använda den användarhanterade identiteten för krypteringen. identity Observera att attributet är inställt på den användarhanterade identiteten.

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

Aktivera infrastrukturkryptering (eller dubbel) kryptering av data

Om du behöver en högre säkerhetsnivå för att dina data är säkra kan du aktivera kryptering på infrastrukturnivå som även kallas dubbelkryptering.

När infrastrukturkryptering är aktiverat krypteras data i Event Hubs-namnområdeskontot två gånger, en gång på tjänstnivå och en gång på infrastrukturnivå, med hjälp av två olika krypteringsalgoritmer och två olika nycklar. Därför skyddar infrastrukturkryptering av Event Hubs-data mot ett scenario där en av krypteringsalgoritmerna eller nycklarna kan komprometteras.

Du kan aktivera infrastrukturkryptering genom att uppdatera Azure Resource Manager-mallen med requireInfrastructureEncryption egenskapen i ovanstående CreateEventHubClusterAndNamespace.json enligt nedan.

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

Rotera, återkalla och cachelagrat krypteringsnycklar

Rotera krypteringsnycklarna

Du kan rotera nyckeln i nyckelvalvet med hjälp av rotationsmekanismen för Azure Key Vaults. Aktiverings- och förfallodatum kan också anges för att automatisera nyckelrotation. Event Hubs-tjänsten identifierar nya nyckelversioner och börjar använda dem automatiskt.

Återkalla åtkomst till nycklar

Om du återkallar åtkomsten till krypteringsnycklarna rensas inte data från Event Hubs. Data kan dock inte nås från Event Hubs-namnområdet. Du kan återkalla krypteringsnyckeln via åtkomstprincipen eller genom att ta bort nyckeln. Läs mer om åtkomstprinciper och hur du skyddar ditt nyckelvalv från Säker åtkomst till ett nyckelvalv.

När krypteringsnyckeln har återkallats blir Event Hubs-tjänsten i det krypterade namnområdet obrukbar. Om åtkomsten till nyckeln är aktiverad eller om borttagningsnyckeln återställs väljer Event Hubs-tjänsten nyckeln så att du kan komma åt data från det krypterade Event Hubs-namnområdet.

Cachelagring nycklar

Event Hubs-instansen (händelsehubben) avsöker sina listade krypteringsnycklar var femte minut. Den cachelagrar och använder dem till nästa omröstning, vilket är efter 5 minuter. Så länge minst en nyckel är tillgänglig är händelsehubben tillgänglig. Om alla listade nycklar är otillgängliga när de avsöker blir alla händelsehubbar otillgängliga.

Här är mer information:

  • Var 5:e minut avsöker Event Hubs-tjänsten alla kundhanterade nycklar som anges i namnområdets post:
    • Om en nyckel har roterats uppdateras posten med den nya nyckeln.
    • Om en nyckel har återkallats tas nyckeln bort från posten.
    • Om alla nycklar har återkallats är namnområdets krypteringsstatus inställd på Återkallad. Det går inte att komma åt data från Event Hubs-namnområdet."

Överväganden vid användning av geo-haveriberedskap

Viktigt!

Om du vill aktivera Geo-DR på ett namnområde som använder BYOK-kryptering måste det sekundära namnområdet för parkoppling ha en systemtilldelad eller användartilldelad hanterad identitet aktiverad på den.

Geo-haveriberedskap – kryptering med systemtilldelade identiteter

För att aktivera kryptering av Microsoft-hanterad nyckel med en kundhanterad nyckel konfigureras en åtkomstprincip för en systemtilldelad hanterad identitet på den angivna Azure KeyVault. Detta säkerställer kontrollerad åtkomst till Azure KeyVault från Azure Event Hubs-namnområdet.

På grund av detta:

  • Om geo-haveriberedskap redan är aktiverat för Event Hubs-namnområdet och du vill aktivera kundhanterad nyckel, så
    • Bryt parkopplingen.
    • Konfigurera åtkomstprincipen för den systemtilldelade hanterade identiteten för både de primära och sekundära namnrymderna till nyckelvalvet.
    • Konfigurera kryptering på det primära namnområdet.
    • Koppla om de primära och sekundära namnrymderna.
  • Om du vill aktivera Geo-DR på ett Event Hubs-namnområde där kundhanterad nyckel redan har konfigurerats följer du dessa steg:
    • Konfigurera åtkomstprincipen för den hanterade identiteten för det sekundära namnområdet till nyckelvalvet.
    • Koppla ihop de primära och sekundära namnrymderna.

Geo-haveriberedskap – kryptering med användartilldelade identiteter

Här är några rekommendationer:

  1. Skapa en hanterad identitet och tilldela Key Vault-behörigheter till din hanterade identitet.
  2. Lägg till identiteten som en användartilldelad identitet och aktivera kryptering med identiteten på båda namnrymderna.
  3. Koppla ihop namnområden

Villkor för att aktivera Geo-DR och kryptering med användartilldelade identiteter:

  1. Det sekundära namnområdet måste redan ha Kryptering aktiverat med en användartilldelad identitet om den ska paras ihop med ett primärt namnområde som har kryptering aktiverat.
  2. Det går inte att aktivera Kryptering på en redan parad primär, även om den sekundära har en användartilldelad identitet som är associerad med namnområdet.

Konfigurera diagnostikloggar

Om du anger diagnostikloggar för BYOK-aktiverade namnområden får du nödvändig information om åtgärderna. Dessa loggar kan aktiveras och senare strömmas till en händelsehubb eller analyseras via log analytics eller strömmas till lagring för att utföra anpassade analyser. Mer information om diagnostikloggar finns i Översikt över Azure Diagnostic-loggar. För schemat, se Övervaka datareferens.

Nästa steg

Mer information finns i följande artiklar: