Configurare le chiavi gestite dal cliente per crittografare i dati bus di servizio di Azure inattivi

bus di servizio di Azure Premium fornisce la crittografia dei dati inattivi con crittografia del servizio Archiviazione di Azure (Azure S edizione Standard). bus di servizio Premium usa 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 viene crittografata usando la chiave gestita dal cliente. Questa funzionalità consente di creare, ruotare, disabilitare e revocare l'accesso alle chiavi gestite dal cliente usate per crittografare le chiavi gestite da Microsoft. L'abilitazione della funzionalità BYOK è un processo di configurazione una sola volta nello spazio dei nomi.

Esistono alcune avvertenze per la chiave gestita dal cliente per la crittografia lato servizio.

  • Questa funzionalità è supportata da bus di servizio di Azure livello Premium. Non può essere abilitata per gli spazi dei nomi di bus di servizio di livello standard.
  • La crittografia può essere abilitata solo per spazi dei nomi nuovi o vuoti. Se lo spazio dei nomi contiene code o argomenti, l'operazione di crittografia non riesce.

È possibile usare Azure Key Vault per gestire le chiavi e controllare l'utilizzo delle chiavi. È 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.

Abilitare le chiavi gestite dal cliente (portale di Azure)

Per abilitare le chiavi gestite dal cliente nella portale di Azure, seguire questa procedura:

  1. Passare allo spazio dei nomi bus di servizio Premium.

  2. Nella pagina Impostazioni dello spazio dei nomi bus di servizio 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 bus di servizio di Azure. bus di servizio 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 l'eliminazione temporanea e l'eliminazione non è configurata per la chiave. Queste impostazioni possono essere configurate tramite PowerShell o 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 di chiavi esistenti, vedere Informazioni su chiavi, segreti e certificati.

    Importante

    L'uso di chiavi gestite dal cliente con bus di servizio di Azure richiede che l'insieme di credenziali delle chiavi disponga di due proprietà necessarie configurate. Sono: eliminazione temporanea e non ripulitura. La proprietà Eliminazione temporanea è abilitata per impostazione predefinita quando si crea un nuovo insieme di credenziali delle chiavi nella portale di Azure mentre la protezione eliminazione è facoltativa, quindi assicurarsi di selezionarla durante la creazione dell'insieme di credenziali delle chiavi. Inoltre, 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 sia l'eliminazione temporanea che la protezione dall'eliminazione durante la creazione di un insieme di credenziali, usare il comando az keyvault create .

    az keyvault create --name contoso-SB-BYOK-keyvault --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 (che ha già abilitato l'eliminazione temporanea), usare il comando az keyvault update .

    az keyvault update --name contoso-SB-BYOK-keyvault --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 bus di servizio per la crittografia dall'elenco a discesa.

      Select key from key vault

      Nota

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

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

    Importante

    Per usare la chiave gestita dal cliente insieme al ripristino di emergenza geografico, vedere questa sezione.

    Per abilitare la crittografia della chiave gestita da Microsoft con una chiave gestita dal cliente, viene configurato un criterio di accesso per l'identità gestita del bus di servizio 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 bus di servizio di Azure.

    A causa di questo:

    • Se il ripristino di emergenza geografico è già abilitato per lo spazio dei nomi bus di servizio e si sta cercando di abilitare la chiave gestita dal cliente,

      • Interrompere l'associazione
      • Configurare i criteri di accesso per l'identità gestita 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 sta cercando di abilitare il ripristino di emergenza geografico in uno spazio dei nomi bus di servizio in cui la chiave gestita dal cliente è già configurata, -

      • 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.
    • Dopo l'associazione, lo spazio dei nomi secondario userà l'insieme di credenziali delle chiavi configurato per lo spazio dei nomi primario. Se l'insieme di credenziali delle chiavi per entrambi gli spazi dei nomi è diverso prima dell'associazione di ripristino di emergenza geografico, l'utente deve delegare un criterio di accesso o un ruolo controllo degli accessi in base al ruolo per l'identità gestita dello spazio dei nomi secondario nell'insieme di credenziali delle chiavi associato allo spazio dei nomi primario.

Identità gestite

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

  • Assegnata dal sistema: è possibile abilitare un'identità gestita direttamente in uno spazio dei nomi bus di servizio. Quando si abilita un'identità gestita assegnata dal sistema, viene creata un'identità in Microsoft Entra associata al ciclo di vita di tale spazio dei nomi bus di servizio. Quindi, quando lo spazio dei nomi viene eliminato, Azure elimina automaticamente l'identità. Per impostazione predefinita, solo la risorsa di Azure (spazio dei nomi) può usare questa identità per richiedere token dall'ID Microsoft Entra.

  • Assegnata dall'utente: è anche possibile creare un'identità gestita come risorsa di Azure autonoma, denominata identità assegnata dall'utente. È possibile creare un'identità gestita assegnata dall'utente e assegnarla a uno o più spazi dei nomi bus di servizio. Quando si usano identità gestite assegnate dall'utente, l'identità viene gestita separatamente dalle risorse che lo usano. Non sono legati 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.

Crittografare usando identità assegnate dal sistema (modello)

Questa sezione illustra come eseguire le attività seguenti:

  1. Creare uno spazio dei nomi bus di servizio Premium 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 bus di servizio con le informazioni dell'insieme di credenziali delle chiavi (chiave/valore).

Creare uno spazio dei nomi bus di servizio Premium con identità del servizio gestito

Questa sezione illustra come creare uno spazio dei nomi bus di servizio di Azure con l'identità del servizio gestita usando un modello di Azure Resource Manager e PowerShell.

  1. Creare un modello di Azure Resource Manager per creare uno spazio dei nomi del livello Premium bus di servizio con un'identità del servizio gestita. Assegnare al file il nome CreateServiceBusPremiumNamespace.json:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Namespace."
             }
          },
          "location":{
             "type":"string",
             "defaultValue":"[resourceGroup().location]",
             "metadata":{
                "description":"Specifies the Azure location for all resources."
             }
          }
       },
       "resources":[
          {
             "type":"Microsoft.ServiceBus/namespaces",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "identity":{
                "type":"SystemAssigned"
             },
             "sku":{
                "name":"Premium",
                "tier":"Premium",
                "capacity":1
             },
             "properties":{
    
             }
          }
       ],
       "outputs":{
          "ServiceBusNamespaceId":{
             "type":"string",
             "value":"[resourceId('Microsoft.ServiceBus/namespaces',parameters('namespaceName'))]"
          }
       }
    }
    
  2. Creare un file di parametri modello denominato: CreateServiceBusPremiumNamespaceParams.json.

    Nota

    Sostituire i valori seguenti:

    • <ServiceBusNamespaceName>- Nome dello spazio dei nomi bus di servizio
    • <Location>- Posizione dello spazio dei nomi bus di servizio
    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "value":"<ServiceBusNamespaceName>"
          },
          "location":{
             "value":"<Location>"
          }
       }
    }
    
  3. Eseguire il comando di PowerShell seguente per distribuire il modello per creare uno spazio dei nomi bus di servizio Premium. Recuperare quindi l'ID dello spazio dei nomi bus di servizio per usarlo in un secondo momento. Sostituire {MyRG} con il nome del gruppo di risorse prima di eseguire il comando .

    $outputs = New-AzResourceGroupDeployment -Name CreateServiceBusPremiumNamespace -ResourceGroupName {MyRG} -TemplateFile ./CreateServiceBusPremiumNamespace.json -TemplateParameterFile ./CreateServiceBusPremiumNamespaceParams.json
    
    $ServiceBusNamespaceId = $outputs.Outputs["serviceBusNamespaceId"].value
    

Concedere l'accesso all'identità dello spazio dei nomi bus di servizio all'insieme di credenziali delle chiavi

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

    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 bus di servizio possa accedere al valore della chiave nell'insieme di credenziali delle chiavi. Usare l'ID dello spazio dei nomi bus di servizio della sezione precedente.

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

Crittografare i dati nello spazio dei nomi bus di servizio con 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 aggiorna lo spazio dei nomi bus di servizio con informazioni sull'insieme di credenziali delle chiavi.

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

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "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.ServiceBus/namespaces",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "identity":{
                "type":"SystemAssigned"
             },
             "sku":{
                "name":"Premium",
                "tier":"Premium",
                "capacity":1
             },
             "properties":{
                "encryption":{
                   "keySource":"Microsoft.KeyVault",
                   "keyVaultProperties":[
                      {
                         "keyName":"[parameters('keyName')]",
                         "keyVaultUri":"[parameters('keyVaultUri')]"
                      }
                   ]
                }
             }
          }
       ]
    }
    
  2. Creare un file di parametri modello: UpdateServiceBusNamespaceWithEncryptionParams.json.

    Nota

    Sostituire i valori seguenti:

    • <ServiceBusNamespaceName>- Nome dello spazio dei nomi bus di servizio
    • <Location>- Posizione dello spazio dei nomi bus di servizio
    • <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":{
          "namespaceName":{
             "value":"<ServiceBusNamespaceName>"
          },
          "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 gruppo di risorse prima di eseguire il comando .

    New-AzResourceGroupDeployment -Name UpdateServiceBusNamespaceWithEncryption -ResourceGroupName {MyRG} -TemplateFile ./UpdateServiceBusNamespaceWithEncryption.json -TemplateParameterFile ./UpdateServiceBusNamespaceWithEncryptionParams.json
    

Crittografare 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 premium bus di servizio 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 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 ripulitura e l'eliminazione temporanea abilitata.

    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 assegnando 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 bus di servizio Premium 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 bus di servizio.

                "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 CreateServiceBusNamespaceWithUserIdentityAndEncryption.json con il contenuto seguente:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "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.ServiceBus/namespaces",
             "apiVersion":"2021-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "sku":{
                "name":"Premium",
                "tier":"Premium",
                "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 di modello: CreateServiceBusNamespaceWithUserIdentityAndEncryptionParams.json.

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "value":"<ServiceBusNamespaceName>"
          },
          "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
    <ServiceBusNamespaceName> Nome dello spazio dei nomi bus di servizio.
    <Location> Percorso in cui 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 gruppo di risorse prima di eseguire il comando .

    New-AzResourceGroupDeployment -Name CreateServiceBusNamespaceWithEncryption -ResourceGroupName {MyRG} -TemplateFile ./ CreateServiceBusNamespaceWithUserIdentityAndEncryption.json -TemplateParameterFile ./ CreateServiceBusNamespaceWithUserIdentityAndEncryptionParams.json        
    

Usare identità assegnate dall'utente e assegnate dal sistema

Uno spazio dei nomi può avere identità assegnate dal sistema e assegnate dall'utente contemporaneamente. In questo caso, la type proprietà 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 identity attributo, 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 sull'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 (double) dei dati

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

Quando la crittografia dell'infrastruttura è abilitata, i dati nella bus di servizio di Azure vengono crittografati due volte, una volta a livello di servizio e una volta a livello di infrastruttura, usando due algoritmi di crittografia diversi e due chiavi diverse. Di conseguenza, la crittografia dell'infrastruttura dei dati bus di servizio di Azure 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 requireInfrastructureEncryption la proprietà nell'oggetto UpdateServiceBusNamespaceWithEncryption.json , come illustrato di seguito.

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

Ruotare, revocare e memorizzare nella cache le chiavi

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 anche essere impostate per automatizzare la rotazione delle chiavi. Il servizio bus di servizio rileva nuove versioni chiave e inizia a usarle automaticamente.

Revocare l'accesso alle chiavi

La revoca dell'accesso alle chiavi di crittografia non elimina i dati da bus di servizio. Non è tuttavia possibile accedere ai dati dallo spazio dei nomi bus di servizio. È possibile revocare la chiave di crittografia tramite i criteri di accesso o eliminando la chiave. Altre informazioni sui criteri di accesso e sulla protezione dell'insieme di credenziali delle chiavi dall'accesso sicuro a un insieme di credenziali delle chiavi.

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

Memorizzazione nella cache delle chiavi

L'istanza di bus di servizio 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, le code e gli argomenti sono accessibili. Se tutte le chiavi elencate non sono accessibili quando esegue il polling, tutte le code e gli argomenti diventano non disponibili.

Di seguito sono riportate informazioni dettagliate:

  • Ogni 5 minuti, il servizio bus di servizio 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 Revoked. Non è possibile accedere ai dati dallo spazio dei nomi bus di servizio.

Considerazioni sull'uso del ripristino di emergenza geografico

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. Questo passaggio garantisce l'accesso controllato all'insieme di credenziali delle chiavi di Azure dallo spazio dei nomi bus di servizio di Azure. Di conseguenza, è necessario seguire questa procedura:

  • Se il ripristino di emergenza geografico è già abilitato per lo spazio dei nomi bus di servizio 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 bus di servizio 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

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 associata a uno spazio dei nomi primario con crittografia abilitata.
  2. Non è possibile abilitare Crittografia in un database primario già associato, anche se l'identità secondaria è associata allo spazio dei nomi assegnata dall'utente.

Risoluzione dei problemi

Sintomo

Viene visualizzato un errore che indica che lo spazio dei nomi bus di servizio è disabilitato perché la chiave di crittografia non è più valida.

Causa

È possibile usare o resource_idversion, che collega a una versione specifica della chiave, che potrebbe essere scaduta. Se viene specificata una versione specifica, bus di servizio usa tale versione della chiave, anche se la chiave viene ruotata.

Risoluzione

Usare o resource__versionless_idversionless_idinvece di usare resource_id o .version

Passaggi successivi

Fai riferimento ai seguenti articoli: