다음을 통해 공유


SQL Server 에이전트 고정 데이터베이스 역할

SQL Server는 관리자에게 SQL Server 에이전트에 대한 보다 세부적인 액세스 제어 기능을 제공하는 다음과 같은 msdb 데이터베이스 고정 데이터베이스 역할을 제공합니다. 다음 역할은 액세스 권한이 적은 것부터 순서대로 나열되어 있습니다.

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

이러한 역할 중 하나의 멤버가 아닌 사용자가 SQL Server Management Studio에서 SQL Server에 연결된 경우 개체 탐색기의 SQL Server 에이전트 노드가 표시되지 않습니다. 사용자가 SQL Server 에이전트를 사용하려면 이러한 고정 데이터베이스 역할 중 하나의 멤버이거나 sysadmin 고정 서버 역할의 멤버여야 합니다.

SQL Server 에이전트 고정 데이터베이스 역할의 사용 권한

SQL Server 에이전트 데이터베이스 역할 사용 권한은 상호 공통적 특성을 갖고 있으며, 사용 권한이 많은 역할은 SQL Server 에이전트 개체(예: 경고, 운영자, 작업, 일정 및 프록시)에 대해 사용 권한이 적은 역할의 사용 권한을 상속합니다. 예를 들어 사용 권한이 가장 적은 SQLAgentUserRole 의 멤버에 proxy_A에 대한 액세스가 부여된 경우 SQLAgentReaderRoleSQLAgentOperatorRole 의 멤버는 proxy_A에 대한 액세스가 명시적으로 부여되지 않았더라도 이 프록시에 대한 액세스를 자동으로 갖습니다. 이러한 방식은 보안 문제를 발생시킬 수 있으며 이에 대해서는 각 역할에 대한 다음 섹션에서 설명됩니다.

SQLAgentUserRole 사용 권한

SQLAgentUserRole은 SQL Sever 에이전트 고정 데이터베이스 역할 중 가장 사용 권한이 적은 역할입니다. 이 역할에는 운영자, 로컬 작업 및 작업 일정에 대한 사용 권한만 있습니다. SQLAgentUserRole 의 멤버는 자신이 소유하는 로컬 작업 및 작업 일정에 대한 사용 권한만 갖습니다. 이 역할의 멤버는 다중 서버 작업(마스터 및 대상 서버 작업)을 사용할 수 없으며 자신이 소유하지 않는 작업에 대한 액세스를 얻기 위해 작업 소유권을 변경할 수 없습니다. SQLAgentUserRole 멤버는 SQL Server Management Studio의 작업 단계 속성 대화 상자에서만 사용 가능한 프록시 목록을 볼 수 있습니다. SQL Server Management Studio 개체 탐색기의 작업 노드만 SQLAgentUserRole의 멤버에게 표시됩니다.

중요

SQL Server Agentdatabaseroles의 멤버에 프록시 액세스 권한을 부여하기 전에 보안에 미치는 영향을 고려합니다. SQLAgentReaderRoleSQLAgentOperatorRole 은 자동으로 SQLAgentUserRole의 멤버가 됩니다. 즉, SQLAgentReaderRoleSQLAgentOperatorRole의 멤버는 SQLAgentUserRole에 부여된 모든 SQL Server 에이전트 프록시에 대한 액세스 권한을 가지며 이러한 프록시를 사용할 수 있습니다.

다음 표에서는 SQL Server 에이전트 개체에 대한 SQLAgentUserRole 사용 권한을 요약합니다.

작업 연산자 로컬 작업

(소유한 작업만 해당)
작업 일정

(소유한 작업만 해당)
프록시
생성/수정/삭제 아니요 1 아니요
목록 보기(열거) 2 3
설정/해제 아니요 적용할 수 없음
속성 보기 아니요 Yes 아니요
실행/중지/시작 적용할 수 없음 해당 없음 해당 없음
작업 기록 보기 적용할 수 없음 해당 없음 해당 없음
작업 기록 삭제 적용할 수 없음 아니요 4 해당 없음 해당 없음
연결/분리 해당 없음 해당 없음 적용할 수 없음

1 작업 소유권을 변경할 수 없습니다.

2 sp_notify_operator 사용할 수 있는 연 산자 목록과 Management Studio의 작업 속성 대화 상자를 가져올 수 있습니다.

3 Management Studio의 작업 단계 속성 대화 상자에서만 사용할 수 있는 프록시 목록입니다.

4SQLAgentUserRole 의 멤버는 자신이 소유한 작업에 대한 작업 기록을 삭제하기 위해 sp_purge_jobhistory 대한 EXECUTE 권한을 명시적으로 부여해야 합니다. 이 멤버는 다른 작업에 대한 작업 기록은 삭제할 수 없습니다.

SQLAgentReaderRole 사용 권한

SQLAgentReaderRole 에는 모든 SQLAgentUserRole 사용 권한 뿐만 아니라 사용 가능한 다중 서버 작업, 해당 속성 및 해당 기록 목록을 볼 수 있는 권한이 포함됩니다. 이 역할의 멤버는 또한 자신이 소유하는 작업과 작업 일정뿐만 아니라 사용 가능한 모든 작업과 작업 일정 및 해당 속성 목록을 볼 수 있습니다. SQLAgentReaderRole 멤버는 자신이 소유하지 않는 작업에 대한 액세스를 얻기 위해 작업 소유권을 변경할 수 없습니다. SQL Server Management Studio 개체 탐색기의 작업 노드만 SQLAgentReaderRole의 멤버에게 표시됩니다.

중요

SQL Server Agentdatabaseroles의 멤버에 프록시 액세스 권한을 부여하기 전에 보안에 미치는 영향을 고려합니다. SQLAgentReaderRole 의 멤버는 자동으로 SQLAgentUserRole의 멤버가 됩니다. 즉, SQLAgentReaderRole의 멤버는 SQLAgentUserRole 에 부여된 모든 SQL Server 에이전트 프록시에 대한 액세스 권한을 가지며 이러한 프록시를 사용할 수 있습니다.

다음 표에서는 SQL Server 에이전트 개체에 대한 SQLAgentReaderRole 사용 권한을 요약합니다.

작업 연산자 로컬 작업 다중 서버 작업 작업 일정 프록시
생성/수정/삭제 아니요 1 (소유 작업만 해당) 아니요 예(소유한 작업만 해당) 아니요
목록 보기(열거) 2 3
설정/해제 아니요 예(소유한 작업만 해당) 아니요 예(소유한 작업만 해당) 해당 없음
속성 보기 아니요 아니요
속성 편집 아니요 예(소유한 작업만 해당) 아니요 예(소유한 작업만 해당) 아니요
실행/중지/시작 해당 없음 예(소유한 작업만 해당) 아니요 해당 없음 해당 없음
작업 기록 보기 적용할 수 없음 해당 없음 해당 없음
작업 기록 삭제 적용할 수 없음 아니요 4 아니요 해당 없음 해당 없음
연결/분리 해당 없음 해당 없음 해당 없음 예(소유한 작업만 해당) 해당 없음

1 작업 소유권을 변경할 수 없습니다.

2 sp_notify_operator 사용할 수 있는 연 산자 목록과 Management Studio의 작업 속성 대화 상자를 가져올 수 있습니다.

3 Management Studio의 작업 단계 속성 대화 상자에서만 사용할 수 있는 프록시 목록입니다.

4SQLAgentReaderRole 의 구성원은 자신이 소유한 작업에 대한 작업 기록을 삭제하기 위해 sp_purge_jobhistory 대한 EXECUTE 권한을 명시적으로 부여해야 합니다. 이 멤버는 다른 작업에 대한 작업 기록은 삭제할 수 없습니다.

SQLAgentOperatorRole 사용 권한

SQLAgentOperatorRole은 SQL Server 에이전트 고정 데이터베이스 역할 중 가장 사용 권한이 많은 역할입니다. 여기에는 SQLAgentUserRoleSQLAgentReaderRole의 모든 사용 권한이 포함됩니다. 이 역할의 멤버는 또한 운영자 및 프록시의 속성을 볼 수 있으며 서버에서 사용 가능한 프록시와 경고를 열거할 수 있습니다.

SQLAgentOperatorRole 멤버는 로컬 작업 및 일정에 대한 추가 사용 권한을 갖습니다. 이 멤버는 모든 로컬 작업을 실행, 중지 또는 시작할 수 있으며 서버의 모든 로컬 작업에 대한 작업 기록을 삭제할 수 있습니다. 또한 서버의 모든 로컬 작업과 일정을 설정 또는 해제할 수 있습니다. 로컬 작업이나 일정을 설정 또는 해제하려면 이 역할의 멤버가 sp_update_jobsp_update_schedule저장 프로시저를 사용해야 합니다. SQLAgentOperatorRole 멤버는 작업 또는 일정 이름이나 식별자를 지정하는 매개 변수와 @enabled매개 변수만 지정할 수 있습니다. 다른 매개 변수를 지정하면 해당 저장 프로시저 실행이 실패합니다. SQLAgentOperatorRole 멤버는 자신이 소유하지 않는 작업에 대한 액세스를 얻기 위해 작업 소유권을 변경할 수 없습니다.

SQL Server Management Studio 개체 탐색기의 작업, 경고, 운영자프록시 노드가 SQLAgentOperatorRole의 멤버에게 표시됩니다. 이 역할의 멤버에게는 오류 로그 노드만 표시되지 않습니다.

중요

SQL Server Agentdatabaseroles의 멤버에 프록시 액세스 권한을 부여하기 전에 보안에 미치는 영향을 고려합니다. SQLAgentOperatorRole 의 멤버는 자동으로 SQLAgentUserRoleSQLAgentReaderRole의 멤버가 됩니다. 즉, SQLAgentOperatorRole의 멤버는 SQLAgentUserRole 또는 SQLAgentReaderRole 에 부여된 모든 SQL Server 에이전트 프록시에 대한 액세스 권한을 가지며 이러한 프록시를 사용할 수 있습니다.

다음 표에서는 SQL Server 에이전트 개체에 대한 SQLAgentOperatorRole 사용 권한을 요약합니다.

작업 경고 연산자 로컬 작업 다중 서버 작업 작업 일정 프록시
생성/수정/삭제 아니요 아니요 2 (소유 작업만 해당) 아니요 예(소유한 작업만 해당) 아니요
목록 보기(열거) 1
설정/해제 아니요 아니요 3 아니요 4 적용할 수 없음
속성 보기 Yes
속성 편집 아니요 아니요 예(소유한 작업만 해당) 아니요 예(소유한 작업만 해당) 아니요
실행/중지/시작 해당 없음 해당 없음 아니요 해당 없음 해당 없음
작업 기록 보기 해당 없음 해당 없음 해당 없음 해당 없음
작업 기록 삭제 해당 없음 해당 없음 아니요 해당 없음 해당 없음
연결/분리 해당 없음 해당 없음 해당 없음 해당 없음 예(소유한 작업만 해당) 해당 없음

1 sp_notify_operator 사용할 수 있는 연 산자 목록과 Management Studio의 작업 속성 대화 상자를 가져올 수 있습니다.

2 작업 소유권을 변경할 수 없습니다.

3SQLAgentOperatorRole 멤버는 저장 프로시저 sp_update_job 사용하고 @enabled 및 @job_id(또는@job_name) 매개 변수에 대한 값을 지정하여 소유하지 않은 로컬 작업을 사용하거나 사용하지 않도록 설정할 수 있습니다. 이 역할의 멤버가 이 저장 프로시저에 다른 매개 변수를 지정하는 경우 프로시저 실행이 실패합니다.

4SQLAgentOperatorRole 멤버는 저장 프로시저 sp_update_schedule 사용하고 @enabled 및 @schedule_id(또는@name) 매개 변수에 대한 값을 지정하여 소유하지 않은 일정을 사용하거나 사용하지 않도록 설정할 수 있습니다. 이 역할의 멤버가 이 저장 프로시저에 다른 매개 변수를 지정하는 경우 프로시저 실행이 실패합니다.

사용자에게 다중 역할 할당

sysadmin 고정 서버 역할의 멤버는 모든 SQL Server 에이전트 기능에 액세스할 수 있습니다. 사용자가 sysadmin 역할의 멤버가 아니지만 하나 이상의 SQL Server 에이전트 고정 데이터베이스 역할의 멤버인 경우 이러한 역할에 대한 공통적 사용 권한 모델을 고려해야 합니다. 사용 권한이 많은 역할은 항상 사용 권한이 적은 역할의 모든 사용 권한을 포함하기 때문에 두 개 이상의 역할의 멤버는 해당 사용자가 멤버로 속한 사용 권한이 가장 많은 역할과 관련된 사용 권한을 자동으로 갖습니다.

관련 항목

SQL Server 에이전트 보안 구현
sp_update_job(Transact-SQL)
sp_update_schedule(Transact-SQL)
sp_notify_operator(Transact-SQL)
sp_purge_jobhistory(Transact-SQL)