CREATE MASTER KEY(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

데이터베이스에서 데이터베이스 마스터 키를 만듭니다.

중요

  • 마스터 키는 BACKUP MASTER KEY를 사용하여 백업하고 백업 복사본을 외부의 안전한 위치에 보관해야 합니다.
  • 또한 SQL Server에서는 BACKUP SERVICE MASTER KEY를 사용하여 서비스 마스터 키를 백업하고 백업을 외부의 안전한 위치에 보관해야 합니다.

Transact-SQL 구문 표기 규칙

Syntax

CREATE MASTER KEY [ ENCRYPTION BY PASSWORD ='password' ]
[ ; ]

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

PASSWORD ='password'

데이터베이스의 마스터 키를 암호화하는 데 사용하는 암호입니다. password는 SQL Server 인스턴스를 실행하는 컴퓨터의 Windows 암호 정책 요구 사항을 충족해야 합니다. 암호는 SQL Database 및 Azure Synapse Analytics에서 선택 사항입니다.

설명

데이터베이스 마스터 키는 데이터베이스에 있는 인증서 및 비대칭 키의 프라이빗 키와 데이터베이스 범위 자격 증명의 비밀을 보호하는 데 사용되는 대칭 키입니다. 마스터 키는 생성 시에 AES_256 알고리즘 및 사용자 제공 암호를 사용하여 암호화됩니다. SQL Server 2008(10.0.x) 및 SQL Server 2008 R2(10.50.x)에서는 Triple DES 알고리즘이 사용됩니다. 마스터 키의 자동 암호 해독을 설정하기 위해 키 복사본이 서비스 마스터 키를 사용하여 암호화되고 해당 데이터베이스 및 master 모두에 저장됩니다. 일반적으로 master에 저장된 복사본은 마스터 키가 변경될 때마다 자동으로 업데이트됩니다. 이 기본값은 ALTER MASTER KEY의 DROP ENCRYPTION BY SERVICE MASTER KEY 옵션을 사용하여 변경할 수 있습니다. 서비스 마스터 키로 암호화되지 않은 마스터 키는 OPEN MASTER KEY 문과 암호를 사용하여 열어야 합니다.

master에서 sys.databases 카탈로그 뷰의 is_master_key_encrypted_by_server 열은 데이터베이스 마스터 키가 서비스 마스터 키로 암호화되었는지 여부를 나타냅니다.

데이터베이스 마스터 키에 대한 정보는 sys.symmetric_keys 카탈로그 뷰에 표시됩니다.

SQL Server 및 Parallel Data Warehouse의 경우 마스터 키는 일반적으로 서비스 마스터 키와 하나 이상의 암호로 보호됩니다. 데이터베이스가 실제로 다른 서버로 이동하는 경우(로그 전달, 백업 복원 등) 데이터베이스에는 원래 서버 서비스 마스터 키로 암호화된 마스터 키의 복사본(이 암호화가 ALTER MASTER KEY DDL을 사용하여 명시적으로 제거되지 않는 한) 및 CREATE MASTER KEY 또는 후속 ALTER MASTER KEY DDL 조작 중 지정된 각 암호로 암호화된 사본을 포함합니다. 마스터 키 및 데이터베이스를 이동한 후 키 계층에서 마스터 키를 루트로 사용하여 암호화한 모든 데이터를 복구하기 위해 사용자는 마스터 키를 보호하기 위해 사용한 암호 중 하나를 사용하여 OPEN MASTER KEY 문을 사용하거나, 마스터 키의 백업을 복원하거나 또는 새 서버에서 원래 서비스 마스터 키의 백업을 복원합니다.

SQL Database 및 Azure Synapse Analytics의 경우 마스터 키의 서비스 마스터 키 보호가 Microsoft Azure 플랫폼에서 관리되므로 데이터베이스를 한 서버에서 다른 서버로 이동할 수 있는 상황에서는 암호 보호가 데이터 손실 시나리오를 방지하는 안전 메커니즘으로 간주되지 않습니다. 따라서 마스터 키 암호는 SQL Database 및 Azure Synapse Analytics에서 선택 사항입니다.

SQL Database의 경우 데이터베이스 마스터 키를 자동으로 만들어 감사에 사용되는 데이터베이스 범위 자격 증명 및 Azure Storage 계정과 같은 외부 리소스에 인증하기 위해 데이터베이스 범위 자격 증명이 필요한 기타 기능의 비밀을 보호할 수 있습니다. 마스터 키는 강력한 임의로 선택된 암호로 만들어집니다. 사용자는 논리 master 데이터베이스에서 마스터 키를 만들 수 없습니다. 마스터 키 암호는 Microsoft에 알려지지 않았으며 만든 후에는 검색할 수 없습니다. 이러한 이유로 데이터베이스 범위 자격 증명을 만들기 전에 데이터베이스 마스터 키를 만드는 것이 좋습니다.

SMK(서비스 마스터 키)와 DMK(데이터베이스 마스터 키)는 AES-256 알고리즘을 사용하여 보호됩니다.

사용 권한

데이터베이스에 대한 CONTROL 권한이 필요합니다.

예제

데이터베이스에 데이터베이스 마스터 키를 만들려면 다음 예제를 사용합니다. 이 키는 암호를 사용하여 암호화됩니다.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';
GO

새 키인 ##MS_DatabaseMasterKey##가 있는지 확인합니다.

SELECT * FROM sys.symmetric_keys;
GO