Identitets- och nyckelhantering för TDE med kundhanterade nycklar på databasnivå

gäller för:Azure SQL Database

Not

  • TDE CMK på databasnivå är tillgängligt för Azure SQL Database (alla SQL Database-utgåvor). Den är inte tillgänglig för Azure SQL Managed Instance, SQL Server lokalt, virtuella Azure-datorer och Azure Synapse Analytics (dedikerade SQL-pooler (tidigare SQL DW)).
  • Samma guide kan användas för att konfigurera kundhanterade nycklar på databasnivå i samma klientorganisation genom att undanta parametern federerat klient-ID. Mer information om kundhanterade nycklar på databasnivå finns i Transparent datakryptering (TDE) med kundhanterade nycklar på databasnivå.

I den här guiden går vi igenom stegen för att skapa, uppdatera och hämta en Azure SQL Database med transparent datakryptering (TDE) och kundhanterade nycklar (CMK) på databasnivå, med hjälp av en användartilldelad hanterad identitet för åtkomst Azure Key Vault-. Azure Key Vault finns i en annan Microsoft Entra-klientorganisation än Azure SQL Database. För mer information, se kundhanterade nycklar mellan klienter med transparent datakryptering.

Not

Microsoft Entra ID tidigare kallades Azure Active Directory (Azure AD).

Förutsättningar

Nödvändiga resurser för den första klientorganisationen

I den här handledningen förutsätter vi att den första klientorganisationen tillhör en oberoende programvaruleverantör (ISV) och att den andra klientorganisationen kommer från deras kund. För mer information om det här scenariot, se kundhanterade nycklar mellan olika klienter med transparent datakryptering.

Innan vi kan konfigurera TDE för Azure SQL Database med en CMK för flera klientorganisationer måste vi ha ett Microsoft Entra-program med flera klienter som har konfigurerats med en användartilldelad hanterad identitet tilldelad som en federerad identitetsautentiseringsuppgift för programmet. Följ någon av guiderna i Förberedelser.

  1. I den första klientorganisationen där du vill skapa Azure SQL Database skapar och konfigurerar du ett Microsoft Entra-program med flera klienter.

  2. Skapa en användartilldelad hanterad identitet.

  3. Konfigurera den användartilldelade hanterade identiteten som en federerad identitetsautentiseringsuppgift för programmet för flera klientorganisationer.

  4. Registrera programnamnet och program-ID:t. Hitta denna information i Azure-portalen>. Microsoft Entra ID>Enterprise-applikationer och sök efter den skapade applikationen.

Nödvändiga resurser för den andra hyresgästen

Not

Azure AD- och MSOnline PowerShell-moduler är inaktuella från och med den 30 mars 2024. Mer information finns i utfasningsuppdatering. Efter det här datumet är stödet för dessa moduler begränsat till migreringshjälp till Microsoft Graph PowerShell SDK och säkerhetskorrigeringar. De inaktuella modulerna fortsätter att fungera till och med mars 30 2025.

Vi rekommenderar att du migrerar till Microsoft Graph PowerShell- för att interagera med Microsoft Entra-ID (tidigare Azure AD). Vanliga frågor om migrering finns i Migrering FAQ. Obs! version 1.0.x av MSOnline kan uppleva störningar efter den 30 juni 2024.

  1. I den andra klientorganisationen där Azure Key Vault ligger, skapa ett tjänstens huvudnamn (program) genom att använda program-ID:t från det registrerade programmet i den första klientorganisationen. Här är några exempel på hur man registrerar multitenant-applikationen. Ersätt <TenantID> och <ApplicationID> med klient-ID Tenant ID från Microsoft Entra-ID och med program-ID Application ID från många klienters applikation:

    • PowerShell:

      Connect-Entra -TenantID <TenantID>
      New-EntraServicePrincipal  -AppId <ApplicationID>
      
    • Azure CLI-:

      az login --tenant <TenantID>
      az ad sp create --id <ApplicationID>
      
  2. Gå till Azure-portalen>Microsoft Entra-ID>företagsprogram och sök efter programmet som har skapats.

  3. Skapa en Azure Key Vault om du inte har en och skapa en nyckel.

  4. Skapa eller ange åtkomstprincipen.

    1. Välj behörigheterna Get, Wrap Key, Unwrap Key under Nyckelbehörigheter när du skapar åtkomstprincipen.
    2. Välj den multitenant-applikation som skapades i det första steget i alternativet Principal när du skapar åtkomstprincipen.

    Skärmbild av åtkomstpolicymenyn i Azure Key Vault i Azure-portalen.

  5. Efter att du skapat åtkomstpolicyn och nyckeln, hämta nyckeln från Azure Key Vault och registrera nyckelidentifieraren.

Skapa en ny Azure SQL Database med kundhanterade nycklar på databasnivå

Följande exempel visar hur man skapar en databas på Azure SQL Database med en användartilldelad hanterad identitet och hur man sätter en kundhanterad nyckel över flera hyresgäster på databasnivå. Du behöver den användartilldelade hanterade identiteten för att konfigurera en kundhanterad nyckel för transparent datakryptering under databasens skapandefas.

  1. Gå till Azure SQL Hub på aka.ms/azuresqlhub.

  2. På resursmenyn expanderar du Azure SQL Database och väljer SQL-databaser.

  3. Från rullgardinsmenyn + Skapa väljer du SQL-databas.

    Skärmbild från Azure-portalen som visar sidan SQL-databaser, knappen Skapa och alternativet SQL-databas.

  4. På fliken Grundläggande i formuläret Skapa SQL Database, under Projektinformationväljer du önskad Azure -prenumeration, resursgruppoch Server för databasen. Använd sedan ett unikt namn för ditt -databasnamn. Om du inte har skapat en logisk server för Azure SQL Database, se Skapa server som konfigurerats med TDE och kundhanterad nyckel som är gemensam för flera klientorganisationer (CMK) för referens.

  5. När du kommer till fliken Säkerhet väljer du Konfigurera transparent datakryptering för nyckeln på databasnivå.

    Skärmbild av Azure-portalen och säkerhetsmenyn när du skapar en Azure SQL Database.

  6. På menyn Transparent datakryptering väljer du kundhanterad nyckel (CMK) på databasnivå.

    Skärmbild av menyn transparent datakryptering i Azure-portalen.

  7. För användartilldelad hanterad identitet, välj Konfigurera för att aktivera en Databasidentitet och Lägg till en användartilldelad hanterad identitet i resursen om den identitet du vill använda inte visas på menyn Identitet. Välj sedan Använd.

    Skärmbild av identitetsmenyn i Azure-portalen.

    Not

    Du kan konfigurera den federerade klientidentiteten här om du konfigurerar CMK över klientorganisationer för TDE.

  8. På menyn Transparent datakryptering väljer du Ändra nyckel. Välj önskad Prenumeration, Key Vault, Keyoch Version för den kundhanterade nyckel som ska användas för TDE. Välj knappen Välj. När du har valt en nyckel kan du också lägga till ytterligare databasnycklar efter behov med hjälp av Azure Key vault-URI (objektidentifierare) i menyn Transparent datakryptering.

    Automatisk nyckelrotation kan också aktiveras på databasnivå med hjälp av kryssrutan Rotera nyckel automatiskt på menyn Transparent datakryptering.

    Skärmbild av menyn för transparent datakryptering i Azure-portalen som refererar till att lägga till ytterligare nycklar.

  9. Välj Använd för att fortsätta skapa databasen.

  10. Välj Nästa: Ytterligare inställningar.

  11. Välj Nästa: Taggar.

  12. Överväg att använda Azure-taggar. Till exempel taggen "Ägare" eller "CreatedBy" för att identifiera vem som skapade resursen och taggen Miljö för att identifiera om den här resursen finns i Produktion, Utveckling osv. Mer information finns i Utveckla din namngivnings- och taggningsstrategi för Azure-resurser.

  13. Välj Förhandsgranska + skapa.

  14. På sidan Granska + skapa, efter att ha granskat, väljer du Skapa.

Not

Det går inte att skapa databasen om den användartilldelade hanterade identiteten inte har rätt behörigheter aktiverade i nyckelvalvet. Den användartilldelade hanterade identiteten måste ha behörigheterna Get, wrapKey och unwrapKey i nyckelvalvet. Mer information finns i Hanterade identiteter för transparent datakryptering med kundhanterad nyckel.

Uppdatera en befintlig Azure SQL Database med kundhanterade nycklar på databasnivå

Följande exempel visar hur man uppdaterar en befintlig databas i Azure SQL Database med en användartilldelad hanterad identitet och hur man sätter en kundhanterad nyckel över flera hyresgäster på databasnivå. Du behöver en användartilldelad hanterad identitet för att skapa en kundhanterad nyckel för transparent datakryptering.

Information om hur du installerar den aktuella versionen av Azure CLI finns i artikeln Installera Azure CLI.

Uppdatera en databas som är konfigurerad med användartilldelad hanterad identitet och kundhanterad TDE över olika klientorganisationer med hjälp av kommandot az sql db create. nyckelidentifier från den andra klientorganisationen kan användas i fältet encryption-protector. Program-ID:t för multitenant-applikationen kan användas i fältet federated-client-id.

Om du vill få tag på din användartilldelade hanterade identitet resurs-ID, söker du efter hanterade identiteter i Azure-portalen. Hitta din hanterade identitet och gå till Egenskaper. Ett exempel på ditt UMI-resurs-ID ser ut som /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>. Parametern --encryption-protector-auto-rotation kan användas för att aktivera automatisk nyckelrotation på databasnivå.

az sql db update --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --sample-name AdventureWorksLT --edition GeneralPurpose --compute-model Serverless --family Gen5 --capacity 2 --assign-identity --user-assigned-identity-id $identityid --encryption-protector $keyid --federated-client-id $federatedclientid --keys $keys --keys-to-remove $keysToRemove --encryption-protector-auto-rotation True

Listan $keys är en blankstegsavgränsad lista över nycklar som ska läggas till i databasen och $keysToRemove är en blankstegsavgränsad lista med nycklar som måste tas bort från databasen

$keys = '"https://yourvault.vault.azure.net/keys/yourkey1/6638b3667e384aefa31364f94d230000" "https://yourvault.vault.azure.net/keys/yourkey2/ fd021f84a0d94d43b8ef33154bca0000"'

$keysToRemove = '"https://yourvault.vault.azure.net/keys/yourkey3/6638b3667e384aefa31364f94d230000" "https://yourvault.vault.azure.net/keys/yourkey4/fd021f84a0d94d43b8ef33154bca0000"'

Visa kundhanterade nyckelinställningar på databasnivå i en Azure SQL Database

Följande är exempel på hur du hämtar kundhanterade nycklar på databasnivå för en databas. ARM-resursen Microsoft.Sql/servers/databases som standard visar bara TDE-skyddet och den hanterade identitet som konfigurerats i databasen. Om du vill expandera den fullständiga listan med nycklar använder du parametern -ExpandKeyList. Dessutom kan filter som -KeysFilter "current" och ett tidsvärde (till exempel 2023-01-01) användas för att hämta de aktuella nycklar som använts och nycklar som använts tidigare vid en viss tidpunkt. Dessa filter stöds endast för enskilda databasfrågor och inte för frågor på servernivå.

Information om hur du installerar den aktuella versionen av Azure CLI finns i artikeln Installera Azure CLI.

# Retrieve the basic database level customer-managed key settings from a database
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase

# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys

# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter current

# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter 01-01-2015

# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
az sql db list --resource-group $resourceGroupName --server $serverName

Visa en lista över alla nycklar på en logisk server

Om du vill hämta listan över alla nycklar (och inte bara det primära skyddet) som används av varje databas under servern, måste den frågas individuellt med nyckelfiltren. Följande är ett exempel på en PowerShell-fråga för att lista varje nyckel under den logiska servern.

Använd cmdleten Get-AzSqlDatabase.

$dbs = Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName>
foreach ($db in $dbs)
{
Get-AzSqlDatabase -DatabaseName $db.DatabaseName -ServerName $db.ServerName -ResourceGroupName $db.ResourceGroupName -ExpandKeyList
}

Återskapa kundhanterad nyckel på databasnivå i en Azure SQL Database

Om TDE-skyddet är otillgängligt enligt Azure SQL transparent datakryptering med kundhanterad nyckel, blir databasen otillgänglig. Efter att du har fixat nyckelåtkomst, använd funktionen att validera nyckeln igen för att göra databasen tillgänglig igen. Följande kommandon ger exempel.

Information om hur du installerar den aktuella versionen av Azure CLI finns i artikeln Installera Azure CLI.

az sql db tde key revalidate --resource-group $resourceGroupName --server $serverName --database mySampleDatabase

Återställ kundhanterad nyckel på databasnivå i en Azure SQL Database

En databas som konfigurerats med cmk på databasnivå kan återställas till kryptering på servernivå om servern har konfigurerats med en tjänsthanterad nyckel med hjälp av följande kommandon.

Information om hur du installerar den aktuella versionen av Azure CLI finns i artikeln Installera Azure CLI.

az sql db tde key revert --resource-group $resourceGroupName --server $serverName --name mySampleDatabase