데이터베이스를 투명하게 암호화하기 위한 암호화 키를 만듭니다. TDE(transparent data encryption)에 대한 자세한 내용은 투명한 데이터 암호화(TDE) 참조하세요.
구문
-- 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
[ ; ]
인수
WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
암호화 키에 대한 암호화 알고리즘을 지정합니다.
경고
SQL Server 2016부터 AES_128, AES_192 및 AES_256 이외의 모든 알고리즘은 더 이상 사용되지 않습니다. 오래된 알고리즘을 사용하려면(권장하지 않음) 데이터베이스 호환성 수준을 120 이하로 설정해야 합니다.
서버 인증서 Encryptor_Name 암호화
데이터베이스 암호화 키를 암호화하는 데 사용되는 암호기의 이름을 지정합니다.
ENCRYPTION BY SERVER ASYMMETRIC KEY Encryptor_Name 데이터베이스 암호화 키를 암호화하는 데 사용되는 비대칭 키의 이름을 지정합니다. 비대칭 키를 사용하여 데이터베이스 암호화 키를 암호화하려면 비대칭 키가 확장 가능한 키 관리 공급자에 있어야 합니다.
설명
TDE(투명한 데이터 암호화)를 사용하여 데이터베이스를 암호화하려면 데이터베이스 암호화 키가 필요합니다. 데이터베이스가 명시적으로 암호화되면 특수 코드의 수정 없이 전체 데이터베이스가 파일 수준에서 암호화됩니다. 데이터베이스 암호화 키를 암호화하는 인증서 또는 비대칭 키는 시스템 데이터베이스에 있어야 합니다.
TDE에 사용되는 인증 또는 비대칭 키의 프라이빗 키 크기는 3072비트로 제한됩니다.
데이터베이스 암호화 문은 사용자 데이터베이스에서만 사용할 수 있습니다.
데이터베이스 암호화 키를 데이터베이스에서 내보낼 수 없습니다. 시스템, 서버에 대한 디버깅 권한이 있는 사용자 및 데이터베이스 암호화 키를 암호화하고 암호 해독하는 인증서에 액세스할 수 있는 사용자에게만 사용할 수 있습니다.
데이터베이스 소유자(dbo)가 변경될 때 데이터베이스 암호화 키를 다시 생성할 필요가 없습니다.
데이터베이스 암호화 키는 SQL Database 데이터베이스에 대해 자동으로 생성됩니다. 문을 사용하여 키를 만들 필요가 없습니다.
사용 권한
데이터베이스에 대한 CONTROL 권한과 데이터베이스 암호화 키를 암호화하는 데 사용되는 인증서 또는 비대칭 키에 대한 VIEW DEFINITION 권한이 필요합니다.
예제
TDE를 사용하는 추가 예제는 투명한 데이터 암호화(TDE), EKM 및 extensible Key Management using Azure Key Vault(SQL Server)를 사용하여 SQL Server 사용할 수 있는 TDE를 참조하세요.
A. 데이터베이스 암호화 키 만들기
다음 예에서는 알고리즘을 사용하여 데이터베이스 암호화 키를 만들고 라는 인증서로 프라이빗 키를 보호합니다.
USE AdventureWorks2022;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
B. TDE 암호화 데이터베이스를 다른 인스턴스로 복원
TDE 암호화 데이터베이스를 다른 SQL Server 인스턴스로 복원하려면 먼저 데이터베이스 암호화 키를 보호하는 인증서를 가져와야 합니다. 원본 서버에서 인증서 및 해당 프라이빗 키를 백업한 다음 데이터베이스를 복원하기 전에 대상 인스턴스에 인증서를 만듭니다.
원본 서버에서 인증서를 백업합니다.
-- On the SOURCE server
USE master;
GO
BACKUP CERTIFICATE MyServerCert
TO FILE = 'C:\Backup\MyServerCert.cer'
WITH PRIVATE KEY (
FILE = 'C:\Backup\MyServerCert.pvk',
ENCRYPTION BY PASSWORD = '<strong_password>'
);
GO
대상 서버에서 백업 파일에서 인증서를 만든 다음 데이터베이스를 복원합니다.
-- On the TARGET server
USE master;
GO
CREATE CERTIFICATE MyServerCert
FROM FILE = 'C:\Backup\MyServerCert.cer'
WITH PRIVATE KEY (
FILE = 'C:\Backup\MyServerCert.pvk',
DECRYPTION BY PASSWORD = '<strong_password>'
);
GO
-- Now you can restore the TDE-encrypted database
RESTORE DATABASE AdventureWorks2022
FROM DISK = 'C:\Backup\AdventureWorks2022.bak'
WITH MOVE 'AdventureWorks2022_Data' TO 'D:\Data\AdventureWorks2022.mdf',
MOVE 'AdventureWorks2022_Log' TO 'D:\Data\AdventureWorks2022.ldf';
GO
중요합니다
인증서의 이름은 동일해야 하며 동일한 백업 파일에서 만들어야 합니다. 인증서가 일치하지 않으면 암호화 키 오류로 복원이 실패합니다.