Поделиться через


Настроить Always Encrypted с помощью PowerShell

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Модуль SqlServer PowerShell предоставляет командлеты для настройки Always Encrypted в базе данных Azure SQL или SQL Server.

Вопросы безопасности при использовании PowerShell для настройки Always Encrypted

Так как основной задачей функции постоянного шифрования является обеспечение целостности зашифрованных конфиденциальных данных даже в случае нарушения безопасности системы базы данных, выполнение скрипта PowerShell, обрабатывающего ключи или конфиденциальные данные на сервере SQL Server, может снизить или вообще отменить эффект действия функции. For more security-related recommendations, see Security Considerations for Key Management.

PowerShell можно использовать для управления ключами Always Encrypted с разделением ролей и без разделения ролей, чтобы контролировать пользователей, имеющих доступ к фактическим ключам шифрования в хранилище ключей и доступ к базе данных.

For more recommendations, see Security Considerations for Key Management.

Предварительные условия

Установите модуль SqlServer PowerShell версии 22.0.50 или более поздней версии на защищенном компьютере, который не является компьютером, на котором размещен экземпляр SQL Server. Модуль можно установить непосредственно из коллекции PowerShell. Дополнительные сведения см. в инструкциях по скачиванию.

Импорт модуля SqlServer

Загрузка модуля SqlServer

  1. Чтобы установить соответствующую политику выполнения скриптов, используйте командлет Set-ExecutionPolicy .
  2. Для импорта модуля SqlServer используйте командлет Import-Module .

В этом примере показана загрузка модуля SqlServer.

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

Подключение к базе данных

Some of the Always Encrypted cmdlets work with data or metadata in the database and require that you connect to the database first. При настройке постоянного шифрования с помощью модуля SqlServer подключиться к базе данных можно двумя рекомендуемыми способами:

  1. Connect using the Get-SqlDatabase cmdlet.
  2. Подключение с помощью поставщика SQL Server PowerShell.

Using 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

Alternatively, you can use piping:

$database | Get-SqlColumnMasterKey

Использование поставщика SQL Server PowerShell

Поставщик SQL Server PowerShell отображает иерархию объектов SQL Server в виде путей, похожих на пути файловой системы. Используя SQL Server PowerShell, вы можете перемещаться по путям с помощью псевдонимов Windows PowerShell, аналогично тому, как вы используете команды для навигации по путям файловой системы. Once you navigate to the target instance and the database, the subsequent cmdlets target that database, as shown in the following example.

Примечание.

This method of connecting to a database works only for SQL Server (it isn't supported 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

Кроме того, можно указать путь к базе данных с помощью универсального параметра 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 Cmdlet Reference

Для постоянного шифрования доступны приведенные ниже командлеты PowerShell

CMDLET Описание
Add-SqlAzureAuthenticationContext Выполняет проверку подлинности в Azure и получает маркер проверки подлинности.
Add-SqlColumnEncryptionKeyValue Добавляет новое зашифрованное значение для существующего объекта ключа шифрования столбца в базе данных.
Complete-SqlColumnMasterKeyRotation Completes the rotation of a column master key
Get-SqlColumnEncryptionKey Возвращает все объекты ключа шифрования столбца, определенные в базе данных, или возвращает один объект ключа шифрования столбца с указанным именем.
Get-SqlColumnMasterKey Возвращает объекты главного ключа столбца, определенные в базе данных, или возвращает один объект главного ключа столбца с указанным именем.
Invoke-SqlColumnMasterKeyRotation Initiates the rotation of a column master key.
New-SqlAzureKeyVaultColumnMasterKeySettings Создает объект SqlColumnMasterKeySettings, описывающий асимметричный ключ, который хранится в хранилище ключей Azure.
New-SqlCngColumnMasterKeySettings Создает объект SqlColumnMasterKeySettings, описывающий асимметричный ключ, который хранится в хранилище ключей, поддерживающем API CNG.
New-SqlColumnEncryptionKey Создает объект ключа шифрования столбца в базе данных.
New-SqlColumnEncryptionKeyEncryptedValue Выводит зашифрованное значение ключа шифрования столбца.
New-SqlColumnEncryptionSettings Создает объект SqlColumnEncryptionSettings, который инкапсулирует сведения о шифровании одного столбца, включая CEK и тип шифрования.
New-SqlColumnMasterKey Creates a column master key object in the database.
New-SqlColumnMasterKeySettings Creates a SqlColumnMasterKeySettings object for a column master key with the specified provider and key path.
New-SqlCspColumnMasterKeySettings Создает объект SqlColumnMasterKeySettings, описывающий асимметричный ключ, который хранится в хранилище ключей с поставщиком криптографических услуг (CSP), поддерживающим криптографический API (CAPI).
Remove-SqlColumnEncryptionKey (удаление ключа шифрования столбца SQL) Удаляет объект ключа шифрования столбца из базы данных.
Remove-SqlColumnEncryptionKeyValue Удаляет зашифрованное значение из существующего объекта ключа шифрования столбца в базе данных.
Remove-SqlColumnMasterKey Removes the column master key object from the database.
Set-SqlColumnEncryption Шифрует, расшифровывает или повторно шифрует указанные столбцы в базе данных.