다음을 통해 공유


TDE(투명한 데이터 암호화)

TDE(투명한 데이터 암호화)는 미사용 데이터 암호화라고 하는 SQL Server 및 Azure SQL Database 데이터 파일을 암호화합니다. 보안 시스템 설계, 기밀 자산 암호화 및 데이터베이스 서버 주변에 방화벽 빌드와 같은 몇 가지 예방 조치를 통해 데이터베이스를 보호할 수 있습니다. 그러나 물리적 미디어(예: 드라이브 또는 백업 테이프)를 도난당한 시나리오에서는 악의적인 당사자가 데이터베이스를 복원하거나 연결하고 데이터를 찾아볼 수 있습니다. 한 가지 해결 방법은 데이터베이스의 중요한 데이터를 암호화하고 인증서로 데이터를 암호화하는 데 사용되는 키를 보호하는 것입니다. 이렇게 하면 키가 없는 모든 사용자가 데이터를 사용할 수 없지만 이러한 종류의 보호는 미리 계획해야 합니다.

TDE는 데이터 및 로그 파일에 대한 실시간 I/O 암호화 및 암호 해독을 수행합니다. 암호화에는 복구 중에 사용 가능하도록 데이터베이스 부트 레코드에 저장된 DEK(데이터베이스 암호화 키)가 사용됩니다. DEK는 서버의 마스터 데이터베이스에 저장된 인증서 또는 EKM 모듈로 보호되는 비대칭 키를 사용하여 보호되는 대칭 키입니다. TDE는 데이터 및 로그 파일을 의미하는 "유휴" 데이터를 보호하고 다양한 업계에서 확립된 법, 규정 및 지침에 부합하는 기능을 제공합니다. 이를 통해 소프트웨어 개발자는 기존 애플리케이션을 변경하지 않고 AES 및 3DES 암호화 알고리즘을 사용하여 데이터를 암호화할 수 있습니다.

중요합니다

TDE는 통신 채널 간에 암호화를 제공하지 않습니다. 통신 채널 간에 데이터를 암호화하는 방법에 대한 자세한 내용은 데이터베이스 엔진에 대한 암호화된 연결 사용(SQL Server 구성 관리자)을 참조하세요.

관련 항목:

TDE 정보

데이터베이스 파일의 암호화는 페이지 수준에서 수행됩니다. 암호화된 데이터베이스의 페이지는 디스크에 기록되기 전에 암호화되고 메모리로 읽을 때 암호가 해독됩니다. TDE는 암호화된 데이터베이스의 크기를 늘리지 않습니다.

SQL Database에 적용되는 정보

SQL Database V12 V12(일부 지역에서 미리 보기)와 함께 TDE를 사용하는 경우 마스터 데이터베이스에 저장된 서버 수준 인증서가 SQL Database에 의해 자동으로 만들어집니다. SQL Database에서 TDE 데이터베이스를 이동하려면 데이터베이스의 암호를 해독하고 데이터베이스를 이동한 다음 대상 SQL Database에서 TDE를 다시 사용하도록 설정해야 합니다. SQL Database의 TDE에 대한 단계별 지침은 Azure SQL Database를 사용한 투명한 데이터 암호화를 참조하세요.

TDE 상태 미리 보기는 SQL Database의 버전 제품군 V12가 현재 일반 공급 상태로 발표되는 지리적 지역의 하위 집합에도 적용됩니다. Microsoft가 TDE를 미리 보기에서 GA로 승격한다고 발표하기 전까지는 SQL Database용 TDE를 프로덕션 데이터베이스에서 사용할 수 없습니다. SQL Database V12에 대한 자세한 내용은 Azure SQL Database의 새로운 기능입니다.

SQL Server에 적용되는 정보

보안이 유지되면 올바른 인증서를 사용하여 데이터베이스를 복원할 수 있습니다. 인증서에 대한 자세한 내용은 SQL Server Certificates and Asymmetric Keys를 참조하십시오.

TDE를 사용하도록 설정하는 경우 인증서 및 인증서와 연결된 프라이빗 키를 즉시 백업해야 합니다. 인증서를 사용할 수 없게 되거나 다른 서버에서 데이터베이스를 복원하거나 연결하는 경우 인증서와 프라이빗 키의 백업이 모두 필요하며 백업이 없다면 데이터베이스를 열 수 없게 됩니다. 데이터베이스에서 TDE를 더 이상 사용하도록 설정하지 않은 경우에도 암호화 인증서를 유지해야 합니다. 데이터베이스가 암호화되지 않더라도 트랜잭션 로그의 일부는 여전히 보호된 상태로 유지될 수 있으며 데이터베이스의 전체 백업이 수행될 때까지 일부 작업에 인증서가 필요할 수 있습니다. 만료 날짜를 초과한 인증서는 TDE를 사용하여 데이터를 암호화하고 암호 해독하는 데 계속 사용할 수 있습니다.

암호화 계층

다음 그림에서는 TDE 암호화의 아키텍처를 보여 줍니다. 데이터베이스 수준 항목만(데이터베이스 암호화 키 및 ALTER DATABASE 부분은 SQL Database에서 TDE를 사용할 때 사용자 구성 가능)

항목에 설명된 계층 구조를 표시합니다.

투명한 데이터 암호화 사용

TDE를 사용하려면 다음 단계를 수행합니다.

적용 대상: SQL Server.
  • 마스터 키 만들기

  • 마스터 키로 보호되는 인증서 만들기 또는 가져오기

  • 데이터베이스 암호화 키 만들기 및 인증서로 보호

  • 암호화를 사용하도록 데이터베이스 설정

다음 예제에서는 이름이 지정된 MyServerCert서버에 설치된 인증서를 사용하여 데이터베이스를 암호화하고 암호 해독하는 AdventureWorks2012 방법을 보여 줍니다.

USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';
go
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';
go
USE AdventureWorks2012;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2012
SET ENCRYPTION ON;
GO

암호화 및 암호 해독 작업은 SQL Server의 백그라운드 스레드에서 예약됩니다. 이 항목의 뒷부분에 나오는 목록에서 카탈로그 뷰 및 동적 관리 뷰를 사용하여 이러한 작업의 상태를 볼 수 있습니다.

주의

TDE를 사용하도록 설정된 데이터베이스의 백업 파일도 데이터베이스 암호화 키를 사용하여 암호화됩니다. 따라서 이러한 백업을 복원할 때 데이터베이스 암호화 키를 보호하는 인증서를 사용할 수 있어야 합니다. 즉, 데이터베이스를 백업하는 것 외에도 데이터 손실을 방지하기 위해 서버 인증서의 백업을 유지 관리해야 합니다. 인증서를 더 이상 사용할 수 없는 경우 데이터 손실이 발생합니다. 자세한 내용은 SQL Server Certificates and Asymmetric Keys을 참조하세요.

명령 및 함수

다음 문에서 수락하려면 데이터베이스 마스터 키로 TDE 인증서를 암호화해야 합니다. 암호로만 암호화된 경우 문장은 이를 암호화 방식으로서 거부합니다.

중요합니다

TDE에서 사용한 후 인증서를 암호로 보호하도록 변경하면 다시 시작한 후에 데이터베이스에 액세스할 수 없게 됩니다.

다음 표에서는 TDE 명령 및 함수에 대한 링크와 설명을 제공합니다.

명령 또는 함수 목적
CREATE DATABASE ENCRYPTION KEY(Transact-SQL) 데이터베이스를 암호화하는 데 사용되는 키를 만듭니다.
ALTER DATABASE ENCRYPTION KEY(Transact-SQL) 데이터베이스를 암호화하는 데 사용되는 키를 변경합니다.
DROP DATABASE ENCRYPTION KEY(Transact-SQL) 데이터베이스를 암호화하는 데 사용된 키를 제거합니다.
ALTER DATABASE 설정 옵션(Transact-SQL) TDE를 ALTER DATABASE 사용하도록 설정하는 데 사용되는 옵션을 설명합니다.

카탈로그 뷰 및 동적 관리 뷰

다음 표에서는 TDE 카탈로그 뷰 및 동적 관리 뷰를 보여줍니다.

카탈로그 뷰 또는 동적 관리 뷰 목적
sys.databases(Transact-SQL) 데이터베이스 정보를 표시하는 카탈로그 뷰입니다.
sys.certificates(Transact-SQL) 데이터베이스의 인증서를 보여 주는 카탈로그 뷰입니다.
sys.dm_database_encryption_keys(Transact-SQL) 데이터베이스에 사용되는 암호화 키 및 데이터베이스 암호화 상태에 대한 정보를 제공하는 동적 관리 뷰입니다.

권한

각 TDE 기능 및 명령에는 앞서 설명한 표에 설명된 개별 사용 권한 요구 사항이 있습니다.

TDE와 관련된 메타데이터를 보려면 인증서에 대한 VIEW DEFINITION 권한이 필요합니다.

고려 사항

데이터베이스 암호화 작업에 대한 다시 암호화 검사가 진행되는 동안 데이터베이스에 대한 유지 관리 작업을 사용할 수 없습니다. 데이터베이스에 대한 단일 사용자 모드 설정을 사용하여 유지 관리 작업을 수행할 수 있습니다. 자세한 내용은 데이터베이스를 단일 사용자 모드로 설정을 참조하세요.

sys.dm_database_encryption_keys 동적 관리 뷰를 사용하여 데이터베이스 암호화 상태를 찾을 수 있습니다. 자세한 내용은 이 항목의 앞부분에 있는 "카탈로그 뷰 및 동적 관리 뷰" 섹션을 참조하세요.)

TDE에서는 데이터베이스의 모든 파일 및 파일 그룹이 암호화됩니다. 데이터베이스의 파일 그룹이 READ ONLY로 표시되면 데이터베이스 암호화 작업이 실패합니다.

데이터베이스 미러링 또는 로그 전달에서 데이터베이스를 사용하는 경우 두 데이터베이스가 모두 암호화됩니다. 로그 트랜잭션 간에 전송될 때 암호화됩니다.

중요합니다

모든 새 전체 텍스트 인덱스는 암호화를 위해 데이터베이스를 설정할 때 암호화됩니다. 이전에 만든 전체 텍스트 인덱스는 업그레이드 중에 가져오며 데이터가 SQL Server에 로드된 후 TDE에 있습니다. 열에서 전체 텍스트 인덱스를 사용하도록 설정하면 전체 텍스트 인덱싱 검사 중에 해당 열의 데이터가 일반 텍스트로 디스크에 기록될 수 있습니다. 중요한 암호화된 데이터에 대해 전체 텍스트 인덱스가 만들어지지 않는 것이 좋습니다.

암호화된 데이터는 동일한 암호화되지 않은 데이터보다 훨씬 적게 압축됩니다. TDE를 사용하여 데이터베이스를 암호화하는 경우 백업 압축은 백업 스토리지를 크게 압축할 수 없습니다. 따라서 TDE 및 백업 압축을 함께 사용하는 것은 권장되지 않습니다.

제한 사항

초기 데이터베이스 암호화, 키 변경 또는 데이터베이스 암호 해독 중에는 다음 작업이 허용되지 않습니다.

  • 데이터베이스의 파일 그룹에서 파일 삭제

  • 데이터베이스 삭제

  • 데이터베이스를 오프라인으로 전환

  • 데이터베이스 분리

  • 데이터베이스 또는 파일 그룹을 READ ONLY 상태로 전환

CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY 또는 ALTER DATABASE SET ENCRYPTION 문 중에는 다음 작업이 허용되지 않습니다.

  • 데이터베이스의 파일 그룹에서 파일을 삭제합니다.

  • 데이터베이스를 삭제합니다.

  • 데이터베이스를 오프라인으로 전환합니다.

  • 데이터베이스 분리.

  • 데이터베이스 또는 파일 그룹을 READ ONLY 상태로 전환합니다.

  • ALTER DATABASE 명령을 사용합니다.

  • 데이터베이스 또는 데이터베이스 파일 백업을 시작합니다.

  • 데이터베이스 또는 데이터베이스 파일 복원을 시작합니다.

  • 스냅샷 만들기

다음 작업 또는 조건은 CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY 또는 ALTER DATABASE...SET ENCRYPTION 문을 방지합니다.

  • 데이터베이스가 읽기 전용이거나 읽기 전용 파일 그룹이 있습니다.

  • ALTER DATABASE 명령이 실행되고 있습니다.

  • 모든 데이터 백업이 실행 중입니다.

  • 데이터베이스가 오프라인 또는 복원 상태에 있습니다.

  • 스냅샷이 진행 중입니다.

  • 데이터베이스 유지 관리 작업.

데이터베이스 파일을 만들 때 TDE를 사용하는 경우 즉시 파일 초기화를 사용할 수 없습니다.

비대칭 키를 사용하여 데이터베이스 암호화 키를 암호화하려면 비대칭 키가 확장 가능한 키 관리 공급자에 있어야 합니다.

투명한 데이터 암호화 및 트랜잭션 로그

데이터베이스에서 TDE를 사용하도록 설정하면 가상 트랜잭션 로그의 나머지 부분을 "제로 아웃"하여 다음 가상 트랜잭션 로그를 강제로 적용할 수 있습니다. 이렇게 하면 데이터베이스가 암호화되도록 설정된 후 트랜잭션 로그에 명확한 텍스트가 남아 있지 않습니다. 이 예제와 같이 sys.dm_database_encryption_keys 보기에서 encryption_state 열을 확인하여 로그 파일 암호화 상태를 찾을 수 있습니다.

USE AdventureWorks2012;
GO
/* The value 3 represents an encrypted state 
   on the database and transaction logs. */
SELECT *
FROM sys.dm_database_encryption_keys
WHERE encryption_state = 3;
GO

SQL Server 로그 파일 아키텍처에 대한 자세한 내용은 트랜잭션 로그(SQL Server)를 참조하세요.

데이터베이스 암호화 키를 변경하기 전에 트랜잭션 로그에 기록된 모든 데이터는 이전 데이터베이스 암호화 키를 사용하여 암호화됩니다.

데이터베이스 암호화 키를 두 번 수정한 후에는 데이터베이스 암호화 키를 다시 수정하기 전에 로그 백업을 수행해야 합니다.

투명한 데이터 암호화 및 tempdb 시스템 데이터베이스

SQL Server 인스턴스의 다른 데이터베이스가 TDE를 사용하여 암호화된 경우 tempdb 시스템 데이터베이스가 암호화됩니다. 이는 SQL Server의 동일한 인스턴스에서 암호화되지 않은 데이터베이스의 성능에 영향을 미칠 수 있습니다. tempdb 시스템 데이터베이스에 대한 자세한 내용은 tempdb 데이터베이스를 참조하세요.

투명한 데이터 암호화 및 복제

복제는 TDE 사용 데이터베이스의 데이터를 암호화된 형식으로 자동으로 복제하지 않습니다. 배포 및 구독자 데이터베이스를 보호하려면 TDE를 별도로 사용하도록 설정해야 합니다. 스냅샷 복제는 트랜잭션 및 병합 복제를 위한 데이터의 초기 배포뿐만 아니라 암호화되지 않은 중간 파일에 데이터를 저장할 수 있습니다. 예를 들어 bcp 파일입니다. 트랜잭션 또는 병합 복제 중에 통신 채널을 보호하기 위해 암호화를 사용하도록 설정할 수 있습니다. 자세한 내용은 데이터베이스 엔진에 대한 암호화된 연결 사용(SQL Server 구성 관리자)을 참조하세요.

투명한 데이터 암호화 및 FILESTREAM 데이터

TDE를 사용하는 경우에도 FILESTREAM 데이터는 암호화되지 않습니다.

투명한 데이터 암호화 및 버퍼 풀 확장

데이터베이스가 TDE를 사용하여 암호화된 경우 BPE(버퍼 풀 확장)와 관련된 파일은 암호화되지 않습니다. BPE 관련 파일에 Bitlocker 또는 EFS와 같은 파일 시스템 수준 암호화 도구를 사용해야 합니다.

투명한 데이터 암호화 및 OLTP In-Memory

In-Memory OLTP 개체가 있는 데이터베이스에서 TDE를 사용하도록 설정할 수 있습니다. In-Memory OLTP 로그 레코드는 TDE를 사용하는 경우 암호화됩니다. TDE를 사용하는 경우 MEMORY_OPTIMIZED_DATA 파일 그룹의 데이터는 암호화되지 않습니다.

또한 참조하십시오

TDE로 보호된 데이터베이스를 다른 SQL 서버로 이동하기EKM을 사용하여 TDE 활성화하기Azure SQL Database에서 투명한 데이터 암호화SQL 서버 암호화SQL 서버 및 데이터베이스 암호화 키(데이터베이스 엔진)SQL 서버 데이터베이스 엔진 및 Azure SQL Database용 보안 센터FILESTREAM(SQL 서버)