20212021. 6. 1. 14:06

xp_cmdshell 명령을 실행하기 위해서는 SQL Server 서비스 시작 계정이 CMD.EXE 프로세스를 실행할 수 있는 권한이 있어야 합니다.  뿐만 아니라, sp_xp_cmdshell_proxy_account 명령으로 proxy 계정을 만든다면 해당 proxy 계정이 CMD.EXE 명령이 실행된 상태에서 최종적으로 실행하고자 하는 프로세스에 대한 실행 권한이 있어야 합니다. 

예를 들어 xp_cmdshell ‘c:\data\smgo.exe’ 명령을 실행한다면 SQL Server 서비스 시작 계정이 CMD.EXE 를 실행할 수 있는 권한이 있어야 하며 proxy 계정이 smgo.exe 프로세스를 실행할 수 있는 권한이 있어야 합니다. 

Msg 15121, Level 16, State 10, Procedure xp_cmdshell, Line 1
An error occurred during the execution of xp_cmdshell. A call to 'CreateProcessAsUser' failed with error code: '5'

위와 같은 오류가 발생한다면 문제 재현 과정에서 Process Monitor 를 통해 어떤 오류가 발생하는 부분을 찾을 수 있으며 일반적으로 SQL Server service 시작 계정이 CMD.EXE 프로세스를 실행할 수 있는 권한이 없는 경우 위의 Access Denied 오류가 발생할 수 있습니다. 


작성자: Lai Go / 작성일자: 2021.06.01

Posted by Lai Go