"View Server State"의 보안 및 성능 영향


13

이 질문 은 다양한 DMV (동적 관리 뷰)에 "서버 상태보기"권한이 필요하지만 권한을 부여하고 싶지 않은 사람에 대해서는 찾을 수 없습니다.

당연히 나는 "최소 권한"을 이해하고 왜 누군가에게 권한을 부여하고 싶지 않은지 이해하지만 권한 부여 여부를 평가하는 방법에 대한 지침을 찾을 수 없습니다.

제 질문 : 사용자에게 "서버 상태보기"권한을 부여 할 때 보안 및 성능에 미치는 영향은 무엇입니까? 그들이해서는 안되는 일을 어떻게 할 수 있습니까?

업데이트 : 한 가지 의미는 사용자가 DMV를 사용하여 쿼리를 볼 수 있다는 것입니다. 쿼리 또는 쿼리 매개 변수에 사용자가 볼 수없는 기밀 정보가 포함될 수있는 경우 VIEW SERVER STATE를 허용하면 그렇게 할 수 있습니다 (예 : dob = 또는 ssn =).

답변:


5

이 권한을 부여하여 생각할 수있는 중요한 성능 문제는 없습니다. 보안 관점에서 볼 때 사용자는 취약점에 대한 가장 자세한 정보를 볼 수있는 위험을 감수해야합니다. 예를 들어 악의적 인 사용자는 가장 일반적인 대기 통계를보고 서버에 대한 DoS 공격을 목표로 삼을 수 있습니다 .

이게 가능해? 명확히. 이 가능성이 있습니까? 아니요라고 대답해야하지만 회사에 대한 공격의 90 %가 내부 공격자 인 것으로 추정됩니다.


3

관리자는이 정보를 도메인 (성능 / 인덱스 사용량 등)에있는 것으로 볼 수 있지만, 개발 조직이 지원하는 대규모 레거시 시스템에 대해이 정보를 원할 수있는 강력한 이유가있을 수 있습니다. 예를 들어 유지 보수 프로세스에 의해.

결국 특정 요청이 정당화되는지 여부에 대한 요구가 명확한 선택이 아니라 부드러운 선택이기 때문에 항상 "행운과 관대함"의 문제가됩니다. 문맥을 보지 않고 모범 사례 패턴을 사용하는 것은 그 자체로 매우 반항 패턴이며 현실은 많은 사람들이 "손으로 대화"를 시작으로 자신의 위치에 접근한다는 것입니다.


1

성능에 미치는 영향과 관련하여 본인은이 권한이나 다른 권한에 대해 전혀 모릅니다.

에 관해서:

그들이해서는 안되는 일을 할 수있는 방법

간단히 말하면, 보지 말아야 할 것들을 볼 수 있습니다. 그리고 이것을 단지 SQL Server의 관점에서 생각하지 마십시오. 이 특정 권한은 또한 sys.dm_os_sys_info 와 같은 DMV 및 호스트 시스템 (하드웨어, 서비스 등)에 대한 통찰력을 제공하는 다른 몇 가지를 관리합니다. 어떤 정보가 자신에게 불리한 지 항상 알 수있는 것은 아닙니다. 그리고이 권한이 허용하는 모든 것을보고있는 누군가에게 괜찮더라도 DMV는 때때로 서비스 팩 / 누적 업데이트에 추가되므로 새로운 정보가 노출 될 수 있습니다.

부여 여부를 평가하는 방법에 대한 지침을 찾을 수 없습니다.

사람들에게 필요한 최소 권한을 부여하는 것에 대해 이미 언급 했으므로 이것이 실제로 발생하는 것은 누군가가 특별 사용을 위해이 권한이 필요 합니까? 의미, 누군가가 자신의 쿼리를 제기의 유연성이 필요합니까? 하나 이상의 저장 프로 시저 및 / 또는 다중 문 TVF 생성이 작동합니까? 그렇다면 사용자 에게 권한을 부여 할 필요가 없으며 (그러한 권한으로 허용되는 모든 것을 무료로 부여 할 수 있음) 대신 코드에 권한을 부여합니다 (코드화 된 작업 만 수행함). 모듈 서명은 이를 달성하는 방법입니다. 일반적인 개념은 다음과 같습니다.

  1. 저장 프로 시저 및 / 또는 다중 명령문 TVF를 작성하여 원하는 조치를 수행하십시오.
  2. EXECUTE이 작업을 수행하는 데 필요한 사용자 및 / 또는 역할에이 모듈을 부여하십시오 .
  3. 인증서 작성
  4. 해당 인증서를 사용하여 모듈에 서명 ( ADD SIGNATURE)
  5. 인증서를 [master]데이터베이스에 복사하십시오 (즉 [master], 모듈 서명에 사용 된 인증서의 공개 키를 사용하여 인증서를 작성하십시오).
  6. 에 복사 된 인증서에서 로그인을 만듭니다. [master]
  7. 해당 인증서 기반 로그인에 필요한 인스턴스 레벨 권한을 부여하십시오 (인스턴스 레벨 역할에 추가하는 것을 포함 할 수 있음).

몇 가지 예는 다음을 참조하십시오.


0

보안 문제입니다. 최소한의 특권 원칙을 따른다면 결코 잘못 될 수 없습니다 . 즉, 인증 주체 에게 특정 권한이 필요 하지 않은 경우 이를 부여하지 마십시오. 집에 대해 알 필요가없는 다른 사람에게 문을 여는 자물쇠의 유형에 관한 정보를 제공합니까? 나는 희망하지 않을 것입니다. 그들은 아마 아무것도하지 않을 것이지만 여전히 신중하지는 않습니다.

운과 관대함에서 데이터 원칙을 기반으로하면 더 큰 문제에 처하게됩니다. 보안은 부여한 이유를 방어 할 수있는 경우에만 부여해야하는 측면입니다. 당신은 단순히 누군가가 알아야 할 것보다 더 많은 정보를 제공하고 있습니다 . 하지마 서버 상태는 여전히 민감합니다.


1
누가 불필요하게 그것을주고 있다고 누가 말합니까? OP는 특정 문제 (예 :)를 조사하기 위해 누군가에게 부여해야 할 수 있으며 sys.dm_db_missing_index_details, 위험이 정확히 무엇인지 알고 싶어합니다.
Martin Smith

이 질문에 마크가 누락 된 것 같습니다. 질문에 권한의 필요성을 나타내는 내용이 없습니다.
Thomas Stringer

4
@ThomasStringer : 질문은 필요성에 관한 것이 아니라 위험 에 관한 것 입니다. 금전적 용어로 말하면, 서버가 어떤 추가 위험에 노출 될 수 있는지 알 수 있습니다. 따라서 1 페니에 싫거나 백만 달러에이를 수 있습니다. 나는하지 않고 싶지만
jmoreno
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.