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

Hub eventi di Azure fornisce la crittografia dei dati inattivi con Crittografia del servizio di archiviazione di Azure (SSE). Il servizio Hub eventi utilizza Archiviazione di Azure per archiviare i dati. Tutti i dati archiviati con Archiviazione di Azure vengono crittografati usando chiavi gestite da Microsoft. Se si usa la propria chiave, nota anche come BYOK (Bring Your Own Key) o chiave gestita dal cliente, i dati vengono comunque crittografati usando la chiave gestita da Microsoft, ma in aggiunta la chiave gestita da Microsoft verrà crittografata usando la chiave gestita dal cliente. Tale funzionalità consente di creare, ruotare, disabilitare e revocare l'accesso alle chiavi gestite dal cliente che vengono usate per crittografare quelle gestite da Microsoft. L'abilitazione della funzionalità BYOK è un processo di configurazione che viene effettuato una sola volta nello spazio dei nomi.

Importante

  • La funzionalità BYOK è supportata da livelli premium e dedicati di Hub eventi.
  • La crittografia può essere abilitata solo per spazi dei nomi nuovi o vuoti. Se lo spazio dei nomi contiene hub eventi, l'operazione di crittografia avrà esito negativo.

È possibile usare Azure Key Vault per gestire le chiavi e controllarne l'utilizzo. È possibile creare chiavi personalizzate e archiviarle in un insieme di credenziali delle chiavi oppure usare le API Azure Key Vault per generare chiavi. Per altre informazioni su Azure Key Vault, vedere Informazioni su Azure Key Vault.

Questo articolo illustra come configurare un insieme di credenziali delle chiavi con chiavi gestite dal cliente usando il portale di Azure. Per informazioni su come creare un insieme di credenziali delle chiavi usando il portale di Azure, vedere Avvio rapido: creare un insieme di credenziali delle chiavi di Azure Key Vault usando il portale di Azure.

Abilitare chiavi gestite dal cliente (portale di Azure)

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

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

  2. Nella pagina Impostazioni dello spazio dei nomi di Hub eventi selezionare Crittografia.

  3. Selezionare la crittografia dei dati inattivi della chiave gestita dal cliente, come illustrato nell'immagine seguente.

    Enable customer managed key

Configurare un insieme di credenziali delle chiavi con chiavi

Dopo aver abilitato le chiavi gestite dal cliente, è necessario associare la chiave gestita dal cliente allo spazio dei nomi di Hub eventi di Azure. Hub eventi supporta solo Azure Key Vault. Se si abilita l'opzione Crittografia con chiave gestita dal cliente nella sezione precedente, è necessario importare la chiave in Azure Key Vault. Inoltre, le chiavi devono avere Eliminazione temporanea eProtezione dall'eliminazione configurate per la chiave. Queste impostazioni possono essere configurate tramite PowerShello l'interfaccia della riga di comando.

  1. Per creare un nuovo insieme di credenziali delle chiavi, seguire la Guida introduttiva di Azure Key Vault. Per altre informazioni sull'importazione delle chiavi esistenti, vedere Informazioni su chiavi, segreti e certificati.

    Importante

    L'uso di chiavi gestite dal cliente con Hub eventi di Azure richiede che l'insieme di credenziali delle chiavi abbia due proprietà obbligatorie configurate. Si tratta di: Eliminazione temporanea e Protezione dall'eliminazione. Tali proprietà sono abilitate per impostazione predefinita quando si crea un nuovo insieme di credenziali delle chiavi nel portale di Azure. Tuttavia, se è necessario abilitare queste proprietà in un insieme di credenziali delle chiavi esistente, è necessario usare PowerShell o l'interfaccia della riga di comando di Azure.

  2. Per attivare l'eliminazione temporanea e la protezione dall'eliminazione durante la creazione di un insieme di credenziali, usare il comando az keyvault create.

    az keyvault create --name ContosoVault --resource-group ContosoRG --location westus --enable-soft-delete true --enable-purge-protection true
    
  3. Per aggiungere la protezione dall'eliminazione a un insieme di credenziali esistente (per cui è già abilitata l'eliminazione temporanea), usare il comando az keyvault update.

    az keyvault update --name ContosoVault --resource-group ContosoRG --enable-purge-protection true
    
  4. Creare chiavi seguendo questa procedura:

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

      Select Generate/Import button

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

      Create a key

    3. È ora possibile selezionare questa chiave da associare allo spazio dei nomi di Hub eventi per la crittografia dall'elenco a discesa.

      Select key from key vault

      Nota

      Per ridondanza, è possibile aggiungere fino a 3 chiavi. Nel caso in cui una delle chiavi sia scaduta o non sia accessibile, per la crittografia verranno usate le altre chiavi.

    4. Compilare i dettagli per la chiave e fare clic su Seleziona. In questo modo verrà abilitata la crittografia della chiave gestita da Microsoft con la propria chiave (chiave gestita dal cliente).

Identità gestite

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

  • Assegnata dal sistema: è possibile abilitare un'identità gestita direttamente in uno spazio dei nomi di Hub eventi. 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 Hub eventi. Quindi quando lo spazio dei nomi viene eliminato, Azure elimina automaticamente anche l'identità. Per impostazione predefinita, solo questa risorsa di Azure (spazio dei nomi) può utilizzare questa identità per richiedere token da Microsoft Entra ID.

  • Assegnata dall'utente: è anche possibile creare un'identità gestita come risorsa autonoma di Azure, denominata identità assegnata dall'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 è legata 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 Cosa sono le identità gestite per le risorse di Azure.

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

Questa sezione illustra come eseguire le attività seguenti usando i modelli di Azure Resource Manager.

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

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

Questa sezione illustra come creare uno spazio dei nomi di Hub eventi di Azure con identità del servizio gestito usando un modello di Azure Resource Manager e PowerShell.

  1. Creare un modello di Azure Resource Manager per creare uno spazio dei nomi di Hub eventi con un'identità del servizio gestita. Denominare 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 Hub eventi
    • <EventHubsNamespaceName> - Nome dello spazio dei nomi di Hub eventi
    • <Location> - Posizione dello spazio dei nomi di Hub eventi
    {
       "$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 di PowerShell seguente per distribuire il modello al fine di creare uno spazio dei nomi di Hub eventi. Recuperare quindi l'ID dello spazio dei nomi di Hub eventi 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 all'identità dello spazio dei nomi di Hub eventi l'accesso all'insieme di credenziali delle chiavi

  1. Eseguire il comando seguente per creare un insieme di credenziali delle chiavi con Protezione dall'eliminazione e Eliminazione temporanea abilitate.

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

    OPPURE

    Eseguire il comando seguente per aggiornare un insieme di credenziali delle chiavi esistente. Specificare i valori per i nomi del gruppo di risorse e dell'insieme di credenziali delle chiavi prima di eseguire il comando.

    ($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. Impostare i criteri di accesso dell'insieme di credenziali delle chiavi in modo che l'identità gestita dello spazio dei nomi di Hub eventi possa accedere al valore della chiave nell'insieme di credenziali delle chiavi. Usare l'ID dello spazio dei nomi di Hub eventi della sezione precedente.

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

Crittografare i dati nello spazio dei nomi di Hub eventi con la chiave gestita dal cliente dall'insieme di credenziali delle chiavi

Finora sono stati eseguiti i passaggi seguenti:

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

In questo passaggio si aggiornerà lo spazio dei nomi di Hub eventi con informazioni sull'insieme di credenziali delle chiavi.

  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 Hub eventi.
    • <EventHubsNamespaceName> - Nome dello spazio dei nomi di Hub eventi
    • <Location> - Posizione dello spazio dei nomi di Hub eventi
    • <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. Creare un insieme di credenziali delle chiavi e concedere l'accesso all'identità assegnata dall'utente tramite i criteri di accesso.
  3. Creare uno spazio dei nomi di Hub eventi con l'identità utente gestita e le informazioni sull'insieme di credenziali delle chiavi.

Creare un'identità assegnata dall'utente

Seguire le istruzioni dell'articolo Creare un'identità gestita assegnata dall'utente per creare un'identità assegnata dall'utente. È anche possibile creare un'identità assegnata dall'utente usando l'interfaccia della riga di comando, PowerShell, il modello di Azure Resource Manager e REST.

Nota

È possibile assegnare fino a 4 identità utente a uno spazio dei nomi. Queste associazioni vengono eliminate quando lo spazio dei nomi viene eliminato o quando si passa il identity -> type nel modello a None.

Creare un insieme di credenziali delle chiavi e concedere l'accesso all'identità assegnata dall'utente

  1. Eseguire il comando seguente per creare un insieme di credenziali delle chiavi con la protezione dall'eliminazione e l’eliminazione temporanea abilitate.

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

    OPPURE

    Eseguire il comando seguente per aggiornare un insieme di credenziali delle chiavi esistente. Specificare i valori per i nomi del gruppo di risorse e dell'insieme di credenziali delle chiavi prima di eseguire il comando.

    ($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. Ottenere l'ID entità servizio per l'identità utente usando il comando PowerShell seguente. Nell'esempio, ud1 è l'identità assegnata dall'utente da usare per la crittografia.

    $servicePrincipal=Get-AzADServicePrincipal -SearchString "ud1"    
    
  3. Concedere all'identità assegnata dall'utente l'accesso all'insieme di credenziali delle chiavi attraverso l’assegnazione di un criterio di accesso.

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

    Nota

    È possibile aggiungere fino a 3 chiavi, ma l'identità utente usata per la crittografia deve 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 sull'insieme di credenziali delle chiavi

Questa sezione offre un esempio che illustra come eseguire le attività seguenti usando un modello di Azure Resource Manager.

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

                "identity": {
                    "type": "UserAssigned",
                    "userAssignedIdentities": {
                        "[parameters('identity').userAssignedIdentity]": {}
                    }
                },
    
  • Abilitare la crittografia nello spazio dei nomi specificando una chiave dall'insieme di credenziali delle chiavi e 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]"
                                }
                            }
                       ]
                    }
    
  1. 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]"
                            }
                        }
                   ]
                }
             }
          }
       ]
    }        
    
  2. 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 value
    <EventHubsNamespaceName> Nome dello spazio dei nomi di Hub eventi.
    <Location> Percorso dove si vuole creare lo spazio dei nomi.
    <KeyVaultName> Nome dell'insieme di credenziali delle chiavi.
    <KeyName> Nome della chiave nell'insieme di credenziali delle chiavi.
    <AZURE SUBSCRIPTION ID> L'ID sottoscrizione di Azure.
    <RESOURCE GROUP NAME> Gruppo di risorse dell'identità gestita dall'utente.
    <USER MANAGED IDENTITY NAME> Nome dell'identità gestita dall'utente.
  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 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.

È possibile abilitare la crittografia dell'infrastruttura aggiornando il modello di Azure Resource Manager con la proprietà requireInfrastructureEncryption nel precedente CreateEventHubClusterAndNamespace.json, come illustrato di seguito.

"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 nell'insieme di credenziali delle chiavi usando il meccanismo di rotazione di Azure Key Vaults. Le date di attivazione e scadenza possono essere impostate anche per automatizzare la rotazione delle chiavi. Il servizio Hub eventi rileverà le nuove versioni chiave e inizierà a usarle in modo automatico.

Revocare l'accesso alle chiavi

La revoca dell'accesso alle chiavi di crittografia non elimina i dati da Hub eventi. Tuttavia, non è possibile accedere ai dati dallo spazio dei nomi di Hub eventi. È possibile revocare la chiave di crittografia tramite i criteri di accesso o eliminando la chiave. Per altre informazioni sui criteri di accesso e sulla protezione dell'insieme di credenziali delle chiavi in Accesso sicuro a un insieme di credenziali delle chiavi.

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

Memorizzazione nella cache delle chiavi

L'istanza di Hub eventi (hub eventi) esegue il polling delle chiavi di crittografia elencate ogni 5 minuti. Memorizza nella cache e li usa fino al polling successivo, ovvero dopo 5 minuti. Finché almeno una chiave è disponibile, l'hub eventi è accessibile. Se tutte le chiavi elencate non sono accessibili quando esegue il polling, tutti gli hub eventi non saranno più disponibili.

Di seguito sono riportate informazioni dettagliate:

  • Ogni 5 minuti, il servizio Hub eventi esegue il polling di tutte le chiavi gestite dal cliente elencate nel record dello spazio dei nomi:
    • Se una chiave è stata ruotata, il record viene aggiornato con la nuova chiave.
    • Se una chiave è stata revocata, la chiave viene rimossa dal record.
    • Se tutte le chiavi sono state revocate, lo stato di crittografia dello spazio dei nomi è impostato su Revocato. Non è possibile accedere ai dati dallo spazio dei nomi di Hub eventi.

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, viene configurato un criterio di accesso per un'identità gestita assegnata dal sistema nell'insieme di credenziali delle chiavi di Azure specificato. In questo modo si garantisce l'accesso controllato all'insieme di credenziali delle chiavi di Azure dallo spazio dei nomi di Hub eventi di Azure.

A causa di questo:

  • Se il ripristino di emergenza geografico è già abilitato per lo spazio dei nomi di Hub eventi e si sta cercando di abilitare la chiave gestita dal cliente,
    • interrompere l'associazione.
    • Configurare i criteri di accesso per l'identità gestita assegnata dal sistema per gli spazi dei nomi primario e secondario nell'insieme di credenziali delle chiavi.
    • Configurare la crittografia nello spazio dei nomi primario.
    • Riabilitare gli spazi dei nomi primario e secondario.
  • Se si vuole abilitare il ripristino di emergenza geografico in uno spazio dei nomi di Hub eventi in cui è già configurata la chiave gestita dal cliente, seguire questa procedura:
    • Configurare i criteri di accesso per l'identità gestita per lo spazio dei nomi secondario nell'insieme di credenziali delle chiavi.
    • Associare gli spazi dei nomi primari e secondari.

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 in un database primario già associato, anche se l'identità secondaria 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 oppure trasmessi all'archiviazione per eseguire analisi personalizzate. Per altre informazioni sui log di diagnostica, vedere Panoramica dei log di diagnostica di Azure. Per lo schema, vedere Informazioni di riferimento sui dati di monitoraggio.

Passaggi successivi

Fai riferimento ai seguenti articoli: