Configurare le chiavi gestite dal cliente per crittografare i dati di Hub eventi di Azure a riposo

Hub eventi di Azure fornisce la crittografia dei dati inattivi con crittografia del servizio Archiviazione di Azure (Azure SSE). Il servizio Hub eventi usa Archiviazione di Azure per archiviare i dati. Tutti i dati memorizzati in Archiviazione di Azure sono criptati utilizzando chiavi gestite da Microsoft. Se usi la tua chiave (nota anche come Bring Your Own Key (BYOK) o chiave gestita dal cliente), i dati sono comunque criptati utilizzando la chiave gestita da Microsoft, ma la chiave gestita da Microsoft viene anch'essa criptata utilizzando la chiave gestita dal cliente. Questa funzionalità consente di creare, ruotare, disabilitare e revocare access alle chiavi gestite dal cliente usate per crittografare le chiavi gestite da Microsoft. L'abilitazione della funzionalità BYOK è un processo di configurazione monouso nello spazio dei nomi.

Importante

  • La funzionalità BYOK è supportata da livelli premium e dedicati di Hub eventi.
  • Puoi abilitare la crittografia solo per namespace nuovi o vuoti. Se lo spazio dei nomi contiene Event Hub, l'operazione di crittografia fallisce.

È possibile usare Azure Key Vault (incluso Azure Key Vault modulo di sicurezza hardware gestito) per gestire le chiavi e controllare l'utilizzo delle chiavi. È possibile creare chiavi personalizzate e archiviarle in un key vault oppure usare le API Azure Key Vault per generare chiavi. Per altre informazioni sui Azure Key Vault, vedere Seche è Azure Key Vault?

Questo articolo illustra come configurare un key vault con chiavi gestite dal cliente usando il Azure portal. Per imparare a creare un caveau chiave utilizzando il portale Azure, consulta Quickstart: Create an Azure Key Vault using the Azure portal.

Prerequisiti

  • Una sottoscrizione di Azure. Se non se ne ha una, creare un account gratuito prima di iniziare.
  • Uno spazio dei nomi degli Hub eventi premium o dedicato nuovo o vuoto. È possibile abilitare la crittografia solo per spazi dei nomi nuovi o vuoti. Per il livello dedicato, un cluster dedicato di Event Hubs.
  • Un insieme di credenziali delle chiavi (o HSM gestito di Azure Key Vault) con eliminazione temporanea e protezione dell'eliminazione definitiva abilitati. L'eliminazione temporanea è abilitata per impostazione predefinita in tutti gli insiemi di credenziali delle chiavi; è necessario abilitare la protezione contro l'eliminazione definitiva.

Abilitare le chiavi gestite dal cliente (Azure portal)

Per abilitare le chiavi gestite dal cliente nella Azure portal, seguire questa procedura. Se si usa il livello dedicato, passare prima al cluster dedicato di Hub eventi.

  1. Selezionare lo spazio dei nomi in cui si vuole abilitare il BYOK.

  2. Nella pagina Impostazioni dello spazio dei nomi di Event Hubs selezionare Crittografia.

  3. Selezionare la crittografia a riposo della chiave gestita dal cliente, come mostrato nell'immagine seguente.

    Abilitare la chiave gestita dal cliente

Nota

Attualmente non è possibile configurare Azure Key Vault modulo di protezione hardware gestito tramite il portale.

Configurare un insieme di credenziali delle chiavi con chiavi

Dopo aver abilitato le chiavi gestite dal cliente, devi associare la chiave gestita dal cliente al tuo namespace Hub eventi di Azure. Hub eventi supporta solo Azure Key Vault. Se abiliti l'opzione Crittografia con chiave gestita dal cliente nella sezione precedente, devi importare la chiave in Azure Key Vault. Inoltre, l'insieme di credenziali delle chiavi deve avere l'eliminazione temporanea e la protezione dall'eliminazione definitiva abilitate. Puoi configurare queste impostazioni usando PowerShell o interfaccia della riga di comando di Azure.

Creare un key vault o un HSM gestito dal key vault

Importante

L'utilizzo delle chiavi gestite dal cliente con Hub eventi di Azure richiede che il vault delle chiavi abbia abilitata sia la protezione contro la cancellazione soft che contro la purga. L'eliminazione temporanea è abilitata per impostazione predefinita in tutti gli insiemi di credenziali delle chiavi e non può essere disabilitata. La protezione dalla rimozione definitiva non è abilitata per impostazione predefinita. Quando crei un nuovo Key Vault nel portale di Azure, puoi abilitare la protezione dall'eliminazione definitiva al momento della creazione. Se devi abilitare la protezione contro le purge su un vault di chiavi esistente, usa PowerShell o interfaccia della riga di comando di Azure.

  1. Per creare una nuova key vault, seguire il Azure Key Vault Quickstart. Per altre informazioni sull'importazione di chiavi esistenti, vedere Informazioni su chiavi, segreti e certificati.

  2. L'eliminazione temporanea è abilitata per impostazione predefinita. Per attivare la protezione contro l'eliminazione definitiva si crea un insieme di credenziali, usare il comando crea insieme di credenziali delle chiavi az.

    az keyvault create --name ContosoVault --resource-group ContosoRG --location westus --enable-purge-protection true
    
  3. Per aggiungere la protezione dall'eliminazione definitiva a un vault esistente, utilizzare il comando az keyvault update.

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

Creare chiavi

Creare chiavi seguendo questa procedura:

  1. Per creare una nuova chiave, selezionare Genera/Importa nel menu Chiavi in Impostazioni.

    Screenshot della pagina Key Vault con il pulsante Genera o Importa selezionato.

  2. Impostare Opzioni su Genera e assegnare un nome alla chiave.

    Screenshot della pagina Crea una chiave con la chiave specificata.

  3. Seleziona questa chiave per associarla allo spazio di nomi degli Event Hub per la crittografia dalla lista a tendina.

    Schermata della pagina Azure Key Vault con il tasto

    Nota

    Per la ridondanza, è possibile aggiungere fino a tre chiavi. Se una delle chiavi scade o non è accessibile, le altre chiavi vengono usate per la crittografia.

  4. Compila i dettagli del tasto e seleziona Seleziona. Questo passaggio consente la crittografia della chiave gestita da Microsoft con la tua chiave (chiave gestita dal cliente).

Identità gestite

Esistono due tipi di identità gestite che è possibile assegnare a uno spazio dei nomi di Event Hubs.

  • Assegnato dal sistema: È possibile abilitare un'identità gestita direttamente su un namespace di Event Hubs. Quando si abilita un'identità gestita assegnata dal sistema, viene creata un'identità in Microsoft Entra associata al ciclo di vita dello spazio dei nomi di Event Hubs. Quindi quando lo spazio dei nomi viene eliminato, Azure elimina automaticamente anche l'identità. Per impostazione predefinita, solo questa specifica risorsa (spazio dei nomi) di Azure può usare questa identità per richiedere token a Microsoft Entra ID.

  • Assegnata all'utente: è anche possibile creare un'identità gestita come risorsa autonoma di Azure, chiamata identità assegnata all'utente. È possibile creare un'identità gestita assegnata dall'utente e assegnarla a uno o più spazi dei nomi di Hub eventi. Le identità gestite assegnate dall'utente vengono gestite separatamente rispetto alle risorse che le usano. Non sono legate al ciclo di vita dello spazio dei nomi. È possibile eliminare in modo esplicito un'identità assegnata dall'utente quando non è più necessaria.

    Per altre informazioni, vedere Che cosa sono le identità gestite per le risorse di Azure?.

Effettuare la crittografia usando identità assegnate dal sistema (modello)

Questa sezione mostra come completare i seguenti compiti utilizzando i template di Azure Resource Manager:

  1. Creare uno namespace di Event Hubs con un'identità del servizio gestita.
  2. Creare un insieme di credenziali delle chiavi e concedere all'identità del servizio l'accesso a tale insieme di credenziali.
  3. Aggiornare lo spazio dei nomi di Hub eventi con le informazioni del Key Vault (chiave/valore).

Creare un cluster e uno spazio dei nomi di Hub eventi con l’identità del servizio gestito

Questa sezione mostra come creare uno spazio di nomi Hub eventi di Azure con identità di servizio gestito utilizzando un template Azure Resource Manager e PowerShell.

  1. Creare un modello di Azure Resource Manager per creare un namespace di Event Hubs con un'identità del servizio gestita. Nomina il file: 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. Creare un file di parametri modello denominato: CreateEventHubClusterAndNamespaceParams.json.

    Nota

    Sostituire i valori seguenti:

    • <EventHubsClusterName> - Nome del cluster di Event Hubs
    • <EventHubsNamespaceName> - Nome del namespace di Event Hub
    • <Location> - Posizione del namespace di 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. Eseguire il comando PowerShell seguente per distribuire il modello per creare uno spazio dei nomi di Hub eventi. Quindi, recuperare l'ID dello spazio dei nomi di Event Hubs per utilizzarlo in un secondo momento. Sostituire {MyRG} con il nome del gruppo di risorse prima di eseguire il comando .

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

Concedere l'accesso al Key Vault all'identità dello spazio dei nomi di Hub eventi

Imposta i criteri di accesso del key vault affinché l'identità gestita dello spazio dei nomi di Event Hubs possa accedere alle chiavi nel key vault. Usare l'ID dello spazio dei nomi di Hub eventi dalla sezione precedente.

Nota

Questi passaggi presuppongono che l'insieme di credenziali delle chiavi utilizzi il modello di autorizzazione dei criteri di accesso. Se il key vault usa il modello di autorizzazioni del controllo degli accessi in base al ruolo di Azure (RBAC), assegna invece all'identità gestita il ruolo Key Vault Crypto Service Encryption User. Per maggiori informazioni, consulta Fornire accesso alle chiavi, certificati e segreti di Key Vault con Azure RBAC.

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

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

Crittografare i dati nello spazio dei nomi di Event Hubs con la chiave gestita dal cliente dal key vault

Completare i passaggi seguenti:

  1. Crea uno spazio di nomi premium con un'identità gestita.
  2. Creare un insieme di credenziali delle chiavi e concedere all'identità del servizio l'accesso a tale insieme di credenziali.

In questo passaggio, aggiorni il namespace di Event Hubs con le informazioni di Key Vault.

  1. Creare un file JSON denominato CreateEventHubClusterAndNamespace.json con il contenuto seguente:

    {
       "$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. Creare un file di parametri modello: UpdateEventHubClusterAndNamespaceParams.json.

    Nota

    Sostituire i valori seguenti:

    • <EventHubsClusterName> - Nome del cluster di Event Hubs.
    • <EventHubsNamespaceName> - Nome del namespace di Event Hub
    • <Location> - Posizione del namespace di Event Hubs
    • <KeyVaultName>: nome dell'insieme di credenziali delle chiavi
    • <KeyName>: nome della chiave nell'insieme di credenziali delle chiavi
    {
       "$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. Eseguire il comando di PowerShell seguente per distribuire il modello di Resource Manager. Sostituire {MyRG} con il nome del proprio gruppo di risorse prima di eseguire il comando.

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

Effettuare la crittografia usando identità assegnate dall'utente (modello)

  1. Creare un'identità assegnata dall'utente.
  2. Crea un caveau delle chiavi e concedi l'accesso all'identità assegnata dall'utente tramite le policy di accesso.
  3. Creare uno spazio dei nomi di Hub eventi con informazioni sull'identità utente e il key vault.

Creare un'identità assegnata dall'utente

Segui le istruzioni in Gestisci le identità gestite assegnate dall'utente per creare un'identità assegnata dall'utente. Puoi creare un'identità assegnata dall'utente utilizzando il portale Azure, interfaccia della riga di comando di Azure, Azure PowerShell, un template Azure Resource Manager o REST.

Nota

È possibile assegnare fino a 4 identità utente a uno spazio dei nomi. Azure elimina queste associazioni quando elimini il namespace o imposti il identity -> type nel template su None.

Concedere l'accesso all’identità assegnata dall’utente

  1. Ottieni l'ID principale del servizio per l'identità utente eseguendo il seguente comando PowerShell. Nell'esempio, ud1 è l'identità assegnata dall'utente che usi per la crittografia.

    $servicePrincipal=Get-AzADServicePrincipal -SearchString "ud1"    
    
  2. Consentire l'accesso all'identità assegnata dall'utente al Key Vault assegnando un criterio di accesso.

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

    Nota

    Puoi aggiungere fino a 3 chiavi, ma l'identità utente usata per la crittografia dovrebbe essere la stessa per tutte le chiavi. Attualmente è supportata solo una singola identità di crittografia.

Creare uno spazio dei nomi di Hub eventi con informazioni sull'identità utente e l'insieme di credenziali delle chiavi

Questa sezione ti mostra un esempio che mostra come eseguire i seguenti compiti utilizzando un template di Azure Resource Manager.

  1. Assegna un'identità gestita dall'utente a uno spazio dei nomi di Hub eventi.

                "identity": {
                    "type": "UserAssigned",
                    "userAssignedIdentities": {
                        "[parameters('identity').userAssignedIdentity]": {}
                    }
                },
    
  2. Abilitare la crittografia nello spazio dei nomi specificando una chiave dall'archivio chiavi e utilizzando l'identità gestita dall'utente per accedere alla chiave.

                    "encryption":{
                       "keySource":"Microsoft.KeyVault",
                       "keyVaultProperties":[
                            {
                                "keyName": "[parameters('keyName')]",
                                "keyVaultUri": "[parameters('keyVaultUri')]",
                                "identity": {
                                    "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                                }
                            }
                       ]
                    }
    
  3. Creare un file JSON denominato CreateEventHubsNamespaceWithUserIdentityAndEncryption.json con il contenuto seguente:

    {
       "$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. Creare un file di parametri modello: 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>"
          }
       }
       }
    }
    

    Nel file dei parametri sostituire i segnaposto con i valori appropriati.

    Segnaposto valore
    <EventHubsNamespaceName> Nome dello spazio dei nomi di Hub eventi.
    <Location> Posizione in cui si desidera creare lo spazio dei nomi.
    <KeyVaultName> Nome del Key Vault.
    <KeyName> Nome della chiave nell'insieme di credenziali delle chiavi.
    <AZURE SUBSCRIPTION ID> ID sottoscrizione Azure.
    <RESOURCE GROUP NAME> Gruppo di risorse dell'identità gestita dall'utente.
    <USER MANAGED IDENTITY NAME> Nome dell'identità gestita dall'utente.
  5. Eseguire il comando di PowerShell seguente per distribuire il modello di Resource Manager. Sostituire {MyRG} con il nome del proprio gruppo di risorse prima di eseguire il comando.

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

Usare identità assegnate dall'utente e assegnate dal sistema

Uno spazio dei nomi può avere contemporaneamente sia identità assegnate dal sistema che assegnate dall'utente. In questo caso, la proprietà type sarà SystemAssigned, UserAssigned come illustrato nell'esempio seguente.

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

In questo scenario è possibile scegliere l'identità assegnata dal sistema o l'identità assegnata dall'utente per crittografare i dati inattivi.

Nel modello di Resource Manager, se non si specifica un attributo identity, viene usata l'identità gestita dal sistema. Ecco un frammento di codice di esempio.

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

Vedere l'esempio seguente per l'uso dell'identità gestita dall'utente per la crittografia. Si noti che l'attributo identity è impostato su identità gestita dall'utente.

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

Abilitare la crittografia dell'infrastruttura (o doppia) dei dati

Se è necessario un livello superiore di garanzia che i dati siano sicuri, è possibile abilitare la crittografia a livello di infrastruttura, procedura nota anche come “crittografia doppia”.

Quando viene abilitata la crittografia dell’infrastruttura, i dati nello spazio dei nomi di Hub eventi vengono crittografati due volte, una volta a livello del servizio e una volta a livello dell'infrastruttura, usando due algoritmi di crittografia diversi e due chiavi diverse. Di conseguenza, la crittografia dell'infrastruttura dei dati di Hub eventi protegge da uno scenario in cui uno degli algoritmi o delle chiavi di crittografia può essere compromesso.

Puoi abilitare la crittografia dell'infrastruttura aggiornando il template di Azure Resource Manager con requireInfrastructureEncryption la proprietà nel CreateEventHubClusterAndNamespace.json precedente, come mostrato nell'esempio seguente.

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

Ruotare, revocare e memorizzare nella cache le chiavi di crittografia

Ruotare le chiavi di crittografia

È possibile ruotare la chiave nel Key Vault usando il meccanismo di rotazione di Azure Key Vault. Imposta date di attivazione e scadenza per automatizzare la rotazione delle chiavi. Il servizio Event Hubs rileva nuove versioni di chiave e inizia a usarle automaticamente.

Revocare l'accesso alle chiavi

Revocare l'accesso alle chiavi di crittografia non elimina i dati dagli Event Hub. Tuttavia, non è possibile accedere ai dati dallo spazio dei nomi di Event Hubs. Puoi revocare la chiave di crittografia tramite una policy di accesso o eliminando la chiave. Per saperne di più sulle politiche di accesso e sulla sicurezza del tuo caveau delle chiavi, consulta Accesso sicuro a un caveau delle chiavi.

Una volta revocata la chiave di crittografia, il servizio Hub eventi nello spazio dei nomi crittografato diventa inutilizzabile. Se l'accesso alla chiave è abilitato o la chiave di cancellazione viene ripristinata, il servizio Hub Eventi seleziona la chiave in modo da poter accedere ai dati dallo spazio dei nomi crittografato di Hub Eventi.

Memorizzazione nella cache delle chiavi

L'istanza Event Hubs (event hub) interroga le chiavi di crittografia elencate ogni cinque minuti. Li memorizza e li usa fino al prossimo sondaggio, che avviene dopo cinque minuti. Finché almeno una chiave è disponibile, l'hub eventi è accessibile. Se tutte le chiavi elencate non sono accessibili nel momento in cui si esegue il polling, tutti gli event hub diventano indisponibili.

Di seguito sono riportate informazioni dettagliate:

  • Ogni cinque minuti, il servizio Event Hubs interroga tutte le chiavi gestite dal cliente elencate nel record del namespace:
    • Se una chiave viene ruotata, il record si aggiorna con la nuova chiave.
    • Se una chiave viene revocata, la chiave viene rimossa dal registro.
    • Se tutte le chiavi vengono revocate, lo stato di crittografia dello spazio di nomi viene impostato su Revocato. I dati non possono essere accessibili dal namespace degli Event Hubs.

Considerazioni sull'uso del ripristino di emergenza geografico

Importante

Per abilitare il ripristino di emergenza geografico in uno spazio dei nomi che usa la crittografia BYOK, per l’associazione è necessario abilitare un'identità gestita assegnata dal sistema o assegnata dall'utente nello spazio dei nomi secondario.

Ripristino di emergenza geografico: crittografia con identità assegnate dal sistema

Per abilitare la crittografia della chiave gestita da Microsoft con una chiave gestita dal cliente, imposta una policy di accesso per un'identità gestita assegnata dal sistema sull'Azure KeyVault specificato. Questa politica garantisce un accesso controllato a Azure KeyVault dal namespace Hub eventi di Azure.

A causa di questa condizione:

  • Se Geo disaster recovery è già abilitato per il namespace Event Hubs e vuoi abilitare la chiave gestita dal cliente, allora
    • interrompere l'associazione.
    • Imposta la politica di accesso per l'identità gestita assegnata dal sistema per entrambi i namespace primario e secondario al key vault.
    • Configurare la crittografia nello spazio dei nomi primario.
    • Riabbinare gli spazi dei nomi primario e secondario.
  • Se vuoi abilitare Geo-DR su uno spazio di nomi di un Event Hub dove la chiave gestita dal cliente è già impostata, segui questi passaggi:

Ripristino di emergenza geografico: crittografia con identità assegnate dall'utente

Di seguito sono elencati alcuni suggerimenti:

  1. Creare un'identità gestita e assegnare le autorizzazioni di Key Vault all'identità gestita.
  2. Aggiungere l'identità come identità assegnata dall'utente e abilitare la crittografia con l'identità in entrambi gli spazi dei nomi.
  3. Associare gli spazi dei nomi tra loro.

Condizioni per abilitare il ripristino di emergenza geografico e la crittografia con identità assegnate dall'utente:

  1. Lo spazio dei nomi secondario deve avere già abilitato la crittografia con un'identità assegnata dall'utente se deve essere associato a uno spazio dei nomi primario con crittografia abilitata.
  2. Non è possibile abilitare la crittografia su un primario già associato, anche se il secondario ha un'identità assegnata dall'utente associata allo spazio dei nomi.

Configurare i log di diagnostica

L'impostazione dei log di diagnostica per gli spazi dei nomi abilitati per BYOK fornisce le informazioni necessarie sulle operazioni. Questi log possono essere abilitati e trasmessi in un secondo momento a un hub eventi o analizzati tramite Log Analytics o trasmessi a storage per eseguire analisi personalizzate. Per altre informazioni sui log di diagnostica, vedere Panoramica dei log di diagnostica Azure. Per lo schema, vedere Informazioni di riferimento sui dati di monitoraggio.

Customer Lockbox per Microsoft Azure

Customer Lockbox per Microsoft Azure non si applica a Hub eventi di Azure. Il personale di Microsoft non accede ai dati degli eventi dei clienti durante le operazioni di supporto. Microsoft personale ha accesso solo ai metadati seguenti:

  • Nomi delle entità di Hub eventi (hub eventi)
  • Impostazioni di configurazione per lo spazio dei nomi e le relative entità

Le intestazioni dei dati dell'evento e il contenuto del corpo dell'evento non sono accessibili al personale Microsoft. Inoltre, i dati dell'evento vengono serializzati in formato binario sul lato client prima di essere inviati al servizio Hub eventi, in modo che non siano archiviati o visualizzabili in un modulo leggibile sul server. Di conseguenza, l'approvazione di Customer Lockbox non è necessaria per gli scenari di supporto Hub eventi di Azure.