Condividi tramite


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: Configurare un archivio 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

Il gestore di chiavi deve trovarsi nello stesso tenant di Azure dell'area di lavoro di Azure Databricks.

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

Usare il portale di Azure

  1. Creare o selezionare un archivio di chiavi.

    • Per creare un insieme di credenziali, vai alla pagina del portale di Azure per creare un insieme di credenziali. Fare clic su + Crea. Immettere il nome del gruppo di risorse, il nome del Key Vault, la regione e il piano tariffario. Fare clic su Rivedi e crea e quindi su Crea.
    • Per utilizzare un Key Vault esistente, copia il nome del Key Vault per il passaggio successivo.
  2. Ottenere l'ID oggetto dell'applicazione AzureDatabricks:

    1. Nel portale Azure, andare a Microsoft Entra ID.
    2. Selezionare Applicazioni Enterprise dal menu della barra laterale.
    3. Cercare AzureDatabricks e cliccare su l'applicazione aziendale nei risultati.
    4. In Proprietà copiare l'ID oggetto.
  3. Concedere autorizzazioni al Key Vault utilizzando il controllo degli accessi in base al ruolo (RBAC) di Azure

  4. Passare all'istanza di Azure Key Vault che verrà usata per configurare le chiavi gestite dal cliente per i servizi gestiti per l'area di lavoro.

  5. Nella barra laterale fare clic su Controllo di accesso (IAM).

  6. Fare clic su + Aggiungi > Aggiungi assegnazione di ruolo.

  7. Nella scheda ruolo, selezionare Key Vault Crypto Service Encryption User.

  8. Nella scheda membri fare clic su + Seleziona membri.

  9. Cerca e seleziona l'identità gestita per l'account di archiviazione di Azure Databricks.

  10. In Seleziona i membri, cerca e seleziona anche AzureDatabricks.

  11. Fare clic su Rivedi e assegna > Rivedi e assegna.

Nota

Se il Key Vault utilizza criteri di accesso invece del controllo degli accessi in base al ruolo, seguire queste istruzioni:

  1. Aggiungi un criterio di accesso a Key Vault usando il portale di Azure.

    1. Passare alle istanze di Azure Key Vault che verranno usate per configurare le chiavi gestite dal cliente per i servizi gestiti per l'area di lavoro.
    2. Aprire la scheda Criteri di accesso dal pannello a sinistra.
    3. Selezionare il pulsante Crea situato nella parte superiore della pagina.
    4. Nella sezione autorizzazioni chiave nella scheda autorizzazioni , abilitare Ottieni, Scarta chiave, e Wrappa chiave.
    5. Fare clic su Avanti.
    6. Nella scheda Principale , digitare AzureDatabricks e scorrere fino al primo risultato dell'Applicazione Aziendale con un Application ID di 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d e selezionarlo.
    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. Creare un Key Vault o selezionarne uno esistente:

    • Per creare un insieme di credenziali, usare il seguente comando dell'interfaccia a riga di comando di Azure e sostituire gli elementi tra parentesi quadre con la regione, il nome dell'insieme di credenziali, 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 (Key Vault) esistente, copia il nome del Key Vault per il passaggio successivo.

  2. Ottieni 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 chiavi o utilizzarne uno esistente.

Crea un Key Vault:

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

Usare un archivio di 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 nella cassetta delle chiavi. 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 proprietà kid nella risposta. Verrà usato nei passaggi successivi.

  • URL del Key Vault: La parte iniziale dell'ID chiave che include il nome del Key Vault. 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. È 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>
      
  2. Assegna il ruolo "Utente crittografia del Servizio criptografico del Key Vault" all'area di lavoro di Azure Databricks e all'identità gestita dell'account di archiviazione di Azure Databricks nel key vault:

    
     $azureDatabricks = Get-AzureADServicePrincipal \
     -Filter "appId eq '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d'"
    
     New-AzKeyVaultRoleAssignment -RoleDefinitionName "Key Vault Crypto Service Encryption User" -ObjectId $azureDatabricks.ObjectId
    
     New-AzKeyVaultRoleAssignment -RoleDefinitionName "Key Vault Crypto Service Encryption User" -ObjectId  <storage-account-managed-identity>
    

Nota

Se il Key Vault usa criteri di accesso anziché il controllo degli accessi in base al ruolo, usare il comando seguente:

$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 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 di chiave , incollare l'identificatore di chiave della chiave 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. Concedere il ruolo di utente di crittografia del servizio di Key Vault ad Azure Databricks e all'identità gestita dell'account di archiviazione Azure Databricks nel vostro Key Vault.

    az keyvault role assignment create \
                            --role "Key Vault Crypto Service Encryption User"  \
                           --assignee-object-id <azure-databricks-service-object-id>
    
    az keyvault role assignment create \
                            --role "Key Vault Crypto Service Encryption User"  \
                           --assignee <storage-account-managed-identity>
    

Nota

Se il Key Vault utilizza criteri di accesso invece del controllo degli accessi in base al ruolo, seguire queste istruzioni:

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>
  1. 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 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>

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 (ARM) che ha distribuito l'area di lavoro non ha mai aggiunto le chiavi gestite dal cliente, aggiungi la sezione resources.properties.encryption e i relativi parametri. Vedere il modello in precedenza in questo articolo.

    1. Aggiungere la resources.properties.encryption sezione dal modello.
    2. Nella sezione parameters aggiungere tre nuovi parametri keyvaultUri, keyNamee keyVersion dal modello.
    3. Nella sezione parameters 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. Compilare 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 nel vault delle chiavi. Consultare Passaggio 1: Configurare un insieme di credenziali della chiave.

    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. Aggiorna l'area di lavoro con la nuova chiave usando il portale, CLI 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 ai permessi dell'insieme di credenziali chiave

Se si verificano problemi durante la creazione dell'area di lavoro, verificare se l'archivio di 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. Consultare Passo 1: Configurare un archivio 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.