sp_control_dbmasterkey_password(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'
마스터 키의 암호를 지정합니다. 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에 전달된 매개 변수는 추적에 표시되지 않습니다.
사용 권한
데이터베이스에 대한 CONTROL 권한이 필요합니다.
예
1. AdventureWorks 마스터 키에 대한 자격 증명 만들기
다음 예에서는 AdventureWorks
데이터베이스 마스터 키에 대한 자격 증명을 만들고 자격 증명에 있는 암호로 마스터 키 암호를 저장합니다. sp_control_dbmasterkey_password
에 전달되는 모든 매개 변수의 데이터 형식은 nvarchar여야 하기 때문에 텍스트 문자열은 형변환 연산자 N
으로 변환되어야 합니다.
EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks',
@password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'add';
GO
2. 데이터베이스 마스터 키에 대한 자격 증명 삭제
다음 예에서는 예 1에서 만든 자격 증명을 삭제합니다. 여기에는 암호를 포함한 모든 매개 변수가 필요합니다.
EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks',
@password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'drop';
GO
참고 항목
참조
보안 저장 프로시저(Transact-SQL)
시스템 저장 프로시저(Transact-SQL)
sys.credentials(Transact-SQL)