Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  SMK 관련 오류 해결 방법 (Veritas / Legato) 
작성일시 : 2008. 7. 18. 23:34 | 분류 : SQL Server/Cluster

A 노드에서 백업 받은 SMK가 B 노드에서 복원이 않되는 것은 자연 스러운 현상입니다.
B 노드에서 SMK를 읽기 위해서는 DAPI를 사용하는데, 이는 SQL Server의 자격 증명으로부터 파생된 키를 이용하게 됩니다.

즉 이로 인해 동일 서비스 계정이 아닐 경우에는 SMK의 복원 자체가 불가능합니다.

만약 강제로 복원을 시도하는 경우에는 SMK가 재 생성되는 것과 마찮가지로써, 크리덴셜을 이용하는 링크드 서버 및 기타 인증서를 이용한 암호화 구성에 문제가 발생할 수 있습니다.

[현상]
Veritas/Legato 클러스터에 Fail over 직후에 Linked Server 등이 연결이 안된다.
메세지 15466, 수준 16, 상태 2

[원인]
SMK 정보 변경

연결된 서버 암호, 인증서 또는 데이터베이스 마스터 키를 처음으로 암호화할 필요가 있을 때 자동으로 생성됨
SMK는 로컬 시스템 키 또는 Windows 데이터 보호 API(DAPI)를 사용하여 암호화된다. 이 API는 SQL Server 서비스 계정의 Windows 자격 증명으로부터 파생된 키를 사용한다.

서비스 마스터 키의 암호는 해당 키가 만들어진 서비스 계정이나 해당 서비스 계정의 Windows 자격 증명에 대한 액세스 권한이 있는 보안 주체에 의해서만 해독될 수 있다. 따라서 SQL Server 서비스를 실행 중인 Windows 계정을 변경하면 서비스 마스터 키의 암호 해독도 새 계정으로 활성화해야 한다.

[해결 방안]
1. 서비스를 Fail back 한다.
2. SMK를 백업 한다.
3. 두 노드 모두 SQL 서버의 시작 계정을 도메인 계정으로 변경 한다. (해당 작업은 동일 머신 상에서 진행 되어야 합니다.)
4. 연결 오류 발견 시 기존에 백업했던 SMK를 복원 한다.

[기타]
- 백업 및 복원
BACKUP SERVICE MASTER KEY TO FILE = 'c:\service_master_key' ENCRYPTION BY PASSWORD = 'password'
RESTORE SERVICE MASTER KEY FROM FILE = 'c:\service_master_key' DECRYPTION BY PASSWORD = 'password' -- [FORCE]

- 재생성
ALTER SERVICE MASTER KEY REGENERATE

- 계정 변경
ALTER SERVICE MASTER KEY WITH OLD_ACCOUNT = 'old_service_account', OLD_PASSWORD = 'old_service_account_password'

http://blogs.msdn.com/lcris/archive/2005/07/08/437048.aspx
http://blogs.msdn.com/lcris/archive/2006/04/10/572678.aspx
http://blogs.msdn.com/lcris/archive/2005/09/30/475822.aspx
SMK에 대한 간단한 설명 : http://nexondbteam.tistory.com/35
SMK 생성 강제 적용 : http://support.microsoft.com/kb/914261

|