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.
- Origine notebook nel piano di controllo di Azure Databricks.
- Risultati dei notebook per i notebook archiviati nel piano di controllo. Per impostazione predefinita, anche i risultati più grandi vengono archiviati nel bucket radice dell'area di lavoro. È possibile configurare Azure Databricks per archiviare tutti i risultati interattivi dei notebook nell'account cloud.
- Segreti archiviati dalle API di gestione segrete.
- Query e cronologia delle query SQL di Databricks.
- Token di accesso personali o altre credenziali usate per configurare l'integrazione di Git con le cartelle di Databricks Repos.
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
Per usare l'interfaccia della riga di comando di Azure per queste attività, installare lo strumento dell'interfaccia della riga di comando di Azure e installare l'estensione Databricks:
az extension add --name databricks
Per usare PowerShell per queste attività, installare Azure PowerShell e installare il modulo Databricks PowerShell. È anche necessario eseguire l'accesso:
Connect-AzAccount
Per accedere all'account Azure come utente, vedere Accesso di PowerShell con un account utente di Azure Databricks. Per accedere all'account Azure come entità servizio, vedere Accesso di PowerShell con un'entità servizio Microsoft Entra ID.
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
- 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.
- Recuperare l'ID oggetto dell'applicazione Azure Databricks:
- Nel portale Azure, andare a Microsoft Entra ID.
- Selezionare Applicazioni aziendali nel menu della barra laterale.
- Cercare
AzureDatabricks
e cliccare su l'applicazione aziendale nei risultati. - In Proprietà copiare l'ID oggetto.
- Aggiungere un criterio di accesso a Key Vault usando il portale di Azure:
Passare ad Azure Key Vault che verrà usato per configurare le chiavi gestite dal cliente per i servizi gestiti dell'area di lavoro.
Aprire la scheda Criteri di accesso dal pannello a sinistra.
Selezionare il pulsante Crea nella parte superiore della pagina.
Nella scheda Autorizzazioni della sezione Autorizzazioni chiave abilitare Recupera, Annulla il wrapping della chiave ed Esegui il wrapping della chiave.
Fare clic su Avanti.
Nella scheda Entità digitare
AzureDatabricks
e scorrere fino al primo risultato dell'applicazione aziendale con UN ID applicazione e2ff814a6-3304-4ab8-85cb-cd0e6f879c1d
selezionarlo.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.
È 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.
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
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
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>
È 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>
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
- Usare l'interfaccia della riga di comando di Azure senza modello
- Usare PowerShell con nessun modello
- Applicare le modifiche con un modello di Resource Manager
Usare il portale di Azure senza modello
Passare al portale di Azure, nella home page Monitoraggio
Selezionare + Crea una risorsa nell'angolo superiore sinistro della pagina.
Nella barra di ricerca digitare
Azure Databricks
e fare clic sull'opzione Azure Databricks .Fare clic su Crea nel widget Azure Databricks.
Immettere i valori per i campi di input nelle schede Informazioni di base e Rete .
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.
Impostare i campi di crittografia.
- 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.
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
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'applicazioneAzureDatabricks
.az keyvault set-policy -n <key-vault-name> \ --key-permissions get wrapKey unwrapKey \ --object-id <object-id>
Creare o aggiornare un'area di lavoro:
Per la creazione e l'aggiornamento, aggiungere questi campi al comando :
managed-services-key-name
: Nome chiavemanaged-services-key-vault
: URI del Key Vaultmanaged-services-key-version
: versione chiave. Usare la versione della chiave specifica e nonlatest
.
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 chiaveManagedServicesKeyVaultPropertiesKeyVaultUri
: URI della chiaveManagedServicesKeyVaultPropertiesKeyVersion
: versione chiave. Usare la versione della chiave specifica e nonlatest
.
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
- Applicare un modello con il portale di Azure
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:
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.- Aggiungere la
resources.properties.encryption
sezione dal modello. parameters
Nella sezione aggiungere tre nuovi parametrikeyvaultUri
,keyName
ekeyVersion
dal modello.parameters
Nella sezione rimuovere"type": "string",
dal modello.
- Aggiungere la
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:
Nella pagina Implementazione personalizzata:
Fare clic su Creare un modello personalizzato nell'editor.
Incollare il codice JSON.
Fare clic su Salva.
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.
Fare clic su Rivedi e crea.
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.
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.
Verificare che il modello ARM usi la versione API corretta per la risorsa . Deve essere maggiore o uguale a
2021-04-01-preview
.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.
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.