SQL Server 및 데이터베이스 암호화 키 (데이터베이스 엔진)

적용 대상:SQL Server

SQL Server에서는 암호화 키를 사용하여 데이터, 자격 증명 및 서버 데이터베이스에 저장된 연결 정보의 보안을 유지할 수 있습니다. SQL Server에는 대칭과 비대칭의 두 유형의 키가 있습니다. 대칭 키는 데이터 암호화 및 암호 해독에 동일한 비밀번호를 사용합니다. 비대칭 키는 비밀번호 하나는 데이터 암호화에 사용하고(공개 키라고 함) 다른 하나는 데이터 암호 해독에 사용합니다(프라이빗 키라고 함).

SQL Server에서는 암호화 키에 중요한 데이터를 보호하는 데 사용되는 공개, 프라이빗 및 대칭 키의 조합이 포함됩니다. 대칭 키는 SQL Server 인스턴스를 처음 시작할 때 SQL Server 초기화 중에 만들어집니다. SQL Server는 SQL Server에 저장된 민감한 데이터를 암호화하는 데 이 키를 사용합니다. 운영체제는 공개 키와 개인 키를 생성하며, 이 키들은 대칭 키를 보호합니다. 데이터베이스에 중요한 데이터를 저장하는 각 SQL Server 인스턴스에 대해 공개 및 프라이빗 키 쌍이 만들어집니다.

SQL Server 및 데이터베이스 키용 애플리케이션

SQL Server에서 키를 사용하는 두 가지 주요한 용도는 SQL Server 인스턴스에서 해당 인스턴스를 위해 생성되는 SMK(서비스 마스터 키)와 데이터베이스에 사용되는 DMK(데이터베이스 마스터 키)가 있습니다.

서비스 마스터 키

서비스 마스터 키는 SQL Server 암호화 계층의 루트입니다. SQL Server는 인스턴스가 처음 시작할 때 SMK를 생성하고, 이를 이용해 연결된 서버 비밀번호, 자격 증명, 그리고 각 데이터베이스의 데이터베이스 마스터키를 암호화합니다.

SMK는 로컬 머신 키나 Windows 데이터 보호 API(DPAPI)를 사용하여 암호화됩니다. DPAPI는 SQL Server 서비스 계정의 Windows 자격 증명에서 파생된 키를 사용합니다. 키가 두 방식으로 보호되기 때문에, 서비스 마스터 키는 이 키가 생성된 서비스 계정 또는 머신 자격 증명에 액세스할 수 있는 주체가 열 수 있습니다.

SQL Server는 AES 암호화 알고리즘을 사용하여 서비스 마스터 키와 데이터베이스 마스터 키를 보호합니다. AES는 SQL Server 2012(11.x) 이전 버전에서 사용된 3DES 알고리즘을 대체했습니다. 이전 버전 중 하나에서 데이터베이스 엔진 인스턴스를 업그레이드한 후, SMK와 DMK를 다시 생성하여 마스터 키를 AES로 업그레이드하세요. SMK를 다시 생성하는 방법에 대한 자세한 내용은 (Transact-SQL) 및 (Transact-SQL)를 참조ALTER SERVICEALTER SERVICE MASTER KEY하세요.ALTER MASTER KEY

데이터베이스 마스터 키

데이터베이스 마스터 키는 데이터베이스에 존재하는 인증서와 비대칭 키의 개인 키를 보호하는 대칭 키입니다. 데이터 암호화도 가능하지만, 길이 제한이 있어 비대칭 키보다 데이터 암호화에는 덜 실용적입니다. 데이터베이스 마스터 키의 자동 복호화를 가능하게 하기 위해 키 복사본을 SMK를 사용하여 암호화합니다. SQL Server는 그 복사본을 키가 사용되는 데이터베이스와 master 시스템 데이터베이스 모두에 저장합니다.

시스템 데이터베이스에 master 저장된 DMK 복사본은 DMK가 변경될 때마다 조용히 업데이트됩니다. ALTER MASTER KEY DROP ENCRYPTION BY SERVICE MASTER KEY 옵션을 사용하여 이 기본값을 변경할 수 있습니다. 서비스 마스터 키로 암호화되지 않은 DMK는 OPEN MASTER KEY (Transact-SQL) 및 비밀번호를 사용하여 열어야 합니다.

SQL Server 및 데이터베이스 키 관리

암호화 키를 관리하려면 새로운 데이터베이스 키를 생성하고, 서버 및 데이터베이스 키를 백업하며, 언제 어떻게 복원, 삭제, 변경할지 아는 것이 포함됩니다.

대칭 키를 관리하려면 SQL Server에 포함된 도구를 사용하여 다음 작업을 수행하세요:

  • 서버 및 데이터베이스의 키 복사본을 백업하여 서버 설치를 복구하거나 계획된 마이그레이션의 일부로 활용하세요.
  • 이전에 저장된 키를 데이터베이스에 복원합니다. 키를 복원하면 새 서버 인스턴스가 원래 암호화하지 않은 기존 데이터에 접근할 수 있게 됩니다.
  • 드물게 암호화된 데이터에 더 이상 액세스할 수 없는 경우, 데이터베이스에서 암호화된 데이터를 삭제합니다.
  • 키가 유출될 경우를 대비해 키를 다시 만들고 데이터를 다시 암호화하세요. 보안 모범 사례로서, 키를 몇 달마다 주기적으로 재생성하여 키를 해독하려는 공격으로부터 서버를 보호하세요.
  • 여러 서버가 단일 데이터베이스와 해당 데이터베이스에 대해 해독 가능한 암호화를 제공하는 키를 모두 공유하는 서버 스케일 아웃 배포에서 서버 인스턴스를 추가하거나 제거합니다.

중요한 보안 정보

서비스 마스터 키로 보호된 객체에 접근하려면, 키를 생성할 때 사용한 SQL Server 서비스 계정이거나, 키를 만든 시스템에 연결된 컴퓨터(기계) 계정이 필요합니다. SQL Server 서비스 계정또는 컴퓨터 계정을 변경할 수 있지만 키 접근 권한을 잃지 않습니다. 하지만 두 계정을 모두 변경하면 서비스 마스터 키에 접근할 수 없게 됩니다. 이 두 요소 중 하나 없이 서비스 마스터 키에 대한 액세스 권한을 잃으면, 원래 키가 암호화한 데이터와 객체를 복호화할 수 없습니다.

그 키가 없으면 서비스 마스터 키로 보호된 연결을 복구할 수 없습니다.

데이터베이스 마스터키로 안전하게 보호된 객체와 데이터에 접근하려면, 키를 안전하게 보호하는 비밀번호만 있으면 됩니다.

주의

이 글에서 설명한 키에 대한 모든 접근 권한을 잃으면, 그 키들로 보호된 객체, 연결, 데이터에 대한 접근도 잃게 됩니다. 서비스 마스터 키 복원에 설명된 대로 서비스 마스터 키를 복원할 수 있고, 원래 암호화 시스템으로 돌아가 액세스를 복구할 수도 있습니다. 접근 권한을 복구할 수 있는 우회 방법은 없습니다.