Dela via


Konfigurera Always Encrypted med PowerShell

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

SqlServer PowerShell-modulen innehåller cmdletar för att konfigurera Always Encrypted i både Azure SQL Database eller SQL Server.

Säkerhetsöverväganden när du använder PowerShell för att konfigurera Always Encrypted

Eftersom det primära målet med Always Encrypted är att säkerställa att krypterade känsliga data är säkra, även om databassystemet komprometteras, kan körning av ett PowerShell-skript som bearbetar nycklar eller känsliga data på SQL Server-datorn minska eller motverka fördelarna med funktionen. Ytterligare säkerhetsrelaterade rekommendationer finns i Säkerhetsöverväganden för Nyckelhantering.

Du kan använda PowerShell för att hantera Always Encrypted-nycklar både med och utan rollseparering, vilket ger kontroll över vem som har åtkomst till de faktiska krypteringsnycklarna i nyckelarkivet och vem som har åtkomst till databasen.

Ytterligare rekommendationer finns i Säkerhetsöverväganden för Nyckelhantering.

Förutsättningar

Installera SqlServer PowerShell-modul version 22.0.50 eller senare på en säker dator som INTE är en dator som är värd för din SQL Server-instans. Modulen kan installeras direkt från PowerShell-galleriet. För mer information, se instruktionerna för nedladdning i .

Importera SqlServer-modulen

Så här laddar du SqlServer-modulen:

  1. Använd cmdleten Set-ExecutionPolicy för att ange lämplig skriptkörningsprincip.
  2. Använd cmdleten Import-Module för att importera SqlServer-modulen.

Det här exemplet läser in SqlServer-modulen.

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

Ansluta till en databas

Vissa av Always Encrypted-cmdletar arbetar med data eller metadata i databasen, och de kräver att du ansluter till databasen först. Det finns två rekommenderade metoder för att ansluta till en databas när du konfigurerar Always Encrypted med hjälp av SqlServer-modulen:

  1. Anslut med cmdleten Get-SqlDatabase.
  2. Anslut med SQL Server PowerShell-providern.

Använda Get-SqlDatabase

Med cmdleten Get-SqlDatabase kan du ansluta till en databas i SQL Server eller i Azure SQL Database. Det returnerar ett databasobjekt som du sedan kan skicka med hjälp av parametern InputObject för en cmdlet som ansluter till databasen.

Använda SQL Server PowerShell

# 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

Du kan också använda rörledningar:

$database | Get-SqlColumnMasterKey

Använda SQL Server PowerShell-provider

SQL Server PowerShell-providern exponerar hierarkin för SQL Server-objekt i sökvägar som liknar filsystemsökvägar. Med SQL Server PowerShell kan du navigera i sökvägarna med hjälp av Windows PowerShell-alias som liknar de kommandon som du vanligtvis använder för att navigera i filsystemsökvägar. När du har navigerat till målinstansen och databasen riktar de efterföljande cmdletarna in sig på databasen, som du ser i följande exempel.

Not

Den här metoden för att ansluta till en databas fungerar endast för SQL Server (den stöds inte i 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

Du kan också ange en databassökväg med hjälp av parametern generic Path i stället för att navigera till databasen.

# 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

Always Encrypted-uppgifter med PowerShell

Always Encrypted Cmdlet-referens

Följande PowerShell-cmdletar är tillgängliga för Always Encrypted:

CMDLET Beskrivning
Add-SqlAzureAuthenticationContext Utför autentisering till Azure och hämtar en autentiseringstoken.
Add-SqlColumnEncryptionKeyValue Lägger till ett nytt krypterat värde för ett befintligt kolumnkrypteringsnyckelobjekt i databasen.
Complete-SqlColumnMasterKeyRotation Slutför rotationen av en kolumnhuvudnyckel
Get-SqlColumnEncryptionKey Returnerar alla kolumnkrypteringsnyckelobjekt som definierats i databasen eller returnerar ett kolumnkrypteringsnyckelobjekt med det angivna namnet.
Get-SqlColumnMasterKey Returnerar kolumnhuvudnyckelobjekten som definierats i databasen eller returnerar ett kolumnhuvudnyckelobjekt med det angivna namnet.
Invoke-SqlColumnMasterKeyRotation Initierar rotationen av en kolumnhuvudnyckel.
New-SqlAzureKeyVaultColumnMasterKeySettings Skapar ett SqlColumnMasterKeySettings-objekt som beskriver en asymmetrisk nyckel som lagras i Azure Key Vault.
New-SqlCngColumnMasterKeySettings Skapar ett SqlColumnMasterKeySettings-objekt som beskriver en asymmetrisk nyckel som lagras i ett nyckelarkiv som stöder CNG-API:et (Cryptography Next Generation).
New-SqlColumnEncryptionKey Skapar ett kolumnkrypteringsnyckelobjekt i databasen.
New-SqlColumnEncryptionKeyEncryptedValue Genererar ett krypterat värde för en kolumnkrypteringsnyckel.
New-SqlColumnEncryptionSettings Skapar ett SqlColumnEncryptionSettings-objekt som kapslar in information om en enskild kolumns kryptering, inklusive CEK och krypteringstyp.
New-SqlColumnMasterKey Skapar ett huvudnyckelobjekt för kolumner i databasen.
New-SqlColumnMasterKeySettings Skapar ett SqlColumnMasterKeySettings-objekt för en kolumnhuvudnyckel med den angivna providern och nyckelsökvägen.
New-SqlCspColumnMasterKeySettings Skapar ett SqlColumnMasterKeySettings-objekt som beskriver en asymmetrisk nyckel som lagras i ett nyckelarkiv med en kryptografitjänstprovider (CSP) som stöder kryptografi-API (CAPI).
Remove-SqlColumnEncryptionKey Tar bort kolumnkrypteringsnyckelobjektet från databasen.
Remove-SqlColumnEncryptionKeyValue Tar bort ett krypterat värde från ett befintligt kolumnkrypteringsnyckelobjekt i databasen.
Remove-SqlColumnMasterKey Tar bort kolumnhuvudnyckelobjektet från databasen.
Set-SqlColumnEncryption Krypterar, dekrypterar eller krypterar om angivna kolumner i databasen.

Se även