CmK na úrovni databáze je k dispozici pro Azure SQL Database (všechny edice SQL Database). Není k dispozici pro azure SQL Managed Instance, místní SQL Server, virtuální počítače Azure a Azure Synapse Analytics (vyhrazené fondy SQL (dříve SQL DW)).
Stejnou příručku můžete použít ke konfiguraci klíčů spravovaných zákazníkem na úrovni databáze ve stejném tenantovi tak, že vyloučíte parametr ID federovaného klienta. Další informace o klíčích spravovaných zákazníkem na úrovni databáze najdete v tématu Transparentní šifrování dat (TDE) s klíči spravovanými zákazníkem na úrovni databáze.
ID Microsoft Entra se dříve označovalo jako Azure Active Directory (Azure AD).
Požadavky
V této příručce se předpokládá, že máte dva tenanty Microsoft Entra.
První se skládá z prostředku azure SQL Database, víceklientové aplikace Microsoft Entra a spravované identity přiřazené uživatelem.
Druhý tenant je ve službě Azure Key Vault.
Podrobné pokyny k nastavení klíče CMK mezi tenanty a oprávnění RBAC potřebných ke konfiguraci aplikací Microsoft Entra a služby Azure Key Vault najdete v jednom z následujících průvodců:
Oprávnění RBAC potřebná pro cmK na úrovni databáze jsou stejná oprávnění, která jsou nutná pro cmk na úrovni serveru. Konkrétně platí stejná oprávnění RBAC, která platí pro použití služby Azure Key Vault, spravovaných identit a klíče CMK mezi tenanty pro transparentní šifrování dat na úrovni serveru, platí na úrovni databáze. Další informace o správě klíčů a zásadách přístupu najdete v tématu Správa klíčů.
Než budeme moct nakonfigurovat transparentní šifrování dat pro Azure SQL Database pomocí klíče CMK mezi tenanty, musíme mít víceklientskou aplikaci Microsoft Entra, která je nakonfigurovaná se spravovanou identitou přiřazenou uživatelem přiřazenou jako přihlašovací údaje federované identity pro aplikaci. Postupujte podle jednoho z průvodců v části Požadavky.
V prvním tenantovi, ve kterém chcete vytvořit službu Azure SQL Database, vytvořte a nakonfigurujte aplikaci Microsoft Entra s více tenanty.
Poznamenejte si název aplikace a ID aplikace. Najdete ji na webu Azure Portal>v podnikových aplikacích Microsoft Entra ID>a vyhledejte vytvořenou aplikaci.
Požadované prostředky ve druhém tenantovi
Poznámka:
Moduly Azure AD a MSOnline PowerShell jsou od 30. března 2024 zastaralé. Další informace najdete v aktualizaci vyřazení. Po tomto datu je podpora těchto modulů omezená na pomoc s migrací na sadu Microsoft Graph PowerShell SDK a opravy zabezpečení. Zastaralé moduly budou dál fungovat až do 30. března 2025.
Doporučujeme migrovat na Microsoft Graph PowerShell , abyste mohli pracovat s Microsoft Entra ID (dříve Azure AD). Běžné dotazy k migraci najdete v nejčastějších dotazech k migraci.
Poznámka: Verze 1.0.x msOnline mohou dojít k přerušení po 30. červnu 2024.
Ve druhém tenantovi, ve kterém se nachází služba Azure Key Vault, vytvořte instanční objekt (aplikaci) pomocí ID aplikace z registrované aplikace z prvního tenanta. Tady je několik příkladů, jak zaregistrovat aplikaci s více tenanty. Nahraďte a nahraďte <TenantID> ID<ApplicationID>z Microsoft Entra ID a ID aplikace z aplikace s více tenanty, v uvedeném pořadí:
Vytvoření nové služby Azure SQL Database s využitím klíčů spravovaných zákazníkem na úrovni databáze
Následuje příklad vytvoření databáze ve službě Azure SQL Database se spravovanou identitou přiřazenou uživatelem a nastavení klíče spravovaného zákazníkem napříč tenanty na úrovni databáze. Spravovaná identita přiřazená uživatelem se vyžaduje k nastavení klíče spravovaného zákazníkem pro transparentní šifrování dat během fáze vytváření databáze.
Až se dostanete na kartu Zabezpečení , vyberte Konfigurovat transparentní šifrování dat.
V nabídce Transparentní šifrování dat vyberte klíč spravovaný zákazníkem na úrovni databáze (CMK).
Pokud chcete spravovanou identitu přiřazenou uživatelem povolit, vyberte Konfigurovat a přidejte do prostředku spravovanou identitu přiřazenou uživatelem, pokud požadovaná identita není v nabídce Identita v seznamu Identita. Potom vyberte Použít.
V nabídce Transparentní šifrování dat vyberte Změnit klíč. Vyberte požadované předplatné, trezor klíčů, klíč a verzi klíče spravovaného zákazníkem, který se má použít pro transparentní šifrování dat. Zvolte tlačítko Vybrat. Po výběru klíče můžete podle potřeby přidat další databázové klíče pomocí identifikátoru URI služby Azure Key Vault (identifikátor objektu) v nabídce Transparentní šifrování dat.
Automatická obměna klíčů je také možné povolit na úrovni databáze pomocí zaškrtávacího políčka Automaticky otočit klíč v nabídce Transparentní šifrování dat.
Chcete-li pokračovat ve vytváření databáze, vyberte Použít .
V dolní části stránky vyberte Zkontrolovat a vytvořit .
Na stránce Zkontrolovat a vytvořit vyberte po kontrole možnost Vytvořit.
Poznámka:
Vytvoření databáze selže, pokud spravovaná identita přiřazená uživatelem nemá pro trezor klíčů povolená správná oprávnění. Spravovaná identita přiřazená uživatelem bude potřebovat oprávnění Get, wrapKey a unwrapKey v trezoru klíčů. Další informace najdete v tématu Spravované identity pro transparentní šifrování dat pomocí klíče spravovaného zákazníkem.
Vytvořte databázi nakonfigurovanou pomocí spravované identity přiřazené uživatelem a transparentního šifrování dat spravovaného zákazníkem napříč tenanty pomocí příkazu az sql db create . Identifikátor klíče z druhého tenanta se dá použít v encryption-protector poli. ID aplikace s více tenanty je možné použít v federated-client-id poli. Tento --encryption-protector-auto-rotation parametr lze použít k povolení automatické obměně klíčů na úrovni databáze.
Pokud chcete získat ID prostředku spravované identity přiřazené uživatelem, na webu Azure Portal vyhledejte spravované identity. Vyhledejte spravovanou identitu a přejděte na Vlastnosti. Příklad ID prostředku UMI vypadá takto:/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
Vytvořte databázi nakonfigurovanou pomocí spravované identity přiřazené uživatelem a transparentního šifrování dat spravovaného zákazníkem napříč tenanty na úrovni databáze pomocí PowerShellu.
<ResourceGroupName>: Název skupiny prostředků pro logický server Azure SQL
<DatabaseName>: Použití jedinečného názvu databáze Azure SQL
<ServerName>: Použití jedinečného názvu logického serveru Azure SQL
<UserAssignedIdentityId>: Seznam spravovaných identit přiřazených uživatelem, které se mají přiřadit k serveru (může to být jedna nebo více)
<CustomerManagedKeyId>: Identifikátor klíče z druhého trezoru klíčů tenanta
<FederatedClientId>: ID aplikace s více tenanty
-EncryptionProtectorAutoRotation: Lze použít k povolení automatické obměně klíčů na úrovni databáze.
Pokud chcete získat ID prostředku spravované identity přiřazené uživatelem, na webu Azure Portal vyhledejte spravované identity. Vyhledejte spravovanou identitu a přejděte na Vlastnosti. Příklad ID prostředku UMI vypadá takto:/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
# create a server with user-assigned managed identity and cross-tenant customer-managed TDE with automatic key rotation enabled
$params = @{
ResourceGroupName = '<ResourceGroupName>'
ServerName = '<ServerName>'
DatabaseName = '<DatabaseName>'
AssignIdentity = $true
UserAssignedIdentityId = '<UserAssignedIdentityId>'
EncryptionProtector = '<CustomerManagedKeyId>'
FederatedClientId = '<FederatedClientId>'
EncryptionProtectorAutoRotation = $true
}
New-AzSqlDatabase @params
Tady je příklad šablony ARM, která vytvoří službu Azure SQL Database se spravovanou identitou přiřazenou uživatelem a transparentním šifrováním dat spravovaným zákazníkem na úrovni databáze. V případě klíče CMK mezi tenanty použijte identifikátor klíče z druhého trezoru klíčů tenanta a ID aplikace z aplikace s více tenanty.
Použití vlastního nasazení na webu Azure Portal a vytvoření vlastní šablony v editoru V dalším kroku uložte konfiguraci po vložení v příkladu.
Pokud chcete získat ID prostředku spravované identity přiřazené uživatelem, na webu Azure Portal vyhledejte spravované identity. Vyhledejte spravovanou identitu a přejděte na Vlastnosti. Příklad ID prostředku UMI /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
Aktualizace existující služby Azure SQL Database pomocí klíčů spravovaných zákazníkem na úrovni databáze
Tady jsou příklady aktualizace existující databáze ve službě Azure SQL Database pomocí spravované identity přiřazené uživatelem a nastavení klíče spravovaného zákazníkem napříč tenanty na úrovni databáze. Spravovaná identita přiřazená uživatelem se vyžaduje k nastavení klíče spravovaného zákazníkem pro transparentní šifrování dat během fáze vytváření databáze.
Na webu Azure Portal přejděte k prostředku databáze SQL, který chcete aktualizovat pomocí klíče spravovaného zákazníkem na úrovni databáze.
V části Zabezpečení vyberte Identita. Přidejte spravovanou identitu přiřazenou uživatelem pro tuto databázi a pak vyberte Uložit.
Teď přejděte do nabídky Šifrování dat v části Zabezpečení databáze. Vyberte klíč spravovaný zákazníkem na úrovni databáze (CMK). Identita databáze pro databázi by už měla být povolená, protože jste v posledním kroku nakonfigurovali identitu.
Vyberte Změnit klíč. Vyberte požadované předplatné, trezor klíčů, klíč a verzi klíče spravovaného zákazníkem, který se má použít pro transparentní šifrování dat. Zvolte tlačítko Vybrat. Po výběru klíče můžete podle potřeby přidat další databázové klíče pomocí identifikátoru URI služby Azure Key Vault (identifikátor objektu) v nabídce Šifrování dat.
Aktualizujte databázi nakonfigurovanou pomocí spravované identity přiřazené uživatelem a transparentního šifrování dat spravovaného zákazníkem napříč tenanty pomocí příkazu az sql db create . Identifikátor klíče z druhého tenanta se dá použít v encryption-protector poli. ID aplikace s více tenanty je možné použít v federated-client-id poli.
Pokud chcete získat ID prostředku spravované identity přiřazené uživatelem, na webu Azure Portal vyhledejte spravované identity. Vyhledejte spravovanou identitu a přejděte na Vlastnosti. Příklad ID prostředku UMI /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity> Tento --encryption-protector-auto-rotation parametr lze použít k povolení automatické obměně klíčů na úrovni databáze.
Seznam $keys je seznamem klíčů oddělených mezerami, které se mají přidat do databáze, a $keysToRemove jedná se o seznam klíčů oddělených mezerami, které je potřeba z databáze odebrat.
Aktualizujte databázi nakonfigurovanou pomocí spravované identity přiřazené uživatelem a transparentního šifrování dat spravovaného zákazníkem napříč tenanty na úrovni databáze pomocí PowerShellu.
<ResourceGroupName>: Název skupiny prostředků pro logický server Azure SQL
<DatabaseName>: Použití jedinečného názvu databáze Azure SQL
<ServerName>: Použití jedinečného názvu logického serveru Azure SQL
<UserAssignedIdentityId>: Seznam spravovaných identit přiřazených uživatelem, které se mají přiřadit k serveru (může to být jedna nebo více)
<CustomerManagedKeyId>: Identifikátor klíče z druhého trezoru klíčů tenanta
<FederatedClientId>: ID aplikace s více tenanty
<ListOfKeys>: Čárkami oddělený seznam klíčů spravovaných zákazníkem na úrovni databáze, které se mají přidat do databáze.
<ListOfKeysToRemove>: Čárkami oddělený seznam klíčů spravovaných zákazníkem na úrovni databáze, které se mají z databáze odebrat.
-EncryptionProtectorAutoRotation: Lze použít k povolení automatické obměně klíčů na úrovni databáze.
Pokud chcete získat ID prostředku spravované identity přiřazené uživatelem, na webu Azure Portal vyhledejte spravované identity. Vyhledejte spravovanou identitu a přejděte na Vlastnosti. Příklad ID prostředku UMI /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
Tady je příklad šablony ARM, která aktualizuje službu Azure SQL Database pomocí spravované identity přiřazené uživatelem a transparentního šifrování dat spravovaného zákazníkem na úrovni databáze. V případě klíče CMK mezi tenanty použijte identifikátor klíče z druhého trezoru klíčů tenanta a ID aplikace z aplikace s více tenanty.
Použití vlastního nasazení na webu Azure Portal a vytvoření vlastní šablony v editoru V dalším kroku uložte konfiguraci po vložení v příkladu.
Pokud chcete získat ID prostředku spravované identity přiřazené uživatelem, na webu Azure Portal vyhledejte spravované identity. Vyhledejte spravovanou identitu a přejděte na Vlastnosti. Příklad ID prostředku UMI /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
Chcete-li odebrat klíč z databáze, musí být hodnota slovníku klíčů určitého klíče předána jako null. Například "https://yourvault.vault.azure.net/keys/yourkey1/fd021f84a0d94d43b8ef33154bca0000": null.
Zobrazení nastavení klíče spravovaného zákazníkem na úrovni databáze ve službě Azure SQL Database
Následuje příklad načtení klíčů spravovaných zákazníkem na úrovni databáze pro databázi. Prostředek Microsoft.Sql/servers/databases ARM ve výchozím nastavení zobrazuje pouze ochranu transparentním šifrováním dat a spravovanou identitu nakonfigurovanou v databázi. Chcete-li rozbalit úplný seznam klíčů, použijte parametr , -ExpandKeyList. Kromě toho je možné použít filtry, jako -KeysFilter "current" je hodnota k určitému bodu v čase (například 2023-01-01) k načtení aktuálních klíčů použitých a klíčů použitých v minulosti v určitém časovém okamžiku. Tyto filtry jsou podporovány pouze pro jednotlivé databázové dotazy, a ne pro dotazy na úrovni serveru.
# 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
# Retrieve the basic database level customer-managed key settings from a database
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName>
# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList
# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter "current"
# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter '2023-02-03 00:00:00'
# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName> | Select DatabaseName, EncryptionProtector
Použijte rozhraní REST API verze 2022-08-01-preview pro Azure SQL Database.
Načtěte základní nastavení klíče spravovaného zákazníkem na úrovni databáze z databáze.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview
Načtení nastavení klíče spravovaného zákazníkem na základní úrovni databáze z databáze a všech přidaných klíčů
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys
Načtení základního nastavení klíče spravovaného zákazníkem na úrovni databáze z databáze a aktuálních klíčů, které se používají
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('current'))
Načtení základního nastavení klíče spravovaného zákazníkem na úrovni databáze z databáze a klíčů, které se používají v určitém časovém okamžiku
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('2023-02-04T01:57:42.49Z'))
Výpis všech klíčů na logickém serveru
Pokud chcete načíst seznam všech klíčů (nejen primární ochrany) používaných jednotlivými databázemi na serveru, musí být dotazován jednotlivě pomocí filtrů klíčů. Následuje příklad dotazu PowerShellu, který vypíše každý klíč pod logickým serverem.
Obnovení klíče spravovaného zákazníkem na úrovni databáze ve službě Azure SQL Database
V případě nepřístupné ochrany transparentním šifrováním dat, jak je popsáno v transparentní šifrování dat (TDE) s CMK, je možné po opravě přístupu ke klíči použít operaci opětovného ověření klíče, aby byla databáze přístupná. Příklady najdete v následujících pokynech nebo příkazech.
Pomocí webu Azure Portal vyhledejte prostředek databáze SQL. Jakmile vyberete prostředek databáze SQL, přejděte na kartu transparentní šifrování dat nabídky Šifrování dat v části Nastavení zabezpečení. Pokud databáze ztratila přístup ke službě Azure Key Vault, zobrazí se tlačítko Znovu obnovit klíč a vy budete mít možnost znovu obnovit stávající klíč výběrem možnosti Opakovat existující klíč nebo jiný klíč výběrem možnosti Vybrat záložní klíč.
Použijte rozhraní REST API verze 2022-08-01-preview pro Azure SQL Database.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revalidate?api-version=2022-08-01-preview
Vrácení klíče spravovaného zákazníkem na úrovni databáze ve službě Azure SQL Database
Databáze nakonfigurovaná pomocí klíče CMK na úrovni databáze se dá vrátit k šifrování na úrovni serveru, pokud je server nakonfigurovaný pomocí klíče spravovaného službou pomocí následujících příkazů.
Pokud chcete vrátit nastavení klíče spravovaného zákazníkem na úrovni databáze na úrovni serveru na webu Azure Portal, přejděte na kartu transparentní šifrování dat v nabídce Šifrování dat prostředku databáze SQL. Vyberte šifrovací klíč na úrovni serveru a výběrem možnosti Uložit uložte nastavení.
Poznámka:
Aby bylo možné použít nastavení šifrovacího klíče na úrovni serveru pro jednotlivé databáze, musí být logický server pro službu Azure SQL Database nakonfigurovaný tak, aby pro transparentní šifrování dat používal klíč spravovaný službou.
Použijte rozhraní REST API verze 2022-08-01-preview pro Azure SQL Database.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revert?api-version=2022-08-01-preview
Další kroky
Projděte si následující dokumentaci k různým operacím CMK na úrovni databáze: