sp_control_dbmasterkey_password(Transact-SQL)

적용 대상:SQL ServerAzure SQL Managed Instance

데이터베이스 마스터 키를 여는 데 필요한 암호가 포함된 자격 증명을 추가 또는 삭제합니다.

Transact-SQL 구문 표기 규칙

구문

  
sp_control_dbmasterkey_password @db_name = 'database_name,  
     @password = 'master_key_password' , @action = { 'add' | 'drop' }  

인수

@db_name=N'database_name'
이 자격 증명과 연결된 데이터베이스의 이름을 지정합니다. 시스템 데이터베이스일 수 없습니다. database_name nvarchar입니다.

@password=N'password'
마스터 키의 암호를 지정합니다. 암호가 nvarchar입니다.

@action=N'add'
지정된 데이터베이스에 대한 자격 증명이 자격 증명 저장소에 추가되도록 지정합니다. 자격 증명에는 데이터베이스 마스터 키의 암호가 포함됩니다. 전달된 @action 값은 nvarchar입니다.

@action=N'drop'
지정된 데이터베이스에 대한 자격 증명이 자격 증명 저장소에서 삭제되도록 지정합니다. 전달된 @action 값은 nvarchar입니다.

설명

SQL Server에서 키를 해독하거나 암호화하기 위해 데이터베이스 마스터 키가 필요한 경우 SQL Server는 인스턴스의 서비스 마스터 키를 사용하여 데이터베이스 마스터 키의 암호를 해독하려고 합니다. 암호 해독에 실패하면 SQL Server는 자격 증명 저장소에서 마스터 키가 필요한 데이터베이스와 동일한 패밀리 GUID가 있는 마스터 키 자격 증명을 검색합니다. 그런 다음 SQL Server는 암호 해독이 성공하거나 더 이상 자격 증명이 없을 때까지 일치하는 각 자격 증명으로 데이터베이스 마스터 키의 암호를 해독하려고 시도합니다.

주의

sa 및 기타 높은 권한이 있는 서버 보안 주체에 액세스할 수 없는 데이터베이스에 대한 마스터 키 자격 증명을 만들지 마세요. 서비스 마스터 키로 키 계층을 해독할 수 없도록 데이터베이스를 구성할 수 있습니다. 이 옵션은 sa 또는 기타 높은 권한의 서버 보안 주체가 액세스할 수 없는 암호화된 정보를 포함하는 데이터베이스에 대한 심층 방어로 지원됩니다. 이러한 데이터베이스에 대한 마스터 키 자격 증명을 만들면 이 심층 방어가 제거되어 sa 및 기타 높은 권한이 있는 서버 보안 주체가 데이터베이스의 암호를 해독할 수 있습니다.

sp_control_dbmasterkey_password 사용하여 만든 자격 증명은 sys.master_key_passwords 카탈로그 뷰에 표시됩니다. 데이터베이스 마스터 키에 대해 만들어진 자격 증명의 이름은 다음과 같은 형식 ##DBMKEY_<database_family_guid>_<random_password_guid>##입니다. 암호는 자격 증명 비밀로 저장됩니다. 자격 증명 저장소에 추가된 각 암호의 경우 sys.credentials에 관련 행이 있습니다.

sp_control_dbmasterkey_password 사용하여 master, model, msdb 또는 tempdb와 같은 시스템 데이터베이스에 대한 자격 증명을 만들 수 없습니다.

sp_control_dbmasterkey_password 암호가 지정된 데이터베이스의 마스터 키를 열 수 있는지 확인하지 않습니다.

지정된 데이터베이스의 자격 증명에 이미 저장된 암호를 지정하면 sp_control_dbmasterkey_password 실패합니다.

참고 항목

다른 서버 인스턴스에 있는 두 데이터베이스는 같은 패밀리 GUID를 공유할 수 있습니다. 이 경우 데이터베이스는 자격 증명 저장소에서 동일한 마스터 키 레코드를 공유합니다.

sp_control_dbmasterkey_password 전달된 매개 변수는 추적에 표시되지 않습니다.

참고 항목

sp_control_dbmasterkey_password 사용하여 데이터베이스 마스터 키를 열어 추가한 자격 증명을 사용하는 경우 데이터베이스 마스터 키는 서비스 마스터 키로 다시 암호화됩니다. 데이터베이스가 읽기 전용 모드인 경우 다시 암호화 작업이 실패하고 데이터베이스 마스터 키가 암호화되지 않은 상태로 유지됩니다. 데이터베이스 마스터 키에 대한 후속 액세스의 경우 OPEN MASTER KEY 문과 암호를 사용해야 합니다. 암호를 사용하지 않도록 하려면 데이터베이스를 읽기 전용 모드로 이동하기 전에 자격 증명을 만듭니다.

잠재적인 이전 버전과의 호환성 문제: 현재 저장 프로시저는 마스터 키가 있는지 여부를 확인하지 않습니다. 이전 버전과의 호환성을 위해 허용되지만 경고가 표시됩니다. 이 기능은 더 이상 지원되지 않습니다. 향후 릴리스에서는 마스터 키가 존재해야 하며 저장 프로시저 sp_control_dbmasterkey_password 사용된 암호는 데이터베이스 마스터 키를 암호화하는 데 사용되는 암호 중 하나와 동일한 암호여야 합니다.

사용 권한

sysadmin 고정 서버 역할의 멤버 자격이 필요합니다.

A. AdventureWorks 마스터 키에 대한 자격 증명 만들기

다음 예제에서는 데이터베이스 마스터 키에 대한 자격 증명을 AdventureWorks2022 만들고 마스터 키 암호를 자격 증명의 비밀로 저장합니다. 전달되는 sp_control_dbmasterkey_password 모든 매개 변수는 nvarchar 데이터 형식이어야 하므로 텍스트 문자열은 캐스팅 연산N자를 사용하여 변환됩니다.

EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks2022',   
    @password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'add';  
GO  

B. 데이터베이스 마스터 키에 대한 자격 증명 삭제

다음 예에서는 예 1에서 만든 자격 증명을 삭제합니다. 여기에는 암호를 포함한 모든 매개 변수가 필요합니다.

EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks2022',   
    @password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'drop';  
GO  

참고 항목

암호화된 미러 데이터베이스 설정
보안 저장 프로시저(Transact-SQL)
시스템 저장 프로시저(Transact-SQL)
sys.credentials(Transact-SQL)
자격 증명(데이터베이스 엔진)