데이터 보호는 조직이 GDPR 과 같은 규제 준수 표준을 준수하고 고객 및 비즈니스 파트너의 기대를 충족하는 데 필수적입니다. 데이터 유출 로 인해 큰 벌금이 발생할 수 있을 뿐 아니라 평판상의 피해도 그에 못지않게 클 수 있습니다. 이를 돕기 위해 Microsoft SQL Server는 데이터를 보호하기 위한 5가지 서로 다른 유형의 암호화를 지원합니다. 이 문서는 각각이 무엇인지, 그리고 어디에 사용해야 하는지를 설명합니다.
엄선한 관련 콘텐츠:
SSL 전송 암호화
브라우저와 서버 간 트래픽을 보호하는 웹사이트와 마찬가지로, SQL Server는 Secure Sockets Layer(SSL)를 사용하도록 구성하여 서버 인스턴스와 클라이언트 애플리케이션 간에 전송되는 트래픽을 암호화할 수 있습니다. 또한 클라이언트는 서버의 인증서를 사용해 서버의 신원을 검증할 수 있습니다. SSL은 네트워크를 통해 전송되는 동안의 데이터만 보호하지만, 대부분의 다른 SQL Server 암호화 방식과 달리 SSL은 SQL Server의 지원되는 모든 버전과 모든 에디션에서 사용할 수 있습니다.
SSL을 사용하기 전에 SQL Server에 인증서를 설치해야 합니다. 가장 좋은 방법은 자체 엔터프라이즈 인증 기관(CA)에서 인증서를 요청하는 것입니다. Windows Server를 CA로 구성할 수 있으며, 클라이언트를 설정하여 해당 CA가 발급하는 인증서를 신뢰하도록 만들 수 있습니다. 또는 자체 서명 인증서를 사용할 수도 있지만, 이는 테스트 환경에 가장 적합합니다.
엄선한 관련 콘텐츠:
SQL Server 투명한 데이터 암호화(Transparent Data Encryption, TDE)
SQL Server의 Transparent Data Encryption (TDE)는 디스크에 저장된 데이터베이스 데이터와 로그 파일을 암호화하여 저장 데이터(휴지 상태)의 무결성과 기밀성을 보호합니다. TDE는 기존 애플리케이션에 대해 투명하게 동작하므로 TDE를 활성화하더라도 애플리케이션을 변경할 필요가 없습니다. TDE는 페이지 수준에서 실시간 암호화를 사용합니다. 페이지는 디스크에 기록되기 전에 암호화되며, 이 과정에서 데이터 및 로그 파일의 크기가 증가하지 않습니다. 또한 페이지는 메모리에 읽힐 때 복호화됩니다. TDE는 SQL Server의 Enterprise 에디션에서만 사용할 수 있습니다. 또한 Azure SQL Database, Azure SQL Data Warehouse 및 Parallel Data Warehouse에서도 작동합니다.
TDE 암호화는 계층 구조를 가지며, 최상위에 Windows Data Protection API (DPAPI)가 위치하여 이를 사용해 서비스 마스터 키(SMK)를 암호화합니다. SMK를 사용하면 서로 다른 데이터베이스에 있는 자격 증명, 연결된 서버의 암호, 그리고 데이터베이스 마스터 키(DMK)를 암호화할 수 있습니다. SQL DMK는 대칭 키로, 데이터베이스에 저장된 인증서의 개인 키와 비대칭 키를 보호합니다.
SQL Server는 TDE에 사용할 자체 서명 인증서를 생성할 수 있으며, 또는 CA에서 인증서를 요청할 수도 있습니다(일반적으로 더 흔한 방법입니다). TDE를 활성화하기로 결정했다면, 인증서와 인증서에 연결된 개인 키를 반드시 백업해야 합니다. 다른 SQL Server에 데이터베이스를 복원하거나 연결(attach)해야 합니다. 다른 SQL Server 데이터베이스에서 TDE를 활성화하면 tempdb 시스템 데이터베이스도 함께 암호화됩니다. TDE를 비활성화하는 경우에는 인증서와 개인 키를 보관해야 합니다. 부분적으로 암호화된 트랜잭션 로그가 남아 있을 수 있으며, 전체 백업을 수행하기 전까지는 암호화 상태가 유지될 수 있기 때문입니다.
TDE에는 데이터베이스 암호화 키(DEK)도 필요합니다. DEK는 마스터 데이터베이스에 저장된 인증서를 사용해 보호되는 대칭 키이거나, Extensible Key Management (EKM)를 사용하는 서비스(예: Microsoft Azure Key Vault)에 의해 보호되는 비대칭 키일 수 있습니다. TDE가 활성화된 데이터베이스의 백업 파일은 DEK로 암호화되므로, 복원 작업을 수행하는 동안에는 DEK를 보호하는 인증서가 반드시 사용 가능해야 합니다.
대칭 키는 데이터를 암호화하고 복호화하는 데 동일한 비밀번호(키)를 사용합니다. 비대칭 키는 데이터를 암호화하는 데는 한 가지 비밀번호(공개 키)를 사용하고, 복호화하는 데는 다른 비밀번호(개인 키)를 사용합니다. CREATE CERTIFICATE 명령을 사용해 인증서를 만들 수 있으며, CREATE SYMMETRIC KEY 및 CREATE ASYMMETRIC KEY Transact-SQL 명령을 사용해 데이터베이스 암호화 키를 생성할 수 있습니다.
백업 암호화
백업 암호화는 TDE와 유사하게 동작하지만, 활성 데이터 및 로그 파일 대신 SQL 백업을 암호화합니다. 백업 암호화는 SQL Server 2014 이상에서 사용할 수 있습니다. AES 128, AES 192, AES 256 또는 Triple DES 암호화를 지정할 수 있으며, EKM에 저장된 인증서 또는 비대칭 키 중 하나를 사용할 수 있습니다. 또한 TDE와 백업 암호화를 동시에 사용하도록 설정할 수도 있지만, 서로 다른 인증서나 키를 사용해야 합니다.
TDE와 마찬가지로 백업 암호화를 사용하도록 설정하면 인증서 또는 키도 함께 백업해야 합니다. 키나 인증서가 없으면 백업 파일을 사용해 데이터를 복원할 수 없습니다. 또한 SQL Server Managed Backup을 Microsoft Azure에 사용하는 경우 백업을 암호화할 수도 있습니다.
백업을 암호화할 때 인증서를 사용한다면 데이터를 복원할 때 원본 인증서가 반드시 있어야 한다는 점에 유의하세요. 즉, 인증서의 지문(Thumbprint)이 백업을 생성했을 때와 동일해야 합니다. 인증서를 갱신하거나 어떤 방식으로든 변경하면 지문이 바뀔 수 있습니다.
열/셀 수준 암호화
SQL Server의 모든 에디션에서 사용 가능하며, 셀 단위 암호화를 민감한 데이터를 포함하는 열에 대해 활성화할 수 있습니다. 데이터는 디스크에 암호화되어 저장되며, DECRYPTBYKEY 함수가 사용되어 복호화되기 전까지 메모리에서는 암호화된 상태로 유지됩니다. 따라서 SQL 데이터가 암호화되어 있더라도, 사용자 컨텍스트에서 복호화를 수행하는 함수를 단순히 사용하는 수준을 넘어서서는 보안이 충분하지 않습니다. 또한 데이터를 복호화하려면 함수가 필요하므로, 셀 단위 암호화를 지원하도록 클라이언트 애플리케이션을 수정해야 합니다.
암호화 키 관리
TDE와 마찬가지로 셀 단위 암호화를 사용하기 전에 마스터 키(DMK)를 생성해야 합니다. 셀 단위 암호화를 사용해 정보를 암호화하는 방법은 네 가지가 있습니다:
- 암호 구문을 사용하여 데이터를 암호화하고 복호화할 수 있지만, 저장 프로시저와 함수는 반드시 암호화해야 합니다. 그렇지 않으면 암호 구문이 메타데이터에서 액세스될 수 있습니다.
- 비대칭 키는 강력한 보안을 제공하지만 성능에 영향을 줄 수 있습니다.
- 대칭 키는 대개 충분히 강력하며 보안과 성능 사이에서 균형이 잘 맞습니다.
- 인증서 역시 보안과 성능 사이에서 좋은 균형을 제공하며, 데이터베이스 사용자와 연결할 수 있습니다.
Always Encrypted
Always Encrypted는 암호화 키를 데이터베이스 엔진에 노출하지 않고 클라이언트 애플리케이션에서 민감한 데이터를 암호화하여, 데이터 소유자와 데이터 관리자 간의 역할을 분리합니다. 예를 들어 Always Encrypted를 사용 설정하면 데이터베이스 관리자가 민감한 데이터를 읽을 수 없다는 점을 확실히 할 수 있습니다. 이름에서 알 수 있듯이 데이터는 저장 시 암호화되며, Azure와 같은 제3자 시스템에서 사용되는 경우에도 암호화됩니다.
Always Encrypted는 개별 데이터베이스 컬럼에 대해 구성할 수 있습니다. 두 가지 유형의 키가 사용됩니다. 컬럼 암호화 키와 컬럼 마스터 키입니다. 컬럼 암호화 키는 해당 컬럼의 데이터를 보호하며, 컬럼 마스터 키는 하나 이상의 컬럼 암호화 키를 암호화하는 ‘키 보호 키’입니다. 컬럼 마스터 키는 Azure Key Vault와 같은 외부의 신뢰할 수 있는 키 저장소에 저장됩니다.
암호화 프로세스는 클라이언트 애플리케이션에는 투명하지만, 클라이언트 컴퓨터에는 특수 드라이버가 필요합니다. Always Encrypted는 SQL Server 2016 이상에서 사용할 수 있지만, Enterprise 에디션에서만 제공합니다. 추가적인 클라이언트 측 요구사항이 있기 때문에, Always Encrypted는 데이터 소유자와 관리자의 분리가 주요 요구사항인 상황에 가장 적합합니다.
공유하기
더 알아보기
저자 소개
Russell Smith
IT 컨설턴트
관리 및 보안 기술을 전문으로 하는 IT 컨설턴트이자 저자입니다. Russell은 IT 분야에서 15년 이상의 경력을 보유하고 있으며, Windows 보안에 관한 책을 집필했고 Microsoft의 Official Academic Course (MOAC) 시리즈를 위한 저술에 공동 저자로 참여했습니다.