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

적용 대상:SQL ServerAzure SQL Managed Instance

Important

현재 Azure SQL Managed Instance에서는 SQL Server 에이전트 기능이 대부분 지원됩니다. 자세한 내용은 SQL Server와 Azure SQL Managed Instance 간의 T-SQL 차이점을 참조하세요.

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의 멤버에게 표시됩니다.

Important

SQL Server 에이전트 데이터베이스 역할 멤버에 프록시 액세스 권한을 부여하기 전에 보안 문제를 신중히 고려해야 합니다. SQLAgentReaderRoleSQLAgentOperatorRole은 자동으로 SQLAgentUserRole의 멤버입니다. 즉, SQLAgentReaderRoleSQLAgentOperatorRole의 멤버는 SQLAgentUserRole에 부여된 모든 SQL Server 에이전트 프록시에 대한 액세스 권한을 가지며 이러한 프록시를 사용할 수 있습니다.

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

작업 연산자 로컬 작업

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

(소유한 일정만 해당)
프록시
만들기/수정/삭제

작업 소유권을 변경할 수 없습니다.
아니요
목록 보기(열거형)

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


Management Studio의 작업 단계 속성 대화 상자에서 사용할 수 있는 프록시만 나열합니다.
사용/사용 안 함 해당 없음
속성 보기 아니요
실행/중지/시작 해당 없음 해당 없음 해당 없음
작업 기록 보기 해당 없음 해당 없음 해당 없음
작업 기록 삭제 해당 없음 아니요

SQLAgentUserRole 의 멤버가 자신이 소유한 작업에 대한 작업 기록을 삭제하려면 sp_purge_jobhistory 에 대한 EXECUTE 권한이 명시적으로 부여되어야 합니다. 다른 작업에 대한 작업 기록은 삭제할 수 없습니다.
해당 없음 해당 없음
Notebook 해당 없음 해당 없음 해당 없음

SQLAgentReaderRole 사용 권한

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

Important

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

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

작업 연산자 로컬 작업 다중 서버 작업 작업 일정 프록시
만들기/수정/삭제 아니요 예(소유한 작업만 해당)

작업 소유권을 변경할 수 없습니다.
아니요 예(소유 일정만 해당) 아니요
목록 보기(열거형)

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


Management Studio의 작업 단계 속성 대화 상자에서 사용할 수 있는 프록시만 나열합니다.
사용/사용 안 함 아니요 예(소유한 작업만 해당) 아니요 예(소유 일정만 해당) 해당 없음
속성 보기 아니요
속성 편집 아니요 예(소유한 작업만 해당) 아니요 예(소유 일정만 해당) 아니요
실행/중지/시작 해당 없음 예(소유한 작업만 해당) 아니요 해당 없음 해당 없음
작업 기록 보기 해당 없음 해당 없음 해당 없음
작업 기록 삭제 해당 없음 아니요

SQLAgentReaderRole의 멤버가 자신이 소유한 작업에 대한 작업 기록을 삭제하려면 sp_purge_jobhistory 에 대한 EXECUTE 권한이 명시적으로 부여되어야 합니다. 다른 작업에 대한 작업 기록은 삭제할 수 없습니다.
아니요 해당 없음 해당 없음
Notebook 해당 없음 해당 없음 해당 없음 예(소유 일정만 해당) 해당 없음

SQLAgentOperatorRole 권한

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

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

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

Important

SQL Server Agentdatabaseroles 멤버에 프록시 액세스 권한을 부여하기 전에 보안 문제를 신중히 고려해야 합니다. SQLAgentOperatorRole멤버는 자동으로 SQLAgentUserRole 및 SQLAgentReaderRole의 멤버입니다. 즉, SQLAgentOperatorRole의 멤버는 SQLAgentUserRole 또는 SQLAgentReaderRole 에 부여된 모든 SQL Server 에이전트 프록시에 대한 액세스 권한을 가지며 이러한 프록시를 사용할 수 있습니다.

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

작업 경고 연산자 로컬 작업 다중 서버 작업 작업 일정 프록시
만들기/수정/삭제 아니요 아니요 예(소유한 작업만 해당)

작업 소유권을 변경할 수 없습니다.
아니요 예(소유 일정만 해당) 아니요
목록 보기(열거형)

Management Studio의 sp_notify_operator작업 속성 대화 상자에서 사용할 수 있는 연산자 목록을 가져올 수 있습니다.
사용/사용 안 함 아니요 없음

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


SQLAgentOperatorRole 멤버는 저장 프로시저 sp_update_schedule을 사용하고 @enabled@schedule_id(또는 @name) 매개 변수에 대한 값을 지정하여 소유하지 않은 일정을 사용하거나 사용하지 않도록 설정할 수 있습니다. 이 역할의 멤버가 이 저장 프로시저에 대한 다른 매개 변수를 지정하면 프로시저 실행이 실패합니다.
해당 없음
속성 보기
속성 편집 아니요 아니요 예(소유한 작업만 해당) 아니요 예(소유 일정만 해당) 아니요
실행/중지/시작 해당 없음 해당 없음 해당 없음 해당 없음
작업 기록 보기 해당 없음 해당 없음 해당 없음 해당 없음
작업 기록 삭제 해당 없음 해당 없음 해당 없음 해당 없음
Notebook 해당 없음 해당 없음 해당 없음 해당 없음 예(소유 일정만 해당) 해당 없음

사용자에게 여러 역할 할당

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)