데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

SQL Server가 서비스 격리를 처리하는 방법

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

SQL Server에 연결되어 있는 사용자를 볼 때 sys.dm_exec_session을 사용하여 확인 할 수 있다. 예를 들어 나는 SQL Server Agent 서비스 계정을 알고 있다. 하지만 그 로그인으로 모든 연결을 볼 수 는 없다. 이것은 서비스 격리 때문이다. 이 기능은 Windows Vista부터 도입되었다.

 

SQL Server 2008 이전에는 액세스 권한을 부여하기 위해 Domain\Username 또는 ComputerName\Username 방법을 지원하였다. 그렇다면 격리수준은 무엇일까? 모든 Windows 사용자 계정, 보안 그룹 및 컴퓨터 계정은 고유한 식별자, 보안 식별자 또는 SID가 있다. 이것은 계정을 변경하지 않는다면 동일한 Windows 도메인 계정으로 유지 된다. (사용자 계정이 다른 윈도우 도메인으로 이동하는 경우 SID가 변경된다.)

 

사용자 계정에 대한 액세스 권한 부여 문제는 해당 사용자 계정에서 실행중인 모든 프로세스에 액세스 할 수 있다는 것이다. 서비스 및 로그인의 목록을 보면 네트워크 서비스 및 시스템에 대한 로그인을 많이 볼 수 있다. 즉 네트워크 서비스에서 실행되는 프로세스가 어떤 자원 네트워크 서비스에 액세스 권한이 부여되고 액세스 할 수 있음을 의미한다. 이러한 이유 때문에 서비스 격리가 필요하다.

 

SQL Server에서는 다음과 같이 "NT SERVICE"로 시작하는 로그인을 확인 할 수 있다.

 

 

여기에서는 SQL Server Agent에 속하는 항목을 볼 수 있다.

SELECT program_name, login_name

FROM sys.dm_exec_sessions

WHERE program_name LIKE 'SQLAgent%';

 

 

 

SQL Server 구성 관리자에서 보면 서비스 계정을 확인 할 수 있다.

 

svc.sql2008r2agent는 SQL Server 에이전트 서비스에 대한 서비스 계정이다. SQL Server가 SID에 대해 서비스 액세스를 부여하지만 사용자 계정으로 들어오는 것은 허용하지 않는다.

 

서비스를 보면 Agent에서 사용하는 계정을 확인 할 수 있다. 이러한 여러 서비스는 동일한 로그인을 사용할 수 있다.

 

계정을 분리함으로써 연결이 어떤 서비스에 묶여 있는지 파악 할 수 있다.

 

[참고자료]

http://www.mssqltips.com/sqlservertip/3102/understanding-how-sql-server-handles-service-isolation/

 

 



강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
1910 64비트 버전의 SQL Server 버퍼 풀 메모리 페이지 수 줄이는 방법 jevida(강성욱) 2016.10.12 2432
1909 누락된 공유 잠금 (Missing Shared Locks) jevida(강성욱) 2016.10.12 1560
1908 Ad Hoc Distributed Queries 옵션 jevida(강성욱) 2016.10.12 3044
1907 높은 MAXDOP은 쿼리를 느리게 만들 수 있는가? jevida(강성욱) 2016.10.12 1305
1906 변경된 테이블 이름 복구하기 jevida(강성욱) 2016.10.12 1290
1905 Sys,dm_exec_connections jevida(강성욱) 2016.10.12 1908
1904 SQL Server 시작 매개 변수 설정 jevida(강성욱) 2016.10.12 2478
1903 AFTER 트리거를 INSTEAD OF 트리거로 변경 후 효율성 향상 jevida(강성욱) 2016.10.12 1782
1902 쿼리 대기 옵션 jevida(강성욱) 2016.10.12 1564
1901 Index create memory 설정 jevida(강성욱) 2016.10.12 1230
1900 Min memory per query 옵션 jevida(강성욱) 2016.10.12 1677
1899 SQL Server 에디션 다운그레이드와 제한된 기능 확인 jevida(강성욱) 2016.10.12 2121
1898 Downgrade from SQL Server Ent to Std Edition jevida(강성욱) 2016.10.12 1336
1897 트랜잭션 로그 여유 공간 모니터링 jevida(강성욱) 2016.10.12 1342
» SQL Server가 서비스 격리를 처리하는 방법 jevida(강성욱) 2016.10.12 1144
1895 쿼리 매개변수화 확인하기 jevida(강성욱) 2016.10.12 1428
1894 SQL Server에서 Drop 및 Delete 사용자 찾기 jevida(강성욱) 2016.10.12 1628
1893 SQL Server 트랜잭션 로그 읽기 jevida(강성욱) 2016.10.12 2067
1892 MaxBCPThreads에 따른 BCP 병렬출력 jevida(강성욱) 2016.10.11 1088
1891 확장이벤트와 dm_os_wait_stats 대기유형 매핑 jevida(강성욱) 2016.10.11 1883





XE Login