Dela via


Aktivera kundhanterade nycklar för hanterade tjänster

Kommentar

Den här funktionen kräver Premium-planen.

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:

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

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

  1. 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.
  2. Hämta objekt-ID för AzureDatabricks-programmet :
    1. Gå till Microsoft Entra ID i Azure Portal.
    2. Välj Företagsprogram på marginallistmenyn.
    3. Sök AzureDatabricks efter och klicka på Enterprise-programmet i resultatet.
    4. Kopiera objekt-ID:t från Egenskaper.
  3. Lägg till en åtkomstprincip i Key Vault med hjälp av Azure Portal:
    1. 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.

    2. Klicka på fliken Åtkomstprinciper i panelen till vänster.

    3. Välj knappen Skapa längst upp på sidan.

    4. Under avsnittet Nyckelbehörigheter på fliken Behörigheter aktiverar du Hämta, Packa upp nyckeln och Packa nyckeln.

    5. Klicka på Nästa.

    6. På fliken Huvudnamn skriver AzureDatabricks och bläddrar du till det första enterprise-programresultatet som har ett program-ID 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d för och väljer det.

      Välj AzureDatabricks-programmet med ID 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d

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

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

  2. 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
    
  3. 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

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

  1. Gå till startsidan för Azure-portalen.

  2. Klicka på Skapa en resurs i det övre vänstra hörnet på sidan.

  3. I sökfältet skriver Azure Databricks du och klickar på alternativet Azure Databricks .

  4. Klicka på Skapa i Azure Databricks-widgeten.

  5. Ange värden för indatafälten på flikarna Grundläggande och Nätverk.

  6. 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.
  7. Ange krypteringsfälten.

    Visa fält i avsnittet Hanterade diskar på Azure Databricks-bladet

    • 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.
  8. 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

  1. 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 programmets AzureDatabricks objekt-ID.

    az keyvault set-policy -n <key-vault-name> \
                           --key-permissions get wrapKey unwrapKey  \
                           --object-id <object-id>
    
  2. 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: Nyckelnamn
    • managed-services-key-vault: Nyckelvalvs-URI
    • managed-services-key-version: Nyckelversion. Använd den specifika nyckelversionen och inte latest.

    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: Nyckelnamn
  • ManagedServicesKeyVaultPropertiesKeyVaultUri: Nyckel-URI
  • ManagedServicesKeyVaultPropertiesKeyVersion: Nyckelversion. Använd den specifika nyckelversionen och inte latest.

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:

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

    1. Lägg till avsnittet resources.properties.encryption från mallen.
    2. I avsnittet parameters lägger du till tre nya parametrar keyvaultUri, keyNameoch keyVersion från mallen.
    3. I avsnittet parameters tar du bort "type": "string", från mallen.
  2. 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:

  1. Gå till sidan Anpassad distribution .

  2. Klicka på Skapa en egen mall i redigeraren.

  3. Klistra in I JSON.

  4. Klicka på Spara.

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

  6. Klicka på Granska + Skapa.

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

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

  2. Bekräfta att mallen har rätt API-version. Den måste vara lika med eller högre än 2021-04-01-preview.

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

  4. 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 getockså , wrapKeyoch 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.