Share via


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. Azure Databricks include più funzionalità chiave gestite dal cliente. 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:

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. I dati esistenti non vengono crittografati nuovamente. 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: Configurare un insieme di credenziali delle chiavi

È necessario creare un'istanza di Azure Key Vault e impostarne le autorizzazioni. A tale scopo, è possibile usare le API portale di Azure, dell'interfaccia della riga di comando o .

Importante

L'insieme di credenziali delle chiavi deve trovarsi nello stesso tenant di Azure dell'area di lavoro di Azure Databricks.

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

Usare il portale di Azure

  1. Creare o selezionare un 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. Ottenere l'ID oggetto dell'applicazione AzureDatabricks :
    1. Nel portale Azure, andare a Microsoft Entra ID.
    2. Selezionare Applicazioni aziendali nel menu della barra laterale.
    3. AzureDatabricks Cercare e fare clic sull'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 per l'area di lavoro.

    2. Fare clic sulla scheda Criteri di accesso nel pannello a sinistra.

    3. Selezionare il pulsante Crea disponibile 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 e 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 istruzioni seguenti.

  1. Creare un insieme di credenziali delle chiavi o selezionare un insieme di credenziali delle chiavi esistente:

    • 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. Ottenere l'ID oggetto dell'applicazione AzureDatabricks 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 creare un nuovo insieme di credenziali delle chiavi o usarne uno esistente.

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 creare una chiave o usare una chiave esistente. 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

Creare una chiave nell'insieme di credenziali delle chiavi. KeyType deve essere RSA.

Per creare la chiave nell'interfaccia della riga di comando, 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. Verranno usati 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. Ha il formato https://<key-vault-name>.vault.azure.net.
  • Nome chiave: 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 i criteri di accesso in un nuovo insieme di credenziali delle chiavi:

    Set-AzKeyVaultAccessPolicy \
    -VaultName $keyVault.VaultName \
    -PermissionsToKeys all \
    -EmailAddress <email-address>
    
  2. È possibile creare una chiave o recuperare una chiave esistente:

    • Creare una chiave:

      $key = Add-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name> \
      -Destination 'Software'
      
    • Recuperare una chiave esistente:

      $key = Get-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name>
      
  3. Aggiungere un criterio di accesso con autorizzazioni all'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 distribuire 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 distribuzione:

Usare il portale di Azure senza modello

  1. Passare alla home page del portale di Azure.

  2. Fare clic su 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. Aggiungere un criterio di accesso a Key Vault con il comando seguente. 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 dell'insieme di credenziali delle chiavi
    • managed-services-key-version: versione chiave

    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 senza modello

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

  • ManagedServicesKeyVaultPropertiesKeyName: Nome chiave
  • ManagedServicesKeyVaultPropertiesKeyVaultUri: URI chiave
  • ManagedServicesKeyVaultPropertiesKeyVersion: versione chiave

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 distribuire 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"
      }
    }
  },
  "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 distribuzione 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>

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 distribuito 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.
  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. Passare alla pagina Distribuzione personalizzata.

  2. Fare clic su Compila 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 altri dettagli, vedere l'articolo Avvio rapido di Azure: Creare e distribuire modelli arm usando 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. I dati esistenti non vengono crittografati nuovamente.

È 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 abbia la versione dell'API corretta. Deve essere uguale o superiore 2021-04-01-previewa .

  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

Se si elimina la chiave nell'insieme di credenziali delle chiavi di Azure, l'account di accesso dell'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. Inoltre, le autorizzazioni necessarie sono get, wrapKeye unwrapKey. 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.