MSDB 데이터베이스가 왜 신뢰할 수 있습니까?


9

TRUSTWORTHY주의하지 및 추천이 꺼지기 유지하는 것입니다 특정 상황을 제외하면 설정은 오히려 위험 할 수 있습니다. 그러나 기본적으로 MSDB데이터베이스는 기본적으로 TRUSTWORHTY설정 ON되어 있습니다. 왜 궁금한가요?

이 항목을 BOL 에서 읽었습니다.

참고 기본적으로 TRUSTWORTHY 설정은 MSDB 데이터베이스에 대해 ON으로 설정되어 있습니다. 이 설정을 기본값에서 변경하면 MSDB 데이터베이스를 사용하는 SQL Server 구성 요소에서 예기치 않은 동작이 발생할 수 있습니다.

그러나 나는 세부 사항에 대해 궁금합니다. 왜 구체적으로 설정 MSDB해야 TRUSTWORTHY합니까? 어떤 기능을 사용합니까?


2
WHY에 대한 연구없이 간단히 생각하면 SQL 에이전트 서비스가 인스턴스의 모든 DB와 상호 작용하여 알림, 기타 외부 리소스에 DB 메일을 사용할 수 있습니다. SQL 에이전트 작업 내의 경로, AD 개체 등
Pimp Juice IT

1
@JUICED_IT는 SQL 에이전트 작업 기록, 로그 전달 모니터 기록, SSIS 패키지, 데이터베이스 엔진 튜닝 관리자 데이터 및 Service Broker 큐 데이터 및 백업 정보도 제공합니다. 그것은 표준 행동을 원하는 많은 것들입니다. sqlperformance.com/2015/07/sql-maintenance/msdb
ConstantineK

크로스 데이터베이스 호출을 사용하는 모든 것이 필요하다고 생각합니다. 당신은 설정해야합니다 TRUSTWORTHY에 대한 OFF로 msdb작동을 중지하고 대답 :)의 적어도 일부가 무슨보고. BACKUP에 문제가 있다고 생각했지만 방금 시도했지만 성공했습니다.
Solomon Rutzky

답변:


3

msdb해당 master데이터베이스 에는 수십 개의 객체 가 있습니다.

msdb가로 표시되지 않은 경우 TRUSTWORTHY사용자 msdb는 상호 작용하는 master개체 와 참조중인 개체에 대한 권한이 필요합니다 .

예를 들어, SQLAgentUserRole 데이터베이스 역할을 통해 권한을 얻는 msdb 사용자에게는에 대한 실행 권한이 부여됩니다 msdb.dbo.sp_enum_sqlagent_subsystems. 해당 프로 시저의 호출 스택은 결국 master다음과 같습니다.

* msdb.dbo.sp_enum_sqlagent_subsystems
    * msdb.dbo.sp_enum_sqlagent_subsystems_internal
        * master.dbo.xp_instance_regread

만약 msdb으로 표시되지 않은 TRUSTWORTHY관련 항목에 실행 권한을 필요 것 SQLAgentUserRole 데이터베이스 역할의 일부, 다음 사용자 master.dbo.xp_instance_regread.

기술적으로 말하면에서 TRUSTWORTHY설정 을 제거 msdb하고 대신에 특정 권한을 부여 할 수 있습니다 master. 그러나 필요한 권한은 문서화되거나 지원되지 않습니다.


당신은 아마 맞지만 그렇다면 그렇다면 MSDB 소유자가 그러한 권한을 갖는 것이 중요합니다.
케네스 피셔

@KennethFisher 아마? 일반적으로 msdb의 데이터베이스 소유자를 엉망으로 만들지 않으므로 확실하지 않습니다. 나는 항상 그것을 그대로 sa로 남겨 두었습니다. 나는 합법적으로 그렇게 생각하지 않았습니다.
AMtwo

아하지만 서버 : 인수하는 내가 신뢰할 수와 함께 그 SA 액세스를 사용할 수 있습니다 MSDB에 적절한 권한이있는 경우
케네스 피셔

진실. 그러나 이것이 시스템 DB에 대한 액세스를 신중하게 제한해야하는 이유입니다. DBA가 아닌 경우 시스템 데이터베이스에 접속할 필요가 없습니다.
AMtwo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.