Configure Always Encrypted using PowerShell
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Модуль SqlServer PowerShell предоставляет командлеты для настройки Always Encrypted в обоих База данных SQL Azure или SQL Server.
Вопросы безопасности при использовании PowerShell для настройки Always Encrypted
Так как основной задачей функции постоянного шифрования является обеспечение целостности зашифрованных конфиденциальных данных даже в случае нарушения безопасности системы базы данных, выполнение скрипта PowerShell, обрабатывающего ключи или конфиденциальные данные на сервере SQL Server, может снизить или вообще отменить эффект действия функции. Дополнительные рекомендации по безопасности см. в разделе Security Considerations for Key Management(Вопросы безопасности для управления ключами).
PowerShell можно использовать для управления ключами Always Encrypted с разделением ролей и без разделения ролей, чтобы контролировать пользователей, имеющих доступ к фактическим ключам шифрования в хранилище ключей и доступ к базе данных.
Дополнительные рекомендации по безопасности см. в разделе Security Considerations for Key Management(Вопросы безопасности для управления ключами).
Необходимые компоненты
Установите модуль SqlServer PowerShell версии 22.0.50 или более поздней версии на защищенном компьютере, который не является компьютером, на котором размещен экземпляр SQL Server. Модуль можно установить непосредственно из коллекции PowerShell. Дополнительные сведения см. в инструкциях по скачиванию.
Импорт модуля SqlServer
Загрузка модуля SqlServer
- Чтобы установить соответствующую политику выполнения скриптов, используйте командлет Set-ExecutionPolicy .
- Для импорта модуля SqlServer используйте командлет Import-Module .
В этом примере показана загрузка модуля SqlServer.
# Import the SQL Server Module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
Подключение к базе данных
Некоторые командлеты постоянного шифрования работают с данными или метаданными в базе данных и требуют сначала выполнить соединение с базой данных. При настройке постоянного шифрования с помощью модуля SqlServer подключиться к базе данных можно двумя рекомендуемыми способами:
- Подключение с помощью командлета Get-SqlDatabase.
- Подключение с помощью поставщика SQL Server PowerShell.
Использование Get-SqlDatabase
Командлет Get-SqlDatabase позволяет подключиться к базе данных в SQL Server или в базе данных SQL Azure. Он возвращает объект базы данных, который затем можно передать с помощью параметра InputObject командлета, который подключается к базе данных.
Использование 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
Кроме того, можно применить перенаправление:
$database | Get-SqlColumnMasterKey
Использование поставщика SQL Server PowerShell
Поставщик SQL Server PowerShell отображает иерархию объектов SQL Server в виде путей, похожих на пути файловой системы. Используя SQL Server PowerShell, вы можете переходить по путям с помощью псевдонимов Windows PowerShell по аналогии с переходом по путям файловой системы с помощью команд. После перехода к целевому экземпляру и базе данных последующие командлеты будут использоваться в этой базе данных, как показано в следующем примере.
Примечание.
Этот способ подключения к базе данных работает только для SQL Server (не поддерживается в базе данных SQL Azure).
# 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
Кроме того, можно указать путь к базе данных с помощью универсального параметра Path , а не переходить к базе данных.
# 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
Задачи постоянного шифрования с использованием PowerShell
- Подготовка ключей Always Encrypted с помощью PowerShell
- Смена ключей постоянного шифрования с помощью PowerShell
- Шифрование, повторное шифрование или расшифровка столбцов с Always Encrypted через PowerShell
Справочник по командлетам постоянного шифрования
Для постоянного шифрования доступны приведенные ниже командлеты PowerShell
Командлет | Description |
---|---|
Add-SqlAzureAuthenticationContext | Выполняет проверку подлинности в Azure и получает маркер проверки подлинности. |
Add-SqlColumnEncryptionKeyValue | Добавляет новое зашифрованное значение для существующего объекта ключа шифрования столбца в базе данных. |
Complete-SqlColumnMasterKeyRotation | Завершает смену главного ключа столбца. |
Get-SqlColumnEncryptionKey | Возвращает все объекты ключа шифрования столбца, определенные в базе данных, или возвращает один объект ключа шифрования столбца с указанным именем. |
Get-SqlColumnMasterKey | Возвращает объекты главного ключа столбца, определенные в базе данных, или возвращает один объект главного ключа столбца с указанным именем. |
Invoke-SqlColumnMasterKeyRotation | Инициирует смену главного ключа столбца. |
New-SqlAzureKeyVaultColumnMasterKeySettings | Создает объект SqlColumnMasterKeySettings, описывающий асимметричный ключ, который хранится в хранилище ключей Azure. |
New-SqlCngColumnMasterKeySettings | Создает объект SqlColumnMasterKeySettings, описывающий асимметричный ключ, который хранится в хранилище ключей, поддерживающем API CNG. |
New-SqlColumnEncryptionKey | Создает объект ключа шифрования столбца в базе данных. |
New-SqlColumnEncryptionKeyEncryptedValue | Выводит зашифрованное значение ключа шифрования столбца. |
New-SqlColumnEncryptionSettings | Создает объект SqlColumnEncryptionSettings, который инкапсулирует сведения о шифровании одного столбца, включая CEK и тип шифрования. |
New-SqlColumnMasterKey | Создает объект главного ключа столбца в базе данных. |
New-SqlColumnMasterKeySettings | Создает объект SqlColumnMasterKeySettings для главного ключа столбца с указанным поставщиком и путем к ключу. |
New-SqlCspColumnMasterKeySettings | Создает объект SqlColumnMasterKeySettings, описывающий асимметричный ключ, который хранится в хранилище ключей с поставщиком CSP, поддерживающим CAPI. |
Remove-SqlColumnEncryptionKey | Удаляет объект ключа шифрования столбца из базы данных. |
Remove-SqlColumnEncryptionKeyValue | Удаляет зашифрованное значение из существующего объекта ключа шифрования столбца в базе данных. |
Remove-SqlColumnMasterKey | Удаляет объект главного ключа столбца из базы данных. |
Set-SqlColumnEncryption | Шифрует, расшифровывает или повторно шифрует указанные столбцы в базе данных. |