Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure 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:
- Użyj polecenia cmdlet Set-ExecutionPolicy, aby ustawić odpowiednie zasady wykonywania skryptu.
- 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:
- Nawiąż połączenie przy użyciu polecenia cmdlet Get-SqlDatabase.
- 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
- aprowizuj klucze always encrypted przy użyciu programu PowerShell
- Rotacja kluczy Always Encrypted przy użyciu programu PowerShell
- szyfrować, ponownie szyfrować lub odszyfrowywać kolumny za pomocą funkcji Always Encrypted 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. |