SQL Server/SQL Server Tip

SQL Server 2012 사용자 정의 서버 역할 만들기 - 서버 역할을 지정하여 접근 제어 하기

SungWookKang 2015. 7. 23. 08:56
반응형

SQL Server 2012 사용자 정의 서버 역할 만들기 

-      서버 역할을 지정하여 접근 제어 하기 

   

-       Version : SQL Server 2012 

   

SQL Server 2012에서 사용자 정의 서버 수준 역할을 만들어 본다. 

   

아래 스크립트를 사용하여 SQL Server 로그인 계정을 생성 한다.  

USE [master] 

GO 

CREATE LOGIN [Test]  

WITH PASSWORD=N'Test!@#$',  

DEFAULT_DATABASE=[master], 

CHECK_EXPIRATION=OFF,  

CHECK_POLICY=OFF 

GO 

   

 

   

   

서버 역할을 생성 한다. 개체 탐색기에서 [보안] – [서버 역할]에서 마우스 오른쪽을 클릭하여 [새 서버 역할]을 선택 한다. 

 

   

   

새 서버 역할에서 아래 그림과 같이 설정 한다. 

 

   

멤버 페이지에서 추가 버튼을 사용하여 새로운 서버 역할에 로그인을 추가한다.  

 

   

   

멤버 자격에서 아래 그림과 같이 기본 값으로 설정한 다음 [확인]을 클릭 한다. 

 

   

T-SQL을 사용하여 사용자 정의 역할을 생성하려면 다음 스크립트를 실행 한다. 

USE [master] 

GO 

CREATE SERVER ROLE [LevelOneDBAs] AUTHORIZATION [sa] 

GO 

ALTER SERVER ROLE [LevelOneDBAs] ADD MEMBER [Test] 

GO 

GRANT VIEW ANY DATABASE TO [LevelOneDBAs] 

GO 

GRANT VIEW SERVER STATE TO [LevelOneDBAs] 

GO 

   

   

새로 생성한 서버 역할에 대한 권한을 확인해 보자. L1DBAs 로그인 계정은 VIEW SERVER STATE 권한이기 때문에 백업이나 셧다운 명령을 실행 할 수는 없지만 DMV 결과는 볼 수 있다. 

/* Since you don't have permission to backup database the script should fail */ 

BACKUP DATABASE AdventureWorks2012 

TO DISK = 'C:\SQL_Backup\AdventureWorks2012.BAK' 

GO 

/* Since you don't have the permission to shutdown the instance the script should fail */ 

SHUTDOWN 

GO 

/* Since you have VIEW SERVER STATE PERMISSION you will be able to see the results */ 

SELECT * FROM SYS.dm_exec_requests WHERE session_id > 50 

GO 

   

 

   

   

사용자 정의 서버 역할을 활용하여 사용자 계정에 따른 역할을 제어하여 보안등에 활용하면 좋을 듯 하다. 

   

   

[참고자료] 

http://www.mssqltips.com/sqlservertip/2424/creating-a-sql-server-2012-user-defined-server-level-role/ 

   

   

2014-01-28 / 강성욱 / http://sqlmvp.kr

반응형