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.