CREATE DATABASE ENCRYPTION KEY (Transact-SQL)
Область применения: SQL Server
Управляемый экземпляр SQL Azure
Платформенная система аналитики (PDW)
Создает ключ шифрования, используемый для прозрачного шифрования базы данных. Дополнительные сведения о прозрачном шифровании данных (TDE) см. в прозрачное шифрование данных (TDE).
Соглашения о синтаксисе Transact-SQL
Синтаксис
-- Syntax for SQL Server
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
ENCRYPTION BY SERVER
{
CERTIFICATE Encryptor_Name |
ASYMMETRIC KEY Encryptor_Name
}
[ ; ]
-- Syntax for Parallel Data Warehouse
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name
[ ; ]
Примечание.
Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.
Аргументы
WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
Определяет алгоритм шифрования, который используется для ключа шифрования.
Предупреждение
Начиная с версии SQL Server 2016 все алгоритмы, отличные от AES_128, AES_192 и AES_256, являются нерекомендуемыми. Чтобы использовать старые алгоритмы (что не рекомендуется), необходимо установить уровень совместимости базы данных 120 или ниже.
ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name
Указывает имя шифратора, используемого для шифрования ключа шифрования базы данных.
ENCRYPTION BY SERVER ASYMMETRIC KEY Encryptor_Name
Указывает имя асимметричного ключа, используемого для шифрования ключа шифрования базы данных. Чтобы зашифровать ключ шифрования базы данных с помощью асимметричного ключа, используемый асимметричный ключ должен находиться в поставщике расширенного управления ключами.
Замечания
Ключ шифрования базы данных требуется, прежде чем база данных может быть зашифрована с помощью прозрачного шифрования данных (TDE). При выполнении прозрачного шифрования базы данных вся база данных шифруется на уровне файлов без каких-либо специальных изменений кода. Сертификат или асимметричный ключ, который используется для шифрования ключа шифрования базы данных, должен находиться в системной базе данных master.
Сертификаты асимметричных ключей, используемых для прозрачного шифрования данных, размер закрытого ключа ограничен 3072 битами.
Инструкции шифрования базы данных разрешены только для пользовательских баз данных.
Ключ шифрования базы данных нельзя экспортировать из базы данных. Он доступен только для системы, пользователей, имеющих разрешение на отладку на сервере, и пользователей, имеющих доступ к сертификатам, с использованием которых выполняется шифрование и расшифровка ключа шифрования базы данных.
Нет необходимости повторно создавать ключ шифрования базы данных, когда меняется владелец базы данных (dbo).
Ключ шифрования базы данных автоматически создается для базы данных в Базе данных SQL. Не нужно создавать ключ с помощью инструкции CREATE DATABASE ENCRYPTION KEY.
Разрешения
Требуется разрешение CONTROL на базу данных и разрешение VIEW DEFINITION на сертификат или асимметричный ключ, используемый при шифровании ключа шифрования базы данных.
Примеры
Дополнительные примеры использования прозрачного шифрования данных см. в статьях Прозрачное шифрование данных (TDE), Включение прозрачного шифрования данных в SQL Server с помощью расширенного управления ключами и Расширенное управление ключами с помощью хранилища ключей Azure (SQL Server).
В следующем примере создается ключ шифрования базы данных с помощью алгоритма AES_256
и защищается закрытый ключ с помощью сертификата с именем MyServerCert
.
USE AdventureWorks2022;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
См. также
Прозрачное шифрование данных (TDE)
Шифрование SQL Server
Ключи шифрования базы данных и SQL Server (компонент Database Engine)
Иерархия средств шифрования
Параметры ALTER DATABASE SET (Transact-SQL)
ALTER DATABASE ENCRYPTION KEY (Transact-SQL)
DROP DATABASE ENCRYPTION KEY (Transact-SQL)
sys.dm_database_encryption_keys (Transact-SQL)