Konfigurace funkce Always Encrypted pomocí PowerShellu
platí pro:SQL Server
Azure SQL Database
azure 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:
- K nastavení příslušných zásad spouštění skriptu použijte rutinu Set-ExecutionPolicy.
- 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:
- Připojte se pomocí rutiny Get-SqlDatabase.
- 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
- Poskytování klíčů „Always Encrypted“ pomocí PowerShellu
- Obnovit klíče Always Encrypted pomocí PowerShell
- šifrování, opětovné šifrování nebo dešifrování sloupců pomocí funkce 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. |