Abilitare chiavi gestite dal cliente per servizi gestiti.

Nota

Questa funzionalità richiede il Piano Premium.

Per un controllo aggiuntivo dei dati, è possibile aggiungere la propria chiave per proteggere e controllare l'accesso ad alcuni tipi di dati. Funzionalità chiave gestite dal cliente per Azure Databricks. Per confrontare le funzionalità correlate, vedere Chiavi gestite dal cliente per la crittografia.

Suggerimento

Questo articolo descrive come configurare la propria chiave dagli insiemi di credenziali di Azure Key Vault per i servizi gestiti. Per istruzioni sull'uso di una chiave del modulo di protezione hardware gestito di Azure Key Vault, vedere Abilitare le chiavi gestite dal cliente del modulo di protezione hardware per i servizi gestiti.

I dati dei servizi gestiti nel piano di controllo di Azure Databricks vengono crittografati inattivi. È possibile aggiungere una chiave gestita dal cliente per i servizi gestiti per proteggere e controllare l'accesso ai tipi di dati crittografati seguenti: file di origine notebook archiviati nel piano di controllo.

Dopo aver aggiunto una crittografia della chiave gestita dal cliente per un'area di lavoro, Azure Databricks usa la chiave per controllare l'accesso alla chiave che crittografa le operazioni di scrittura future nei dati dei servizi gestiti dell'area di lavoro. Tuttavia, i dati esistenti non vengono crittografati. La chiave di crittografia dei dati viene memorizzata nella cache in memoria per diverse operazioni di lettura e scrittura e rimossa dalla memoria a intervalli regolari. Le nuove richieste per tali dati richiedono un'altra richiesta al sistema di gestione delle chiavi del servizio cloud. Se si elimina o revoca la chiave, la lettura o la scrittura nei dati protetti non riesce alla fine dell'intervallo di tempo della cache.

È possibile ruotare (aggiornare) la chiave gestita dal cliente in un secondo momento. Vedere Ruotare la chiave in un secondo momento.

Questa funzionalità non crittografa i dati archiviati all'esterno del piano di controllo. Per altre funzionalità della chiave gestita dal cliente, vedere Chiavi gestite dal cliente per la crittografia

Requisiti

Passaggio 1: Impostare un insieme di chiavi.

È necessario creare un'istanza di Azure Key Vault e impostarne le autorizzazioni. È possibile correggere questo problema tramite il portale di Azure o l'interfaccia della riga di comando.

Importante

L'area di lavoro di Azure Databricks e Azure Key Vault devono trovarsi nella stessa area e nello stesso tenant di Microsoft Entra.

Queste istruzioni offrono informazioni dettagliate su più opzioni di implementazione:

Usare il portale di Azure

  1. Creare un segreto nell'insieme di credenziali delle chiavi:
    • Per creare un insieme di credenziali delle chiavi, passare alla pagina portale di Azure per la creazione di un insieme di credenziali delle chiavi. Fare clic su + Crea. Immettere il nome del gruppo di risorse, il nome dell'insieme di credenziali delle chiavi, l'area e il piano tariffario. Fare clic su Rivedi e crea e quindi su Crea.
    • Per usare un insieme di credenziali delle chiavi esistente, copiare il nome dell'insieme di credenziali delle chiavi per il passaggio successivo.
  2. Recuperare l'ID oggetto dell'applicazione Azure Databricks:
    1. Nel portale Azure, andare a Microsoft Entra ID.
    2. Selezionare Applicazioni aziendali nel menu della barra laterale.
    3. Cercare AzureDatabricks e cliccare su l'applicazione aziendale nei risultati.
    4. In Proprietà copiare l'ID oggetto.
  3. Aggiungere un criterio di accesso a Key Vault usando il portale di Azure:
    1. Passare ad Azure Key Vault che verrà usato per configurare le chiavi gestite dal cliente per i servizi gestiti dell'area di lavoro.

    2. Aprire la scheda Criteri di accesso dal pannello a sinistra.

    3. Selezionare il pulsante Crea nella parte superiore della pagina.

    4. Nella scheda Autorizzazioni della sezione Autorizzazioni chiave abilitare Recupera, Annulla il wrapping della chiave ed Esegui il wrapping della chiave.

    5. Fare clic su Avanti.

    6. Nella scheda Entità digitare AzureDatabricks e scorrere fino al primo risultato dell'applicazione aziendale con UN ID applicazione e 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d selezionarlo.

      Selezionare l'applicazione AzureDatabricks con ID 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d

    7. Passare alla scheda Rivedi e crea fare clic su b.

Usare l'interfaccia della riga di comando di Azure

Usare l'interfaccia della riga di comando di Azure per completare le operazioni seguenti.

  1. È possibile selezionare un'istanza di Azure Key Vault esistente oppure crearne una nuova.

    • Per creare un insieme di credenziali delle chiavi, usare il comando dell'interfaccia della riga di comando di Azure seguente e sostituire gli elementi tra parentesi con l'area, il nome dell'insieme di credenziali delle chiavi, il nome del gruppo di risorse e la posizione:

      az keyvault create --location <region> \
                         --name <key-vault-name> \
                         --resource-group <resource-group-name> \
                         --location <location> \
                         --enable-purge-protection
      
    • Per usare un insieme di credenziali delle chiavi esistente, copiare il nome dell'insieme di credenziali delle chiavi per il passaggio successivo.

  2. Recuperare l'ID oggetto dell'applicazione Azure Databricks con l’interfaccia della riga di comando di Azure.

    az ad sp show --id "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d" \
                  --query "id" \
                  --output tsv
    
  3. Verificare di usare la sottoscrizione di Azure corretta:

    az account set --subscription {subscription_id}
    

Usare Azure PowerShell

È possibile usare un insieme di credenziali delle chiavi esistente o crearne uno nuovo.

Creare un insieme di credenziali delle chiavi:

$keyVault = New-AzKeyVault -Name <key-vault-name> \
-ResourceGroupName <resource-group-name> \
-Location <location> \
-sku <sku> \
-EnablePurgeProtection

Usare un insieme di credenziali delle chiavi esistente

$keyVault = Get-AzKeyVault -VaultName <key-vault-name>

Passaggio 2: Preparare una chiave

È possibile usare una chiave esistente o crearne una nuova. Usare qualsiasi strumento da usare: portale di Azure, interfaccia della riga di comando di Azure o altri strumenti.

Utilizzare l'interfaccia della riga di comando di Azure

Crea una chiave nel key vault La chiave deve essere di tipo RSA.

Per creare i criteri, eseguire questo comando:

az keyvault key create --name <key-name> \
                       --vault-name <key-vault-name> \
                       --protection software

Prendere nota dei valori seguenti, che è possibile ottenere dall'ID chiave nella kid proprietà nella risposta. Verrà usato nei passaggi successivi.

  • URL dell'insieme di credenziali delle chiavi: parte iniziale dell'ID chiave che include il nome dell'insieme di credenziali delle chiavi. Il formato è il seguente https://<key-vault-name>.vault.azure.net.
  • keyName è il nome della chiave
  • Versione chiave: versione della chiave.

L'ID chiave completo ha in genere il formato https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>. Le chiavi di Azure Key Vault che si trovano in un cloud non pubblico hanno un formato diverso.

Per usare una chiave esistente anziché crearne una, ottenere e copiare questi valori per la chiave in modo da poterli usare nei passaggi successivi. Verificare che la chiave esistente sia abilitata prima di procedere.

Usare Azure PowerShell

  1. Se si prevede di creare una chiave, potrebbe essere necessario impostare i criteri di accesso, a seconda di come e quando è stato creato. Ad esempio, se di recente è stato creato l'insieme di credenziali delle chiavi con PowerShell, il nuovo insieme di credenziali delle chiavi potrebbe non avere i criteri di accesso necessari per creare una chiave. Nell'esempio seguente viene usato il EmailAddress parametro per impostare i criteri. Per informazioni dettagliate, vedere l'articolo Microsoft su Set-AzKeyVaultAccessPolicy.

    Impostare un criterio di accesso per l’insieme di credenziali delle chiavi.

    Set-AzKeyVaultAccessPolicy \
    -VaultName $keyVault.VaultName \
    -PermissionsToKeys all \
    -EmailAddress <email-address>
    
  2. È possibile creare una nuova area di lavoro o recuperarne una esistente:

    • Creazione di una chiave

      $key = Add-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name> \
      -Destination 'Software'
      
    • Recupera un insieme di credenziali esistente:

      $key = Get-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name>
      
  3. Aggiungere un criterio di accesso per un insieme di credenziali delle chiavi

    $managedService = Get-AzureADServicePrincipal \
    -Filter "appId eq '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d'"
    
    Set-AzKeyVaultAccessPolicy -VaultName $keyVault.VaultName \
    -ObjectId $managedService.ObjectId \
    -PermissionsToKeys wrapkey,unwrapkey,get
    

Passaggio 3: Aggiungere una chiave a un'area di lavoro

È possibile implementare una nuova area di lavoro con una chiave gestita dal cliente per i servizi gestiti o aggiungere una chiave a un'area di lavoro esistente. È possibile eseguire entrambe le operazioni con l'interfaccia della riga di comando di Azure, PowerShell, i modelli di Resource Manager, portale di Azure o altri strumenti. Questa sezione include i dettagli per più opzioni di implementazione:

Usare il portale di Azure senza modello

  1. Passare al portale di Azure, nella home page Monitoraggio

  2. Selezionare + Crea una risorsa nell'angolo superiore sinistro della pagina.

  3. Nella barra di ricerca digitare Azure Databricks e fare clic sull'opzione Azure Databricks .

  4. Fare clic su Crea nel widget Azure Databricks.

  5. Immettere i valori per i campi di input nelle schede Informazioni di base e Rete .

  6. Dopo aver raggiunto la scheda Crittografia :

    • Per creare un'area di lavoro, abilitare Usare la propria chiave nella sezione Servizi gestiti.
    • Per aggiornare un'area di lavoro, abilitare Servizi gestiti.
  7. Impostare i campi di crittografia.

    Visualizzare i campi nella sezione Managed Disks del pannello Azure Databricks

    • Nel campo Identificatore chiave incollare l'identificatore di chiave della chiave di Azure Key Vault.
    • Nell'elenco a discesa Sottoscrizione immettere il nome della sottoscrizione della chiave di Azure Key Vault.
  8. Completare le schede rimanenti e fare clic su Rivedi e crea (per una nuova area di lavoro) o su Salva (per aggiornare un'area di lavoro).

Importante

Se si ruota la chiave, è necessario mantenere disponibile la chiave precedente per 24 ore.

Usare l'interfaccia della riga di comando di Azure senza modello

  1. Per aggiungere criteri di accesso all'insieme di credenziali delle chiavi, usare i comandi seguenti: Sostituire <key-vault-name> con il nome dell'insieme di credenziali usato nel passaggio precedente e sostituire <object-id> con l'ID oggetto dell'applicazione AzureDatabricks .

    az keyvault set-policy -n <key-vault-name> \
                           --key-permissions get wrapKey unwrapKey  \
                           --object-id <object-id>
    
  2. Creare o aggiornare un'area di lavoro:

    Per la creazione e l'aggiornamento, aggiungere questi campi al comando :

    • managed-services-key-name: Nome chiave
    • managed-services-key-vault: URI del Key Vault
    • managed-services-key-version: versione chiave. Usare la versione della chiave specifica e non latest.

    Esempio di creazione di un'area di lavoro usando questi campi:

    az databricks workspace create --name <workspace-name> \
    --resource-group <resource-group-name> \
    --location <location> \
    --sku premium \
    --managed-services-key-name <key-name> \
    --managed-services-key-vault <key-vault-uri> \
    --managed-services-key-version <key-version>
    

    Esempio di aggiornamento di un'area di lavoro usando questi campi:

    az databricks workspace update --name <workspace-name> \
    --resource-group <resource-group-name> \
    --managed-services-key-name <key-name> \
    --managed-services-key-vault <key-vault-uri> \
    --managed-services-key-version <key-version>
    

Importante

Se si ruota la chiave, è necessario mantenere disponibile la chiave precedente per 24 ore.

Usare PowerShell con nessun modello

Per creare o aggiornare un'area di lavoro, aggiungere i parametri seguenti al comando per la nuova chiave:

  • ManagedServicesKeyVaultPropertiesKeyName: Nome chiave
  • ManagedServicesKeyVaultPropertiesKeyVaultUri: URI della chiave
  • ManagedServicesKeyVaultPropertiesKeyVersion: versione chiave. Usare la versione della chiave specifica e non latest.

Esempio di creazione dell'area di lavoro con questi campi:

New-AzDatabricksWorkspace -Name <workspace-name> \
-ResourceGroupName <resource-group-name> \
-location $keyVault.Location \
-sku premium \
-ManagedServicesKeyVaultPropertiesKeyName $key.Name \
-ManagedServicesKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
-ManagedServicesKeyVaultPropertiesKeyVersion $key.Version

Esempio di aggiornamento dell'area di lavoro con questi campi:

Update-AzDatabricksWorkspace -Name <workspace-name> \
-ResourceGroupName <resource-group-name> \
-sku premium \
-ManagedServicesKeyVaultPropertiesKeyName $key.Name \
-ManagedServicesKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
-ManagedServicesKeyVaultPropertiesKeyVersion $key.Version

Importante

Se si ruota la chiave, è necessario mantenere disponibile la chiave precedente per 24 ore.

Applicare le modifiche con un modello di Resource Manager

Il modello di Resource Manager seguente crea una nuova area di lavoro con una chiave gestita dal cliente, usando la versione 2023-02-01 dell'API per la risorsa Microsoft.Databricks/workspaces. Salvare il testo in locale in un file denominato databricks-cmk-template.json.

Questo modello di esempio non include tutte le possibili funzionalità di Azure Databricks, ad esempio la fornitura di una propria rete virtuale in cui implementare l'area di lavoro.

Importante

Se si usa già un modello, unire i parametri, le risorse e gli output aggiuntivi di questo modello nel modello esistente.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "workspaceName": {
      "type": "string",
      "metadata": {
        "description": "The name of the Azure Databricks workspace to create."
      }
    },
    "pricingTier": {
      "type": "string",
      "defaultValue": "premium",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "The pricing tier of workspace."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    },
    "apiVersion": {
      "type": "string",
      "defaultValue": "2023-02-01",
      "allowedValues":[
        "2023-02-01",
        "2021-04-01-preview"
      ],
      "metadata": {
        "description": "The api version to create the workspace resources"
      }
    },
    "keyvaultUri": {
      "type": "string",
      "metadata": {
        "description": "The Key Vault URI for customer-managed key for managed services"
      }
    },
    "keyName": {
      "type": "string",
      "metadata": {
        "description": "The key name used for customer-managed key for managed services"
      }
    },
    "keyVersion": {
      "type": "string",
      "metadata": {
        "description": "The key version used for customer-managed key for managed services. Use the specific key version and not `latest`."
      }
    }
  },
  "variables": {
    "managedResourceGroupName": "[concat('databricks-rg-', parameters('workspaceName'), '-', uniqueString(parameters('workspaceName'), resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Databricks/workspaces",
      "name": "[parameters('workspaceName')]",
      "location": "[parameters('location')]",
      "apiVersion": "[parameters('apiVersion')]",
      "sku": {
        "name": "[parameters('pricingTier')]"
      },
      "properties": {
        "ManagedResourceGroupId": "[concat(subscription().id, '/resourceGroups/', variables('managedResourceGroupName'))]",
        "encryption": {
          "entities": {
             "managedServices": {
                "keySource": "Microsoft.Keyvault",
                "keyVaultProperties": {
                   "keyVaultUri": "[parameters('keyvaultUri')]",
                   "keyName": "[parameters('keyName')]",
                   "keyVersion": "[parameters('keyVersion')]"
                }
             }
          }
        }
      }
    }
  ],
  "outputs": {
    "workspace": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')))]"
    }
  }
}

Se si usa già un altro modello, è possibile unire i parametri, le risorse e gli output di questo modello nel modello esistente.

Per usare questo modello per creare o aggiornare un'area di lavoro, scegliere una delle opzioni di implementazione seguenti:

Applicare un modello con l'interfaccia della riga di comando di Azure

Per creare una nuova area di lavoro con l'interfaccia della riga di comando di Azure, eseguire il comando seguente:

az deployment group create --resource-group <resource-group-name>  \
                           --template-file <file-name>.json \
                           --parameters workspaceName=<new-workspace-name> \
                           keyvaultUri=<keyvaultUrl> \
                           keyName=<keyName> keyVersion=<keyVersion>

Nota

Usare la versione della chiave specifica e non latest.

Per aggiornare un'area di lavoro esistente per usare un'area di lavoro chiave gestita dal cliente (o per ruotare la chiave esistente) usando l'interfaccia della riga di comando di Azure:

  1. Se il modello di Resource Manager che ha implementato l'area di lavoro non ha mai aggiunto chiavi gestite dal cliente, aggiungere la resources.properties.encryption sezione e i relativi parametri. Vedere il modello in precedenza in questo articolo.

    1. Aggiungere la resources.properties.encryption sezione dal modello.
    2. parameters Nella sezione aggiungere tre nuovi parametri keyvaultUri, keyNamee keyVersion dal modello.
    3. parameters Nella sezione rimuovere "type": "string", dal modello.
  2. Eseguire lo stesso comando di per creare una nuova area di lavoro. Se il nome del gruppo di risorse e il nome dell'area di lavoro sono identici all'area di lavoro esistente, questo comando aggiorna l'area di lavoro esistente anziché creare una nuova area di lavoro.

    az deployment group create --resource-group <existing-resource-group-name>  \
                               --template-file <file-name>.json \
                               --parameters workspaceName=<existing-workspace-name> \
                               keyvaultUri=<keyvaultUrl> \
                               keyName=<keyName> keyVersion=<keyVersion>
    

    Oltre alle modifiche apportate ai parametri correlati alla chiave, usare gli stessi parametri usati per la creazione dell'area di lavoro.

    Importante

    Se si ruota la chiave, è necessario mantenere disponibile la chiave precedente per 24 ore.

Applicare un modello con il portale di Azure

Per usare il modello nel portale di Azure per creare o aggiornare un'area di lavoro:

  1. Nella pagina Implementazione personalizzata:

  2. Fare clic su Creare un modello personalizzato nell'editor.

  3. Incollare il codice JSON.

  4. Fare clic su Salva.

  5. Specificare i parametri.

    Per aggiornare un'area di lavoro esistente, usare gli stessi parametri usati per creare l'area di lavoro. Per aggiungere una chiave per la prima volta, aggiungere i tre parametri correlati alla chiave. Per ruotare la chiave, modificare alcuni o tutti i parametri correlati alla chiave. Verificare che il nome del gruppo di risorse e il nome dell'area di lavoro siano identici all'area di lavoro esistente. Se sono uguali, questo comando aggiorna l'area di lavoro esistente anziché creare una nuova area di lavoro.

    Oltre alle modifiche apportate ai parametri correlati alla chiave, usare gli stessi parametri usati per la creazione dell'area di lavoro.

  6. Fare clic su Rivedi e crea.

  7. Se non sono presenti problemi di convalida, fare clic su Crea.

    Importante

    Se si ruota la chiave, è necessario mantenere disponibile la chiave precedente per 24 ore.

Per un esempio, vedere Guida introduttiva: Creare e implementare modelli di Azure Resource Manager con il portale di Azure.

Passaggio 4 (facoltativo): Reimportare i notebook

Dopo aver aggiunto inizialmente una chiave per i servizi gestiti per un'area di lavoro esistente, solo le operazioni di scrittura future usano la chiave. Tuttavia, i dati esistenti non vengono crittografati.

È possibile esportare tutti i notebook e quindi riimportarli in modo che la chiave che crittografa i dati sia protetta e controllata dalla chiave. È possibile usare le API di esportazione e importazione dell'area di lavoro.

Ruotare la chiave in un secondo momento

Se si usa già una chiave gestita dal cliente per i servizi gestiti, è possibile aggiornare l'area di lavoro con una nuova versione chiave o una chiave completamente nuova. Questa operazione è denominata rotazione delle chiavi.

  1. Creare una nuova chiave o ruotare la chiave esistente nell'insieme di credenziali delle chiavi. Vedere il Passaggio 1: Impostare un insieme di chiavi.

    Verificare che la nuova chiave disponga delle autorizzazioni appropriate.

  2. Verificare che il modello ARM usi la versione API corretta per la risorsa . Deve essere maggiore o uguale a 2021-04-01-preview.

  3. Aggiornare l'area di lavoro con la nuova chiave usando il portale, l'interfaccia della riga di comando o PowerShell. Vedere Passaggio 3: Aggiungere una chiave a un'area di lavoro e seguire le istruzioni per l'aggiornamento dell'area di lavoro. Assicurarsi di usare gli stessi valori per il nome del gruppo di risorse e il nome dell'area di lavoro in modo che aggiorni l'area di lavoro esistente anziché creare una nuova area di lavoro. Oltre alle modifiche apportate ai parametri correlati alla chiave, usare gli stessi parametri usati per la creazione dell'area di lavoro.

    Importante

    Se si ruota la chiave, è necessario mantenere disponibile la chiave precedente per 24 ore.

  4. Facoltativamente , esportare e reimportare i notebook esistenti per assicurarsi che tutti i notebook esistenti usino la nuova chiave.

Risoluzione dei problemi

Eliminazione accidentale di una chiave

Chiavi gestite dal cliente per i servizi gestiti: se si elimina la chiave in Azure Key Vault, l'accesso all'area di lavoro inizierà a non riuscire e nessun notebook sarà leggibile da Azure Databricks. Per evitare questo problema, è consigliabile abilitare le eliminazioni temporanea. Questa opzione garantisce che, se una chiave viene eliminata, può essere recuperata entro un periodo di 30 giorni. Se l'eliminazione temporanea è abilitata, è sufficiente riabilitare la chiave per risolvere il problema.

Errore di aggiornamento della chiave dovuto alle autorizzazioni di Key Vault

Se si verificano problemi durante la creazione dell'area di lavoro, verificare se l'insieme di credenziali delle chiavi dispone delle autorizzazioni corrette. L'errore restituito da Azure potrebbe non indicare correttamente questo errore come causa radice. In più, get, wrapKey e unwrapKey sono le autorizzazioni minime necessarie. Vedere il Passaggio 1: Impostare un insieme di chiavi.

Le chiavi perse non sono recuperabili

Se si perde la chiave e non è possibile recuperarla, tutti i dati del notebook crittografati dalla chiave saranno irrecuperabili.