Sdílet prostřednictvím


Konfigurace funkce Always Encrypted pomocí PowerShellu

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed Instance

Modul SqlServer PowerShell poskytuje rutiny pro konfiguraci Always Encrypted v Azure SQL Database nebo SQL Serveru.

Důležité informace o zabezpečení při použití PowerShellu ke konfiguraci funkce Always Encrypted

Vzhledem k tomu, že primárním cílem funkce Always Encrypted je zajistit, aby šifrovaná citlivá data byla bezpečná, i když dojde k ohrožení databázového systému, spuštění skriptu PowerShellu, který zpracovává klíče nebo citlivá data na počítači s SQL Serverem, může snížit nebo porazit výhody této funkce. Další doporučení související se zabezpečením najdete v tématu Aspekty zabezpečení pro správu klíčů.

PowerShell můžete použít ke správě klíčů Always Encrypted jak s oddělením rolí, tak bez oddělení rolí, abyste měli kontrolu nad tím, kdo má přístup k skutečným šifrovacím klíčům v úložišti klíčů a kdo má přístup k databázi.

Další doporučení najdete v tématu Aspekty zabezpečení pro správu klíčů.

Požadavky

Nainstalujte modul SqlServer PowerShell verze 22.0.50 nebo novější na zabezpečený počítač, který není počítačem hostujícím instanci SQL Serveru. Modul je možné nainstalovat přímo z galerie PowerShell. Další podrobnosti najdete v pokynech ke stažení .

Import modulu SqlServer

Načtení modulu SqlServer:

  1. K nastavení příslušných zásad spouštění skriptu použijte rutinu Set-ExecutionPolicy.
  2. K importu modulu SqlServer použijte rutinu Import-Module.

Tento příklad načte modul SqlServer.

# Import the SQL Server Module.  
Import-Module "SqlServer" -MinimumVersion 22.0.50

Připojení k databázi

Některé rutiny Always Encrypted pracují s daty nebo metadaty v databázi a vyžadují, abyste se nejprve připojili k databázi. Při konfiguraci funkce Always Encrypted pomocí modulu SqlServer existují dvě doporučené metody připojení k databázi:

  1. Připojte se pomocí rutiny Get-SqlDatabase.
  2. Připojte se pomocí zprostředkovatele POWERShellu SQL Serveru.

Použití Get-SqlDatabase

Rutina Get-SqlDatabase umožňuje připojení k databázi na SQL Serveru nebo v Azure SQL Database. Vrátí databázový objekt, který pak můžete předat pomocí InputObject parametru rutiny, která se připojuje k databázi.

Použití SQL Serveru PowerShellu

# Import the SqlServer module
Import-Module "SqlServer" -MinimumVersion 22.0.50

# Connect to your database
# Set the valid server name, database name and authentication keywords in the connection string
$serverName = "<Azure SQL server name>.database.windows.net"
$databaseName = "<database name>"
$connStr = "Server = " + $serverName + "; Database = " + $databaseName + "; Authentication = Active Directory Integrated"
$database = Get-SqlDatabase -ConnectionString $connStr

# List column master keys for the specified database.
Get-SqlColumnMasterKey -InputObject $database

Alternativně můžete použít piping:

$database | Get-SqlColumnMasterKey

Použití poskytovatele PowerShell pro SQL Server

Poskytovatel SQL Server PowerShellu zveřejňuje hierarchii objektů SYSTÉMU SQL Server v cestách podobných cestám systému souborů. Pomocí PROSTŘEDÍ SQL Server PowerShell můžete procházet cesty pomocí aliasů Windows PowerShellu podobných příkazům, které obvykle používáte k procházení cest k systému souborů. Po přechodu na cílovou instanci a databázi cílí následující rutiny na tuto databázi, jak je znázorněno v následujícím příkladu.

Poznámka

Tato metoda připojení k databázi funguje jenom pro SQL Server (nepodporuje se ve službě Azure SQL Database).

# Import the SqlServer module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
# Navigate to the database in the remote instance.
cd SQLSERVER:\SQL\servercomputer\DEFAULT\Databases\yourdatabase
# List column master keys in the above database.
Get-SqlColumnMasterKey

Alternativně můžete zadat cestu k databázi pomocí obecného parametru Cesta místo přechodu do databáze.

# Import the SqlServer module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
# List column master keys for the specified database.
Get-SqlColumnMasterKey -Path SQLSERVER:\SQL\servercomputer\DEFAULT\Databases\yourdatabase

Úlohy Always Encrypted pomocí PowerShellu

Referenční informace o cmdletu Always Encrypted

Pro Funkci Always Encrypted jsou k dispozici následující rutiny PowerShellu:

CMDLET Popis
Add-SqlAzureAuthenticationContext Provádí ověřování v Azure a získává ověřovací token.
Add-SqlColumnEncryptionKeyValue Přidá novou zašifrovanou hodnotu pro existující objekt šifrovacího klíče sloupce v databázi.
Complete-SqlColumnMasterKeyRotation Dokončí otočení hlavního klíče sloupce.
Get-SqlColumnEncryptionKey Vrátí všechny objekty šifrovacího klíče sloupce definované v databázi nebo vrátí jeden objekt šifrovacího klíče sloupce se zadaným názvem.
Get-SqlColumnMasterKey Vrátí objekty hlavního klíče sloupce definované v databázi nebo vrátí jeden objekt hlavního klíče sloupce se zadaným názvem.
Invoke-SqlColumnMasterKeyRotation Zahájí otočení hlavního klíče sloupce.
New-SqlAzureKeyVaultColumnMasterKeySettings Vytvoří objekt SqlColumnMasterKeySettings popisující asymetrický klíč uložený ve službě Azure Key Vault.
New-SqlCngColumnMasterKeySettings Vytvoří objekt SqlColumnMasterKeySettings popisující asymetrický klíč uložený v úložišti klíčů podporující rozhraní API CNG (Cryptography Next Generation).
New-SqlColumnEncryptionKey Vytvoří v databázi objekt šifrovacího klíče sloupce.
New-SqlColumnEncryptionKeyEncryptedValue Vytvoří šifrovanou hodnotu sloupcového šifrovacího klíče.
New-SqlColumnEncryptionSettings Vytvoří objekt SqlColumnEncryptionSettings, který zapouzdřuje informace o šifrování jednoho sloupce, včetně CEK a typu šifrování.
New-SqlColumnMasterKey Vytvoří v databázi objekt hlavního klíče sloupce.
New-SqlColumnMasterKeySettings Vytvoří objekt SqlColumnMasterKeySettings pro hlavní klíč sloupce se zadaným zprostředkovatelem a cestou klíče.
New-SqlCspColumnMasterKeySettings Vytvoří objekt SqlColumnMasterKeySettings popisující asymetrický klíč uložený v úložišti klíčů pomocí zprostředkovatele kryptografických služeb (CSP) podporujícího rozhraní API kryptografie (CAPI).
Remove-SqlColumnEncryptionKey Odebere objekt šifrovacího klíče sloupce z databáze.
Remove-SqlColumnEncryptionKeyValue Odebere zašifrovanou hodnotu z existujícího objektu šifrovacího klíče sloupce v databázi.
Remove-SqlColumnMasterKey Odebere z databáze objekt hlavního klíče sloupce.
Set-SqlColumnEncryption Šifruje, dešifruje nebo znovu šifruje zadané sloupce v databázi.

Viz také