Aktivera kundhanterade nycklar för hanterade tjänster
Om du vill ha ytterligare kontroll över dina data kan du lägga till din egen nyckel för att skydda och kontrollera åtkomsten till vissa typer av data. Azure Databricks har flera kundhanterade nyckelfunktioner. Information om hur du jämför relaterade funktioner finns i Kundhanterade nycklar för kryptering.
Dricks
Den här artikeln beskriver hur du konfigurerar din egen nyckel från Azure Key Vault-valv för hanterade tjänster. Anvisningar om hur du använder en nyckel från Azure Key Vault Managed HSM finns i Aktivera kundhanterade HSM-nycklar för hanterade tjänster.
Hanterade tjänstdata i Azure Databricks-kontrollplanet krypteras i vila. Du kan lägga till en kundhanterad nyckel för hanterade tjänster för att skydda och kontrollera åtkomsten till följande typer av krypterade data:
- Notebook-källa i Azure Databricks-kontrollplanet.
- Notebook-resultat för notebook-filer körs interaktivt (inte som jobb) som lagras i kontrollplanet. Som standard lagras även större resultat i arbetsytans rot bucket. Du kan konfigurera Azure Databricks för att lagra alla interaktiva notebook-resultat i ditt molnkonto.
- Hemligheter som lagras av API:erna för secret manager.
- Databricks SQL-frågor och frågehistorik.
- Personliga åtkomsttoken (PAT) eller andra autentiseringsuppgifter som används för att konfigurera Git-integrering med Databricks Git-mappar.
När du har lagt till en kundhanterad nyckelkryptering för en arbetsyta använder Azure Databricks din nyckel för att styra åtkomsten till nyckeln som krypterar framtida skrivåtgärder till arbetsytans hanterade tjänstdata. Befintliga data krypteras inte igen. Datakrypteringsnyckeln cachelagras i minnet för flera läs- och skrivåtgärder och avlägsnas från minnet med jämna mellanrum. Nya begäranden för dessa data kräver en annan begäran till molntjänstens nyckelhanteringssystem. Om du tar bort eller återkallar din nyckel misslyckas läsning eller skrivning till skyddade data i slutet av cachetidsintervallet.
Du kan rotera (uppdatera) den kundhanterade nyckeln vid ett senare tillfälle. Se Rotera nyckeln vid ett senare tillfälle.
Den här funktionen krypterar inte data som lagras utanför kontrollplanet. Andra kundhanterade nyckelfunktioner finns i Kundhanterade nycklar för kryptering
Krav
Om du vill använda Azure CLI för dessa uppgifter installerar du Azure CLI-verktyget och installerar Databricks-tillägget:
az extension add --name databricks
Om du vill använda PowerShell för dessa uppgifter installerar du Azure PowerShell och installerar Databricks Powershell-modulen. Du måste också logga in:
Connect-AzAccount
Information om hur du loggar in på ditt Azure-konto som användare finns i PowerShell-inloggning med ett Azure Databricks-användarkonto. Information om hur du loggar in på ditt Azure-konto som tjänstens huvudnamn finns i PowerShell-inloggning med tjänstens huvudnamn för Microsoft Entra-ID.
Steg 1: Konfigurera ett Key Vault
Du måste skapa en Azure Key Vault-instans och ange dess behörigheter. Du kan göra detta via Azure Portal, CLI eller API:er.
Viktigt!
Key Vault måste finnas i samma Azure-klientorganisation som din Azure Databricks-arbetsyta.
De här instruktionerna innehåller information om flera distributionsalternativ:
Använd Azure Portal
- Skapa eller välj ett Nyckelvalv:
- Om du vill skapa ett Nyckelvalv går du till sidan Azure Portal för att skapa ett Nyckelvalv. Klicka på + Skapa. Ange resursgruppens namn, Key Vault-namn, region och prisnivå. Klicka på Granska + skapa och sedan på Skapa.
- Om du vill använda ett befintligt Key Vault kopierar du dess Key Vault-namn för nästa steg.
- Hämta objekt-ID för AzureDatabricks-programmet :
- Gå till Microsoft Entra ID i Azure Portal.
- Välj Företagsprogram på marginallistmenyn.
- Sök
AzureDatabricks
efter och klicka på Enterprise-programmet i resultatet. - Kopiera objekt-ID:t från Egenskaper.
- Lägg till en åtkomstprincip i Key Vault med hjälp av Azure Portal:
Gå till Azure Key Vault som du ska använda för att konfigurera kundhanterade nycklar för hanterade tjänster för din arbetsyta.
Klicka på fliken Åtkomstprinciper i panelen till vänster.
Välj knappen Skapa längst upp på sidan.
Under avsnittet Nyckelbehörigheter på fliken Behörigheter aktiverar du Hämta, Packa upp nyckeln och Packa nyckeln.
Klicka på Nästa.
På fliken Huvudnamn skriver
AzureDatabricks
och bläddrar du till det första enterprise-programresultatet som har ett program-ID2ff814a6-3304-4ab8-85cb-cd0e6f879c1d
för och väljer det.Fortsätt till fliken Granska + skapa och klicka på b.
Använda Azure CLI
Använd Azure CLI för att slutföra följande instruktioner.
Skapa ett Nyckelvalv eller välj ett befintligt Nyckelvalv:
Om du vill skapa ett Key Vault använder du följande Azure CLI-kommando och ersätter objekten inom hakparenteser med din region, Key Vault-namn, resursgruppsnamn och plats:
az keyvault create --location <region> \ --name <key-vault-name> \ --resource-group <resource-group-name> \ --location <location> \ --enable-purge-protection
Om du vill använda ett befintligt Key Vault kopierar du Key Vault-namnet för nästa steg.
Hämta objekt-ID:t för AzureDatabricks-programmet med Azure CLI.
az ad sp show --id "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d" \ --query "id" \ --output tsv
Bekräfta att du använder rätt Azure-prenumeration:
az account set --subscription {subscription_id}
Använda Azure Powershell
Du kan skapa ett nytt Key Vault eller använda ett befintligt.
Skapa ett nyckelvalv:
$keyVault = New-AzKeyVault -Name <key-vault-name> \
-ResourceGroupName <resource-group-name> \
-Location <location> \
-sku <sku> \
-EnablePurgeProtection
Använd ett befintligt Key Vault:
$keyVault = Get-AzKeyVault -VaultName <key-vault-name>
Steg 2: Förbereda en nyckel
Du kan skapa en nyckel eller använda en befintlig nyckel. Använd alla verktyg som du föredrar att använda: Azure Portal, Azure CLI eller andra verktyg.
Använda Azure CLI
Skapa en nyckel under Nyckelvalvet. KeyType måste vara RSA.
Kör det här kommandot för att skapa nyckeln i CLI:
az keyvault key create --name <key-name> \
--vault-name <key-vault-name> \
--protection software
Anteckna följande värden som du kan hämta från nyckel-ID:t i kid
egenskapen i svaret. Du använder dem i följande steg:
- URL för nyckelvalv: Början av nyckel-ID:t som innehåller Key Vault-namnet. Det har formuläret
https://<key-vault-name>.vault.azure.net
. - Nyckelnamn: Namnet på din nyckel.
- Nyckelversion: Versionen av nyckeln.
Det fullständiga nyckel-ID:t har vanligtvis formuläret https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>
. Azure Key Vault-nycklar som finns i ett icke-offentligt moln har ett annat formulär.
Om du vill använda en befintlig nyckel i stället för att skapa en, hämtar och kopierar du dessa värden för din nyckel så att du kan använda dem i nästa steg. Kontrollera att din befintliga nyckel är aktiverad innan du fortsätter.
Använd Azure Powershell
Om du planerar att skapa en nyckel kan du behöva ange åtkomstprincipen, beroende på hur och när du skapade den. Om du till exempel nyligen skapade Key Vault med PowerShell kanske det nya Nyckelvalvet saknar den åtkomstprincip som krävs för att skapa en nyckel. I följande exempel används parametern
EmailAddress
för att ange principen. Mer information finns i Microsoft-artikeln om Set-AzKeyVaultAccessPolicy.Ange åtkomstprincipen för ett nytt Key Vault:
Set-AzKeyVaultAccessPolicy \ -VaultName $keyVault.VaultName \ -PermissionsToKeys all \ -EmailAddress <email-address>
Du kan antingen skapa en nyckel eller hämta en befintlig nyckel:
Skapa en nyckel:
$key = Add-AzKeyVaultKey \ -VaultName $keyVault.VaultName \ -Name <key-name> \ -Destination 'Software'
Hämta en befintlig nyckel:
$key = Get-AzKeyVaultKey \ -VaultName $keyVault.VaultName \ -Name <key-name>
Lägg till en åtkomstprincip med behörigheter till Key Vault:
$managedService = Get-AzureADServicePrincipal \ -Filter "appId eq '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d'" Set-AzKeyVaultAccessPolicy -VaultName $keyVault.VaultName \ -ObjectId $managedService.ObjectId \ -PermissionsToKeys wrapkey,unwrapkey,get
Steg 3: Lägga till en nyckel i en arbetsyta
Du kan distribuera en ny arbetsyta med en kundhanterad nyckel för hanterade tjänster eller lägga till en nyckel till en befintlig arbetsyta. Du kan göra båda med Azure CLI, Powershell, ARM-mallar, Azure Portal eller andra verktyg. Det här avsnittet innehåller information om flera distributionsalternativ:
- Använd Azure Portal utan mall
- Använda Azure CLI utan mall
- Använda PowerShell utan mall
- Tillämpa ändringar med en ARM-mall
Använd Azure Portal utan mall
Gå till startsidan för Azure-portalen.
Klicka på Skapa en resurs i det övre vänstra hörnet på sidan.
I sökfältet skriver
Azure Databricks
du och klickar på alternativet Azure Databricks .Klicka på Skapa i Azure Databricks-widgeten.
Ange värden för indatafälten på flikarna Grundläggande och Nätverk.
När du har nått fliken Kryptering :
- Om du vill skapa en arbetsyta aktiverar du Använd din egen nyckel i avsnittet Hanterade tjänster.
- Aktivera Hanterade tjänster för att uppdatera en arbetsyta.
Ange krypteringsfälten.
- I fältet Nyckelidentifierare klistrar du in nyckelidentifieraren för din Azure Key Vault-nyckel.
- I listrutan Prenumeration anger du prenumerationsnamnet för din Azure Key Vault-nyckel.
Slutför de återstående flikarna och klicka på Granska + Skapa (för ny arbetsyta) eller Spara (för att uppdatera en arbetsyta).
Viktigt!
Om du roterar nyckeln måste du ha den gamla nyckeln tillgänglig i 24 timmar.
Använda Azure CLI utan mall
Lägg till en åtkomstprincip i Key Vault med följande kommando. Ersätt
<key-vault-name>
med valvnamnet som du använde i föregående steg och ersätt<object-id>
med programmetsAzureDatabricks
objekt-ID.az keyvault set-policy -n <key-vault-name> \ --key-permissions get wrapKey unwrapKey \ --object-id <object-id>
Skapa eller uppdatera en arbetsyta:
För både skapande och uppdatering lägger du till dessa fält i kommandot:
managed-services-key-name
: Nyckelnamnmanaged-services-key-vault
: Nyckelvalvs-URImanaged-services-key-version
: Nyckelversion. Använd den specifika nyckelversionen och intelatest
.
Exempel på skapande av en arbetsyta med hjälp av följande fält:
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>
Exempeluppdatering av en arbetsyta med hjälp av följande fält:
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>
Viktigt!
Om du roterar nyckeln måste du ha den gamla nyckeln tillgänglig i 24 timmar.
Använda PowerShell utan mall
Om du vill skapa eller uppdatera en arbetsyta lägger du till följande parametrar i kommandot för den nya nyckeln:
ManagedServicesKeyVaultPropertiesKeyName
: NyckelnamnManagedServicesKeyVaultPropertiesKeyVaultUri
: Nyckel-URIManagedServicesKeyVaultPropertiesKeyVersion
: Nyckelversion. Använd den specifika nyckelversionen och intelatest
.
Exempel på att skapa arbetsytor med följande fält:
New-AzDatabricksWorkspace -Name <workspace-name> \
-ResourceGroupName <resource-group-name> \
-location $keyVault.Location \
-sku premium \
-ManagedServicesKeyVaultPropertiesKeyName $key.Name \
-ManagedServicesKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
-ManagedServicesKeyVaultPropertiesKeyVersion $key.Version
Exempel på uppdatering av arbetsyta med följande fält:
Update-AzDatabricksWorkspace -Name <workspace-name> \
-ResourceGroupName <resource-group-name> \
-sku premium \
-ManagedServicesKeyVaultPropertiesKeyName $key.Name \
-ManagedServicesKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
-ManagedServicesKeyVaultPropertiesKeyVersion $key.Version
Viktigt!
Om du roterar nyckeln måste du ha den gamla nyckeln tillgänglig i 24 timmar.
Tillämpa ändringar med en ARM-mall
Följande ARM-mall skapar en ny arbetsyta med en kundhanterad nyckel med hjälp av API-versionen 2023-02-01
för resursen Microsoft.Databricks/workspaces
. Spara den här texten lokalt i en fil med namnet databricks-cmk-template.json
.
Den här exempelmallen innehåller inte alla möjliga Azure Databricks-funktioner, till exempel att tillhandahålla ett eget virtuellt nätverk där arbetsytan ska distribueras.
Viktigt!
Om du redan använder en mall sammanfogar du mallens extra parametrar, resurser och utdata till din befintliga mall.
{
"$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')))]"
}
}
}
Om du redan använder en annan mall kan du slå samman mallens parametrar, resurser och utdata till din befintliga mall.
Om du vill använda den här mallen för att skapa eller uppdatera en arbetsyta väljer du något av följande distributionsalternativ:
Använda en mall med Azure CLI
Kör följande kommando för att skapa en ny arbetsyta med Azure CLI:
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>
Kommentar
Använd den specifika nyckelversionen och inte latest
.
Så här uppdaterar du en befintlig arbetsyta för att använda en kundhanterad nyckelarbetsyta (eller för att rotera den befintliga nyckeln) med hjälp av Azure CLI:
Om arm-mallen som distribuerade arbetsytan aldrig har lagt till kundhanterade nycklar lägger du till
resources.properties.encryption
avsnittet och dess relaterade parametrar. Se mallen tidigare i den här artikeln.- Lägg till avsnittet
resources.properties.encryption
från mallen. - I avsnittet
parameters
lägger du till tre nya parametrarkeyvaultUri
,keyName
ochkeyVersion
från mallen. - I avsnittet
parameters
tar du bort"type": "string",
från mallen.
- Lägg till avsnittet
Kör samma kommando som för att skapa en ny arbetsyta. Så länge resursgruppens namn och arbetsytans namn är identiska med din befintliga arbetsyta uppdaterar det här kommandot den befintliga arbetsytan i stället för att skapa en ny arbetsyta.
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>
Förutom ändringar i nyckelrelaterade parametrar använder du samma parametrar som användes för att skapa arbetsytan.
Viktigt!
Om du roterar nyckeln måste du ha den gamla nyckeln tillgänglig i 24 timmar.
Använd en mall med Azure Portal
Så här använder du mallen i Azure Portal för att skapa eller uppdatera en arbetsyta:
Gå till sidan Anpassad distribution .
Klicka på Skapa en egen mall i redigeraren.
Klistra in I JSON.
Klicka på Spara.
Fyll i parametrarna.
Om du vill uppdatera en befintlig arbetsyta använder du samma parametrar som du använde för att skapa arbetsytan. Lägg till de tre nyckelrelaterade parametrarna för att lägga till en nyckel för första gången. Om du vill rotera nyckeln ändrar du några eller alla nyckelrelaterade parametrar. Kontrollera att resursgruppens namn och arbetsytans namn är identiska med din befintliga arbetsyta. Om de är desamma uppdaterar det här kommandot den befintliga arbetsytan i stället för att skapa en ny arbetsyta.
Förutom ändringar i nyckelrelaterade parametrar använder du samma parametrar som användes för att skapa arbetsytan.
Klicka på Granska + Skapa.
Om det inte finns några verifieringsproblem klickar du på Skapa.
Viktigt!
Om du roterar nyckeln måste du ha den gamla nyckeln tillgänglig i 24 timmar.
Mer information finns i Azure-artikeln Snabbstart: Skapa och distribuera ARM-mallar med hjälp av Azure Portal.
Steg 4 (valfritt): Importera notebook-filer igen
När du först har lagt till en nyckel för hanterade tjänster för en befintlig arbetsyta använder endast framtida skrivåtgärder din nyckel. Befintliga data krypteras inte igen.
Du kan exportera alla notebook-filer och sedan importera dem igen så att nyckeln som krypterar data skyddas och styrs av din nyckel. Du kan använda API:er för export och import av arbetsyta.
Rotera nyckeln vid ett senare tillfälle
Om du redan använder en kundhanterad nyckel för hanterade tjänster kan du uppdatera arbetsytan med en ny nyckelversion eller en helt ny nyckel. Detta kallas nyckelrotation.
Skapa en ny nyckel eller rotera din befintliga nyckel i Nyckelvalvet. Se Steg 1: Konfigurera ett Key Vault.
Kontrollera att den nya nyckeln har rätt behörigheter.
Bekräfta att mallen har rätt API-version. Den måste vara lika med eller högre än
2021-04-01-preview
.Uppdatera arbetsytan med din nya nyckel med hjälp av portalen, CLI eller PowerShell. Se Steg 3: Lägg till en nyckel till en arbetsyta och följ anvisningarna för uppdatering av arbetsytor. Se till att du använder samma värden för resursgruppens namn och arbetsytans namn så att den uppdaterar den befintliga arbetsytan i stället för att skapa en ny arbetsyta. Förutom ändringar i nyckelrelaterade parametrar använder du samma parametrar som användes för att skapa arbetsytan.
Viktigt!
Om du roterar nyckeln måste du ha den gamla nyckeln tillgänglig i 24 timmar.
Du kan också exportera och importera befintliga notebook-filer igen för att säkerställa att alla dina befintliga notebook-filer använder den nya nyckeln.
Felsökning
Oavsiktlig borttagning av en nyckel
Om du tar bort din nyckel i Azure Key Vault börjar inloggningen på arbetsytan misslyckas och inga notebook-filer kan läsas av Azure Databricks. För att undvika detta rekommenderar vi att du aktiverar mjuka borttagningar. Det här alternativet säkerställer att en nyckel kan återställas inom 30 dagar om den tas bort. Om mjuk borttagning är aktiverat kan du lösa problemet genom att bara aktivera nyckeln igen.
Fel vid uppdatering av nyckel på grund av Key Vault-behörigheter
Om du har problem med att skapa din arbetsyta kontrollerar du om ditt Key Vault har rätt behörigheter. Felet som returneras från Azure kanske inte anger detta korrekt som rotorsak. De behörigheter som krävs är get
också , wrapKey
och unwrapKey
. Se Steg 1: Konfigurera ett Key Vault.
Förlorade nycklar kan inte återställas
Om du förlorar din nyckel och inte kan återställa den går det inte att återställa notebook-data som krypterats med nyckeln.