본문 바로가기

work/mssql

xp_cmdshell 사용 권한 부여 방법

출처 : http://www.sqlworld.pe.kr/mboard/mboard/mboard.asp?board_id=tip&group_name=board&idx_num=29

안녕하세요?
디비누리 SQLWorld의 이장래입니다.

xp_cmdshell 은 기본적으로 사용할 수 없게 설정되어 있습니다. 그리고 xp_cmdshell 를 사용가능하도록 설정한다 하더라도 일반 계정은 사용할 수 없습니다. 물론 일반 계정에게 sysadmin 권한을 주면 xp_cmdshell 를 사용할 수 있지만 이렇게 하면 보안에 큰 취약점이 생기게 됩니다. 다음의 과정과 같이 하면 이러한 문제 없이도 일반 계정에게도 xp_cmdshell 사용 권한을 부여할 수 있습니다. SQL Server에서 설정하기 전에 윈도우즈에서 설정할 내용이 있음을 유의하시기 바랍니다.

[윈도우즈 작업]

1. 윈도우즈 계정 하나를 선택

- xp_cmdshell 를 통해 수행되는 작업을 대신 수행해 줄 윈도우즈 계정이 있어야 함
- 본 설명에서는 SQLWORLD\Jangrae로 가정하겠음

2. SQLWORLD\Jangrae 계정에 대한 사용자 권한 설정

1) [시작]-[관리 도구]-[로컬 보안 정책] 수행
2) [로컬 정책]-[사용자 권한 할당]의 [일괄 작업으로 로그온] 정책에 SQLWORLD\Jangrae 계정 추가

[SQL서버 작업]

1. ##xp_cmdshell_proxy_account## 자격 증명(Credential) 등록

다음 두 가지 방법 중 하나를 사용해 자격 증면 등록

[방법1]

  1. CREATE CREDENTIAL [##xp_cmdshell_proxy_account##]    
  2.  WITH IDENTITY = N'SQLWORLD\Jangrae'-- 윈도우즈 계정   
  3.  SECRET = N'Pa$$w0rd' -- 암호   
  4. GO  

[방법2]

1) Management Studio의 개체 탐색기에서 해당 서버의 [속성] 창 표시
2) [속성] 창에서 [보안] 페이지의 [서버 프록시 계정] 부분에 윈도우즈 계정과 암호 입력

2. xp_cmdshell 사용 가능 설정

xp_cmdshell은 기본적으로 사용하지 못하도록 설정되어 있으므로 사용 가능하도록 서버 옵션을 설정해야 함

  1. EXEC sp_configure 'xp_cmdshell', 1   
  2. RECONFIGURE  
  3. GO  

3. xp_cmdshell를 사용하도록 허용할 계정에게 권한 부여

예를 들어 user01 계정에게 권한을 부여하고자 한다면

  1. USE master   
  2. GO  
  3. GRANT EXECUTE ON xp_cmdshell TO user01   
  4. GO  

즐거운 날 되세요~