적용 대상:SQL Server
이 문서에서는 EKM(확장 가능 키 관리) 모듈에 저장된 비대칭 키를 Transact-SQL와 사용하여 데이터베이스 암호화 키를 보호하기 위해 SQL Server에서 TDE(투명한 데이터 암호화)를 사용하도록 설정하는 방법에 대해 설명합니다.
TDE는 데이터베이스 암호화 키라는 대칭 키를 사용하여 전체 데이터베이스의 스토리지를 암호화합니다. 데이터베이스 암호화 키는 데이터베이스의 DMK(데이터베이스 마스터 키) master 로 보호되는 인증서를 사용하여 보호할 수도 있습니다. DMK를 사용하여 데이터베이스 암호화 키를 보호하는 방법에 대한 자세한 내용은 TDE(투명한 데이터 암호화)를 참조하세요. SQL Server가 Azure Virtual Machine에서 실행 중일 때 TDE를 구성하는 방법에 대한 자세한 내용은 Azure Key Vault(SQL Server)를 사용하여 확장 가능한 키 관리를 참조하세요. Azure Key Vault의 키를 사용하여 TDE를 구성하는 방법에 대한 자세한 내용은 SQL 암호화 기능을 통해 SQL Server 커넥터 사용을 참조하세요.
제한점
데이터베이스 암호화 키를 만들고 데이터베이스를 암호화하려면 높은 권한의 사용자(예: 시스템 관리자)여야 합니다. EKM 모듈은 해당 사용자를 인증할 수 있어야 합니다.
시작할 때 데이터베이스 엔진이 데이터베이스를 열어야 합니다. EKM에서 인증할 자격 증명을 만들고 비대칭 키를 기반으로 하는 로그인에 추가해야 합니다. 사용자는 해당 로그인을 사용하여 로그인할 수 없지만 데이터베이스 엔진은 EKM 디바이스로 인증할 수 있습니다.
EKM 모듈에 저장된 비대칭 키가 손실되면 SQL Server에서 데이터베이스를 열 수 없습니다. EKM 공급자가 비대칭 키를 백업할 수 있도록 허용하는 경우 백업을 만들고 안전한 위치에 저장해야 합니다.
EKM 공급자가 요구하는 옵션 및 매개 변수는 다음 코드 예제에서 제공하는 옵션과 다를 수 있습니다. 자세한 내용은 해당 EKM 공급자를 참조하십시오.
사용 권한
이 문서에서 사용하는 사용 권한은 다음과 같습니다.
구성 옵션을 변경하고 문을 실행
RECONFIGURE하려면 서버 수준 권한을 부여ALTER SETTINGS해야 합니다.ALTER SETTINGS권한은 sysadmin 및 serveradmin 고정 서버 역할에 의해 암시적으로 보유됩니다.ALTER ANY CREDENTIAL사용 권한이 필요합니다.ALTER ANY LOGIN사용 권한이 필요합니다.CREATE ASYMMETRIC KEY사용 권한이 필요합니다.데이터베이스를
CONTROL암호화하려면 데이터베이스에 대한 권한이 필요합니다.
Transact-SQL 사용
EKM 공급자가 제공한 파일을 SQL Server 컴퓨터의 적절한 위치에 복사합니다. 이 예제에서는 폴더를
C:\EKM_Files사용합니다.EKM 공급자의 요구 사항에 따라 컴퓨터에 인증서를 설치합니다.
주의
SQL Server는 EKM 공급자를 제공하지 않습니다. 각 EKM 공급자는 사용자를 설치, 구성 및 권한을 부여하기 위한 절차가 다를 수 있습니다. 이 단계를 완료하려면 EKM 공급자 설명서를 참조하세요.
개체 탐색기에서 데이터베이스 엔진인스턴스에 연결합니다.
표준 도구 모음에서 새 쿼리를 선택합니다.
다음 예시를 복사하여 쿼리 창에 붙여넣고 실행을 선택합니다.
-- Enable advanced options. EXECUTE sp_configure 'show advanced options', 1; GO RECONFIGURE; GO -- Enable EKM provider EXECUTE sp_configure 'EKM provider enabled', 1; GO RECONFIGURE; GO -- Create a cryptographic provider, which we have chosen to call "EKM_Prov," based on an EKM provider CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov FROM FILE = 'C:\EKM_Files\KeyProvFile.dll'; GO -- Create a credential that will be used by system administrators. CREATE CREDENTIAL sa_ekm_tde_cred WITH IDENTITY = 'Identity1', SECRET = '<password>' FOR CRYPTOGRAPHIC PROVIDER EKM_Prov; GO -- Add the credential to a high privileged user such as your -- own domain login in the format [DOMAIN\login]. ALTER LOGIN [Contoso\Mary] ADD CREDENTIAL sa_ekm_tde_cred; GO -- create an asymmetric key stored inside the EKM provider USE master; GO CREATE ASYMMETRIC KEY ekm_login_key FROM PROVIDER [EKM_Prov] WITH ALGORITHM = RSA_512, PROVIDER_KEY_NAME = 'SQL_Server_Key'; GO -- Create a credential that will be used by the Database Engine. CREATE CREDENTIAL ekm_tde_cred WITH IDENTITY = 'Identity2', SECRET = '<secret>' FOR CRYPTOGRAPHIC PROVIDER EKM_Prov; -- Add a login used by TDE, and add the new credential to the login. CREATE LOGIN EKM_Login FROM ASYMMETRIC KEY ekm_login_key; GO ALTER LOGIN EKM_Login ADD CREDENTIAL ekm_tde_cred; GO -- Create the database encryption key that will be used for TDE. USE AdventureWorks2022; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key; GO -- Alter the database to enable transparent data encryption. ALTER DATABASE AdventureWorks2022 SET ENCRYPTION ON; GO
관련 콘텐츠
- SQL Database, SQL Managed Instance 및 Azure Synapse Analytics에 대한 투명한 데이터 암호화
- sp_configure(Transact-SQL)
- CREATE CRYPTOGRAPHIC PROVIDER(Transact-SQL)
- CREATE CREDENTIAL(Transact-SQL)
- CREATE ASYMMETRIC KEY(Transact-SQL)
- CREATE LOGIN(Transact-SQL)
- CREATE DATABASE ENCRYPTION KEY(Transact-SQL)
- ALTER LOGIN(Transact-SQL)
- ALTER DATABASE(Transact-SQL)