Showplan 보안
Showplan 실행 계획 정보는 다양한 방법으로 생성할 수 있습니다. Transact-SQL SET 문 옵션 또는 SQL Server 프로파일러 이벤트 클래스를 사용하거나 sys.dm_exec_query_plan 동적 관리 함수를 쿼리하여 Showplan 실행 계획 정보를 생성할 수 있습니다. 각 방법에는 다음 섹션에서 설명하는 서로 다른 권한 집합이 필요합니다. Transact-SQL 일괄 처리에 대해 SHOWPLAN 권한을 확인하는 방법은 SHOWPLAN 권한 및 Transact-SQL 일괄 처리를 참조하십시오.
[!참고] sp_dbcmptlevel 저장 프로시저를 사용하여 SQL Server 2005 데이터베이스 호환성 수준을 80으로 설정한 경우 현재 SHOWPLAN 권한이 계속 적용됩니다. 호환성 수준을 80으로 설정하면 Microsoft SQL Server 2000의 Showplan 권한 동작이 생성되지 않습니다.
SHOWPLAN 권한 정보
SHOWPLAN 권한은 SQL Server 2005의 새로운 기능입니다. 대개 Showplan Transact-SQL SET 옵션을 사용하여 실행 계획을 출력하려면 사용자에게 다음 권한이 있어야 합니다.
- 뷰, 저장 프로시저 또는 사용자 정의 함수와 같이 Transact-SQL 문에서 참조하는 개체가 있는 데이터베이스에 대한 SHOWPLAN 권한
- Transact-SQL 문 자체를 실행할 수 있는 적절한 권한
보안 정보: |
---|
실행 계획 출력에서 SQL Server 개체에 대한 정보를 유추할 수 있으므로 신뢰할 수 있는 사용자에게만 SHOWPLAN 권한을 부여하십시오.
예를 들어 다음 쿼리를 참조하십시오.
SELECT COUNT(*)
FROM table_1
WHERE column_1 < 10
악의적인 사용자가 이 예와 같은 쿼리 집합에 대해 실행 계획 출력을 생성하고 조건자 값 "10"을 매번 다른 상수로 바꾸면 예상 행 개수를 읽어 table_1의 column_1에 대한 열 값의 대략적인 데이터 분산을 유추할 수 있습니다. |
SHOWPLAN 권한은 다음과 같은 특징이 있는 데이터베이스 수준의 권한입니다.
- 다음과 같은 사용자만이 부여, 거부 또는 취소할 수 있습니다.
- sysadmin 고정 서버 역할의 멤버 - 기본적으로 고정 서버 역할의 모든 멤버는 서버의 모든 데이터베이스에 대한 SHOWPLAN 권한을 갖습니다.
- 직접 만들어 소유하는 데이터베이스에 대한 dbcreator 고정 서버 역할의 멤버 - 기본적으로 이 고정 서버 역할의 모든 멤버는 직접 만들고 소유하는 데이터베이스에 대한 SHOWPLAN 권한을 갖습니다.
- 소유하는 데이베이스에 대한 db_owners 고정 데이터베이스 역할의 멤버 - 기본적으로 이 고정 데이터베이스 역할의 모든 멤버는 자신이 소유하는 데이터베이스에 대한 SHOWPLAN 권한을 갖습니다.
- 소유권 체인을 지원합니다. 소유권 체인이 끊어진 경우 소유권 체인이 끊어진 노드에서 권한이 다시 확인됩니다. 그러나 SHOWPLAN 권한은 데이터베이스 수준의 권한이므로 쿼리가 둘 이상의 데이터베이스에서 개체를 참조하는 경우에만 권한이 확인됩니다. 소유권 체인에 대한 자세한 내용은 소유권 체인을 참조하십시오.
SHOWPLAN 권한 부여, 거부 또는 취소에 사용되는 구문에 대한 자세한 내용은 SHOWPLAN 권한 부여, 거부 및 취소 구문을 참조하십시오.
예
CREATE TABLE, INSERT 및 SELECT 권한이 있는 User1이 D 데이터베이스에서 T 테이블을 만드는 경우(자신이 테이블 소유자임) 테이블에 열을 삽입한 다음 테이블에 SELECT 쿼리를 작성하면 쿼리가 성공적으로 실행됩니다. 그러나 D 데이터베이스에 대한 SHOWPLAN 권한이 부여될 때까지 User1은 Showplan을 생성할 수 없습니다.
경고
앞의 예에서 D 데이터베이스에 User1이 SELECT 권한을 가지고 있는 V 뷰가 있다고 가정합시다. User1에게 D에 대한 SHOWPLAN 권한이 부여되면 V를 소유하지 않아도 V에 게시된 쿼리에 대해 실행 계획을 생성할 수 있습니다. 이 실행 계획을 통해 V의 기반이 되는 테이블과 뷰를 비롯하여 V의 뷰 정의를 확인할 수 있습니다. 그러나 V에 User1이 소유하고 다른 데이터베이스인 D2에 존재하는 개체(예: 테이블)가 포함되어 있고 User1이 D2의 소유자가 아닌 경우 D2에 대한 SHOWPLAN 권한이 확인되므로 SHOWPLAN 권한이 필요합니다.
Showplan SET 옵션을 사용하는 데 필요한 권한
다음 표에서는 다양한 Showplan SET 문 옵션을 사용하는 데 필요한 권한을 나열합니다.
Showplan SET 옵션 | 필요한 권한 |
---|---|
SET SHOWPLAN_XML ON SET SHOWPLAN_ALL ON SET SHOWPLAN_TEXT ON |
SELECT, INSERT, UPDATE, DELETE, EXEC stored_prodedure 및 EXEC user_defined_function 문의 경우 실행 계획을 생성하려면 다음 권한이 필요합니다.
DDL, USE database_name, SET, DECLARE, 동적 Transact-SQL과 같은 다른 모든 문의 경우 Transact-SQL 문을 실행할 수 있는 적절한 권한만 있으면 됩니다. 자세한 내용은 SHOWPLAN 권한 및 Transact-SQL 일괄 처리를 참조하십시오. |
SET STATISTICS XML ON SET STATISTICS PROFILE ON |
STATISTICS PROFILE 또는 STATISTICS XML 결과 집합을 생성하지 않는 Transact-SQL 문의 경우 Transact-SQL 문을 실행할 수 있는 적절한 권한만 있으면 됩니다. STATISTICS PROFILE 또는 STATISTICS XML 결과 집합을 생성하는 Transact-SQL 문의 경우 Transact-SQL 문 실행 권한 및 SHOWPLAN 권한에 대한 확인이 모두 성공해야 합니다. 그렇지 않으면 Transact-SQL 문 실행이 중단되고 Showplan 정보가 생성되지 않습니다. Showplan 정보를 생성하는 Transact-SQL 문은 실행 계획을 만드는 Transact-SQL 문을 참조하십시오. |
SET STATISTICS TIME SET STATISTICS IO |
이러한 SET 문 옵션은 SHOWPLAN 권한을 확인하거나 필요로 하지 않습니다. |
SHOWPLAN 권한의 확인 시점
SHOWPLAN 권한은 Transact-SQL 문 또는 일괄 처리가 실행되거나 Showplan 정보가 생성될 때 확인됩니다. Showplan SET 옵션이 ON으로 설정된 경우에는 확인되지 않습니다.
[!참고] Transact-SQL 일괄 처리의 컨텍스트 데이터베이스는 USE <database_name> 문을 사용하여 설정합니다. SHOWPLAN 권한은 USE <database_name> 문에 대해 확인되지 않으며 컨텍스트 데이터베이스에 대해서도 확인되지 않습니다.
Showplan SET 문 옵션에 대한 자세한 내용은 다음 항목을 참조하십시오.
- SET SHOWPLAN_XML(Transact-SQL)
- SET SHOWPLAN_ALL(Transact-SQL)
- SET SHOWPLAN_TEXT(Transact-SQL)
- SET STATISTICS XML(Transact-SQL)
- SET STATISTICS PROFILE(Transact-SQL)
- SET STATISTICS TIME(Transact-SQL)
- SET STATISTICS IO(Transact-SQL)
SQL Server Management Studio를 사용하여 그래픽 실행 계획을 표시하는 데 필요한 권한
다음 표에서는 SQL Server Management Studio에서 그래픽 실행 계획을 표시하는 데 필요한 권한을 나열합니다.
Management Studio 실행 계획 옵션 | 필요한 권한 |
---|---|
예상 실행 계획 표시 |
SHOWPLAN_XML SET 문 옵션을 사용하는 데 필요한 권한과 같은 권한이 필요합니다. |
실제 실행 계획 포함 |
STATISTICS XML SET 문 옵션을 사용하는 데 필요한 권한과 같은 권한이 필요합니다. |
자세한 내용은 그래픽 실행 계획 표시(SQL Server Management Studio)를 참조하십시오.
SQL Server 프로파일러 이벤트 클래스를 사용하여 실행 계획을 표시하는 데 필요한 권한
SQL Server 프로파일러 이벤트 클래스를 사용하여 실행 계획을 표시하려면 sysadmin 고정 서버 역할의 멤버이거나 ALTER TRACE 권한이 있어야 합니다. SHOWPLAN 권한은 확인되지 않으며 필요하지 않습니다.
자세한 내용은 SQL Server 프로파일러 이벤트 클래스를 사용하여 실행 계획 표시를 참조하십시오.
sys.dm_exec_query_plan 동적 관리 함수를 사용하여 실행 계획을 표시하는 데 필요한 권한
sys.dm_exec_query_plan 동적 관리 함수를 사용하여 실행 계획을 표시하려면 사용자에게 VIEW SERVER STATE 권한만 부여되어야 합니다.
자세한 내용은 sys.dm_exec_query_plan을 참조하십시오.