Udostępnij za pośrednictwem


Konfigurowanie funkcji Always Encrypted przy użyciu programu PowerShell

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Moduł SqlServer PowerShell zawiera polecenia cmdlet służące do konfigurowania Always Encrypted w usłudze Azure SQL Database lub SQL Server.

Zagadnienia dotyczące zabezpieczeń podczas korzystania z programu PowerShell do konfigurowania funkcji Always Encrypted

Ponieważ głównym celem funkcji Always Encrypted jest zapewnienie bezpieczeństwa zaszyfrowanych poufnych danych, nawet jeśli system bazy danych zostanie naruszony, wykonanie skryptu programu PowerShell, który przetwarza klucze lub poufne dane na komputerze z programem SQL Server, może zmniejszyć lub pokonać zalety tej funkcji. Aby uzyskać dodatkowe zalecenia dotyczące zabezpieczeń, zobacz Zagadnienia dotyczące zabezpieczeń dotyczące zarządzania kluczami.

Za pomocą programu PowerShell można zarządzać kluczami Always Encrypted zarówno z separacją ról, jak i bez separacji ról, zapewniając kontrolę nad tym, kto ma dostęp do rzeczywistych kluczy szyfrowania w magazynie kluczy i kto ma dostęp do bazy danych.

Aby uzyskać dodatkowe zalecenia, zobacz Zagadnienia dotyczące zabezpieczeń dotyczące zarządzania kluczami.

Warunki wstępne

Zainstaluj moduł programu SqlServer PowerShell w wersji 22.0.50 lub nowszej na bezpiecznym komputerze, który nie jest komputerem hostujący wystąpienie programu SQL Server. Moduł można zainstalować bezpośrednio z galerii programu PowerShell. Aby uzyskać więcej informacji, zobacz instrukcje pobierania .

Importowanie modułu SqlServer

Aby załadować moduł SqlServer:

  1. Użyj polecenia cmdlet Set-ExecutionPolicy, aby ustawić odpowiednie zasady wykonywania skryptu.
  2. Za pomocą polecenia cmdlet Import-Module zaimportuj moduł SqlServer.

W tym przykładzie ładuje moduł SqlServer.

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

Nawiązywanie połączenia z bazą danych

Niektóre polecenia cmdlet Always Encrypted działają z danymi lub metadanymi w bazie danych i wymagają, aby najpierw nawiązać połączenie z bazą danych. Istnieją dwie zalecane metody nawiązywania połączenia z bazą danych podczas konfigurowania funkcji Always Encrypted przy użyciu modułu SqlServer:

  1. Nawiąż połączenie przy użyciu polecenia cmdlet Get-SqlDatabase.
  2. Połącz przy użyciu dostawcy PowerShell programu SQL Server.

Korzystanie z Get-SqlDatabase

Polecenie cmdlet Get-SqlDatabase umożliwia nawiązywanie połączenia z bazą danych w programie SQL Server lub w usłudze Azure SQL Database. Zwraca obiekt bazy danych, który następnie można przekazać przy użyciu parametru InputObject polecenia cmdlet łączącego się z bazą danych.

Korzystanie z programu 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

Alternatywnie można użyć potoków:

$database | Get-SqlColumnMasterKey

Korzystanie z dostawcy PowerShell programu SQL Server

Dostawca programu PowerShell programu SQL Server uwidacznia hierarchię obiektów programu SQL Server w ścieżkach podobnych do ścieżek systemu plików. Za pomocą programu SQL Server PowerShell można nawigować po ścieżkach przy użyciu aliasów programu Windows PowerShell podobnych do poleceń, których zwykle używasz do nawigowania po ścieżkach systemu plików. Po przejściu do docelowego wystąpienia i bazy danych, następne polecenia cmdlet są skierowane do tej bazy danych, jak pokazano w poniższym przykładzie.

Notatka

Ta metoda nawiązywania połączenia z bazą danych działa tylko dla programu SQL Server (nie jest obsługiwana w usłudze 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

Alternatywnie można określić ścieżkę bazy danych przy użyciu ogólnego parametru Path, zamiast przechodzić do bazy danych.

# 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

Zadania zawsze szyfrowane przy użyciu programu PowerShell

Dokumentacja referencyjna cmdlet Always Encrypted

Następujące polecenia cmdlet programu PowerShell są dostępne dla funkcji Always Encrypted:

CMDLET Opis
Add-SqlAzureAuthenticationContext Wykonuje uwierzytelnianie na platformie Azure i uzyskuje token uwierzytelniania.
add-SqlColumnEncryptionKeyValue Dodaje nową zaszyfrowaną wartość dla istniejącego obiektu klucza szyfrowania kolumny w bazie danych.
Complete-SqlColumnMasterKeyRotation Kończy proces rotacji klucza głównego kolumny
Get-SqlColumnEncryptionKey Zwraca wszystkie obiekty klucza szyfrowania kolumny zdefiniowane w bazie danych lub zwraca jeden obiekt klucza szyfrowania kolumny o określonej nazwie.
Get-SqlColumnMasterKey Zwraca obiekty klucza głównego kolumny zdefiniowane w bazie danych lub zwraca jeden obiekt klucza głównego kolumny o określonej nazwie.
Invoke-SqlColumnMasterKeyRotation Inicjuje rotację klucza głównego kolumny.
New-SqlAzureKeyVaultColumnMasterKeySettings Tworzy obiekt SqlColumnMasterKeySettings opisujący klucz asymetryczny przechowywany w usłudze Azure Key Vault.
New-SqlCngColumnMasterKeySettings Tworzy obiekt SqlColumnMasterKeySettings opisujący klucz asymetryczny przechowywany w magazynie kluczy obsługującym interfejs API następnej generacji kryptografii (CNG).
New-SqlColumnEncryptionKey Tworzy obiekt klucza szyfrowania kolumny w bazie danych.
new-SqlColumnEncryptionKeyEncryptedValue Tworzy zaszyfrowaną wartość klucza szyfrowania kolumny.
new-SqlColumnEncryptionSettings Tworzy obiekt SqlColumnEncryptionSettings, który hermetyzuje informacje o szyfrowaniu pojedynczej kolumny, w tym klucz CEK i typ szyfrowania.
New-SqlColumnMasterKey Tworzy obiekt klucza głównego kolumny w bazie danych.
New-SqlColumnMasterKeySettings Tworzy obiekt SqlColumnMasterKeySettings dla klucza głównego kolumny z określonym dostawcą i ścieżką klucza.
new-SqlCspColumnMasterKeySettings Tworzy obiekt SqlColumnMasterKeySettings, który opisuje klucz asymetryczny przechowywany w magazynie kluczy, przy użyciu dostawcy usług kryptograficznych (CSP) obsługującego interfejs API kryptografii (CAPI).
Remove-SqlColumnEncryptionKey Usuwa obiekt klucza szyfrowania kolumny z bazy danych.
Remove-SqlColumnEncryptionKeyValue Usuwa zaszyfrowaną wartość z istniejącego obiektu klucza szyfrowania kolumny w bazie danych.
Remove-SqlColumnMasterKey Usuwa obiekt klucza głównego kolumny z bazy danych.
Set-SqlColumnEncryption Szyfruje, odszyfrowuje lub ponownie szyfruje określone kolumny w bazie danych.

Zobacz też