반응형

특정 사용자에게 Agent 작업 권한 부여하기

 

 

한대성

Microsoft Premier Field Engineer

 

 

다음과 같은 환경을 고려해 봅시다.

 

DB 전체를 관리하는 관리자가 있습니다.

그리고, UserDB1, UserDB2 라고 하는 각기 다른 서비스를 하는 두 개의 데이터베이스가 있고, 각 데이터베이스에는 UserDB1User, UserDB2User 라고 하는 사용자가 있습니다.

이 사용자들은 자기의 DB에 대해서만 읽고 쓰는 권한을 가지며, 다른 DB에 대해서는 접근할 수 없습니다.

 

 



 

이런 상황일 때, UserDB1User UserDB1에다가 매일 데이터를 처리하는 SQL Agent Job 하나를 만들고 싶다고 관리자에게 요청합니다. 물론 UserDB2User도 마찬가지로 요구할 수 있겠지요.

 

DB 관리자는 귀찮습니다. 그냥 작업 만들어서 쓰라고 권한을 주고는 싶은데, 다른 작업들을 보거나 실행하거나 조작할 수 있으면 안됩니다. , 자기 DB에 대한 작업만 보고 관리할 수 있도록 하고 싶은 것이지요.

 

의외로 간단한 방법이 있는데 잘 모르시는 분들이 많은 것 같아 이에 대한 방법을 간단히 설명 드리고자 합니다.

 

SQL Server Agent 작업과 관련된 권한은 msdb의 데이터베이스에 특별한 멤버 자격이 있습니다.

예로 설명드리겠습니다.

 

위의 두 번째 그림과 같이 UserDB1User를 더블 클릭해서 나타나는 로그인 속성 창에서 사용자 매핑 부분에서 msdb를 선택합니다. 그런 다음, 아래 부분에서 SQLAgentUserRole 역할을 체크해 줍니다.



 

, 이제 UserDB1User Management Studio에 로그인 해 봅시다.

 

 

SQLAgentUserRole 권한이 있기 때문에 SQL Serve 에이전트라는 항목이 나타납니다.

이제 여기서 작업을 만들어 봅시다.

 

UserDB1User는 자기가 만든 작업만 나타납니다. 물론 관리자는 이 작업을 볼 수 있겠지요.

 

그럼, User2DBUser라는 로그인으로 UserDB2에 대한 작업을 생성해봅시다.



위와 같이 자기가 만든 작업에 대해서만 나타납니다. 이해가 가시죠?

 

 

, 그럼 이제 조금 더 나아가 봅시다.

UserDB1User에게는 자신의 작업뿐만 아니라, 다른 작업들의 상태를 볼 수 있는 권한을 줍니다. 데이터베이스 멤버 역할에서 SQLAgentReader 역할을 체크합니다.

 


그런 다음, 새로 고침 해 보면 위와 같이 자기가 소유한 작업뿐만 아니라 모든 작업들을 볼 수 있습니다. 그럼 Job2_for_UserDB2 작업을 한 번 실행해 봅시다.



 

권한 없다라고 나옵니다. , 다른 작업들을 볼 수만 있고 실행하거나 중지시킬 권한은 없는 것이 SQLAgentReader 역할입니다.

 

 

마지막으로 SQLAgentOperator 역할을 주면 실행, 중지 다 하겠지요.

SQLAgentOperator 역할을 가지고 있으면 작업의 소유자도 변경 가능합니다. 관리자가 작업을 만든 후, 그 작업을 해당 사용자에게 관리하도록 소유권을 변경해주면 해당 사용자는 넘겨받은 작업에 대해 관리할 수 있겠지요.

 

간단한 내용이지만 가끔씩 필요한 내용이라 정리해 봤습니다.


반응형

+ Recent posts