Always Encrypted configureren met Behulp van PowerShell
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
De SqlServer PowerShell-module biedt cmdlets voor het configureren van Always Encrypted- in zowel Azure SQL Database als SQL Server.
Beveiligingsoverwegingen bij het gebruik van PowerShell voor het configureren van Always Encrypted
Omdat het primaire doel van Always Encrypted is om ervoor te zorgen dat versleutelde gevoelige gegevens veilig zijn, zelfs als het databasesysteem wordt aangetast, kan het uitvoeren van een PowerShell-script waarmee sleutels of gevoelige gegevens op de SQL Server-computer worden verwerkt, de voordelen van de functie verminderen of verslaan. Zie Beveiligingsoverwegingen voor sleutelbeheer voor meer beveiligingsaanbevelingen.
U kunt PowerShell gebruiken om Always Encrypted-sleutels te beheren met en zonder rolscheiding, waarbij u bepaalt wie toegang heeft tot de werkelijke versleutelingssleutels in het sleutelarchief en wie toegang heeft tot de database.
Zie Beveiligingsoverwegingen voor sleutelbeheer voor meer aanbevelingen.
Voorwaarden
Installeer de SqlServer PowerShell-module versie 22.0.50 of hoger op een beveiligde computer die geen computer is die als host fungeert voor uw SQL Server-exemplaar. De module kan rechtstreeks vanuit de PowerShell-galerie worden geïnstalleerd. Zie de download instructies voor meer informatie.
De SqlServer-module importeren
De SqlServer-module laden:
- Gebruik de cmdlet Set-ExecutionPolicy om het juiste scriptuitvoeringsbeleid in te stellen.
- Gebruik de cmdlet Import-Module om de SqlServer-module te importeren.
In dit voorbeeld wordt de SqlServer-module geladen.
# Import the SQL Server Module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
Verbinding maken met een database
Sommige Always Encrypted-cmdlets werken met gegevens of metagegevens in de database en vereisen dat u eerst verbinding maakt met de database. Er zijn twee aanbevolen methoden om verbinding te maken met een database bij het configureren van Always Encrypted met behulp van de SqlServer-module:
- Maak verbinding met behulp van de cmdlet Get-SqlDatabase.
- Verbinding maken met behulp van SQL Server PowerShell Provider.
Get-SqlDatabase gebruiken
Met de cmdlet Get-SqlDatabase kunt u verbinding maken met een database in SQL Server of in Azure SQL Database. Het retourneert een databaseobject dat u vervolgens kunt doorgeven met behulp van de parameter InputObject van een cmdlet die verbinding maakt met de database.
SQL Server PowerShell gebruiken
# 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
U kunt ook leidingen gebruiken:
$database | Get-SqlColumnMasterKey
SQL Server PowerShell-provider gebruiken
De SQL Server PowerShell Provider de hiërarchie van SQL Server-objecten beschikbaar maakt in paden die vergelijkbaar zijn met bestandssysteempaden. Met SQL Server PowerShell kunt u door de paden navigeren met Windows PowerShell-aliassen die vergelijkbaar zijn met de opdrachten die u doorgaans gebruikt om door bestandssysteempaden te navigeren. Zodra u naar het doelexemplaar en de database navigeert, richten de volgende cmdlets zich op die database, zoals te zien is in het volgende voorbeeld.
Notitie
Deze methode voor het maken van verbinding met een database werkt alleen voor SQL Server (deze methode wordt niet ondersteund in 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
U kunt ook een databasepad opgeven met behulp van de algemene parameter Path in plaats van naar de database te navigeren.
# 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
Taken met Always Encrypted met behulp van PowerShell
- Always Encrypted-sleutels inrichten met Behulp van PowerShell
- Always Encrypted-sleutels roteren met PowerShell
- Kolommen versleutelen, opnieuw versleutelen of ontsleutelen met Always Encrypted met behulp van PowerShell
De naslaginformatie over "Always Encrypted"-cmdlets
De volgende PowerShell-cmdlets zijn beschikbaar voor Always Encrypted:
CMDLET | Beschrijving |
---|---|
Add-SqlAzureAuthenticationContext | Hiermee wordt verificatie naar Azure uitgevoerd en wordt een verificatietoken verkregen. |
Add-SqlColumnEncryptionKeyValue | Voegt een nieuwe versleutelde waarde toe voor een bestaand kolomversleutelingssleutelobject in de database. |
Complete-SqlColumnMasterKeyRotation | Hiermee wordt de rotatie van een kolomhoofdsleutel voltooid |
Get-SqlColumnEncryptionKey | Retourneert alle kolomversleutelingssleutelobjecten die zijn gedefinieerd in de database of retourneert één kolomversleutelingssleutelobject met de opgegeven naam. |
Get-SqlColumnMasterKey | Retourneert de hoofdsleutelobjecten van de kolom die zijn gedefinieerd in de database of retourneert één hoofdsleutelobject met de opgegeven naam. |
Invoke-SqlColumnMasterKeyRotation | Hiermee wordt de rotatie van een kolomhoofdsleutel gestart. |
New-SqlAzureKeyVaultColumnMasterKeySettings | Hiermee maakt u een SqlColumnMasterKeySettings-object met een beschrijving van een asymmetrische sleutel die is opgeslagen in Azure Key Vault. |
New-SqlCngColumnMasterKeySettings | Hiermee maakt u een SqlColumnMasterKeySettings-object waarin een asymmetrische sleutel wordt beschreven die is opgeslagen in een sleutelarchief dat de CNG-API (Cryptography Next Generation) ondersteunt. |
New-SqlColumnEncryptionKey | Hiermee maakt u een kolomversleutelingssleutelobject in de database. |
New-SqlColumnEncryptionKeyEncryptedValue | Produceert een versleutelde waarde van een kolomversleutelingssleutel. |
Nieuwe-SqlKolomVersleutelingsInstellingen | Hiermee maakt u een SqlColumnEncryptionSettings-object dat informatie inkapselt over de versleuteling van één kolom, inclusief CEK en versleutelingstype. |
New-SqlColumnMasterKey | Hiermee maakt u een kolomhoofdsleutelobject in de database. |
New-SqlColumnMasterKeySettings | Hiermee maakt u een SqlColumnMasterKeySettings-object voor een kolomhoofdsleutel met de opgegeven provider en het sleutelpad. |
New-SqlCspColumnMasterKeySettings | Hiermee maakt u een SqlColumnMasterKeySettings-object dat een asymmetrische sleutel beschrijft die is opgeslagen in een sleutelarchief met een Cryptografieserviceprovider (CSP) die cryptografie-API (CAPI) ondersteunt. |
Remove-SqlColumnEncryptionKey | Hiermee verwijdert u het kolomversleutelingssleutelobject uit de database. |
Verwijder-SqlKolomEncryptiesleutelwaarde | Hiermee verwijdert u een versleutelde waarde uit een bestaand kolomversleutelingssleutelobject in de database. |
Remove-SqlColumnMasterKey | Hiermee verwijdert u het hoofdsleutelobject van de kolom uit de database. |
Set-SqlColumnEncryption | Hiermee worden opgegeven kolommen in de database versleuteld, ontsleuteld of opnieuw versleuteld. |