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:
- Origine notebook nel piano di controllo di Azure Databricks.
- I risultati del notebook per i notebook vengono eseguiti in modo interattivo (non come processi) 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 dei segreti.
- Query e cronologia query SQL di Databricks.
- Token di accesso personali (PAT) o altre credenziali usate per configurare l'integrazione git con le cartelle Git di Databricks.
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
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: 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
- 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.
- Ottenere l'ID oggetto dell'applicazione AzureDatabricks :
- Nel portale Azure, andare a Microsoft Entra ID.
- Selezionare Applicazioni aziendali nel menu della barra laterale.
AzureDatabricks
Cercare e fare clic sull'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 per l'area di lavoro.
Fare clic sulla scheda Criteri di accesso nel pannello a sinistra.
Selezionare il pulsante Crea disponibile 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 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.
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.
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
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
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>
È 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>
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
- Usare l'interfaccia della riga di comando di Azure senza modello
- Usare PowerShell senza modello
- Applicare le modifiche con un modello di Resource Manager
Usare il portale di Azure senza modello
Passare alla home page del portale di Azure.
Fare clic su 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
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'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 dell'insieme di credenziali delle chiavimanaged-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 chiaveManagedServicesKeyVaultPropertiesKeyVaultUri
: URI chiaveManagedServicesKeyVaultPropertiesKeyVersion
: 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
- 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>
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 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.- Aggiungere la
resources.properties.encryption
sezione dal modello. parameters
Nella sezione aggiungere tre nuovi parametrikeyvaultUri
,keyName
ekeyVersion
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:
Passare alla pagina Distribuzione personalizzata.
Fare clic su Compila 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 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.
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 abbia la versione dell'API corretta. Deve essere uguale o superiore
2021-04-01-preview
a .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
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
, wrapKey
e 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.