적용 대상:SQL Server
Azure SQL Managed Instance
중요합니다
Azure SQL Managed Instance에서는 현재 대부분의 SQL Server 에이전트 기능이 지원되지만, 모든 기능이 지원되는 것은 아닙니다. 자세한 내용은 Azure SQL Managed Instance의 T-SQL과 SQL Server의 차이점 또는 SQL Managed Instance의 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
대한 액세스 권한이 부여된 경우 SQLAgentReaderRole 및 SQLAgentOperatorRole 의 멤버는 액세스 권한이 명시적으로 부여되지 않았더라도 이 프록시에 proxy_A
자동으로 액세스할 수 있습니다. 이는 각 역할에 대한 다음 섹션에서 설명하는 보안에 영향을 미칠 수 있습니다.
SQLAgentUserRole 권한
SQLAgentUserRole 은 SQL Server 에이전트 고정 데이터베이스 역할의 최소 권한입니다. 연산자, 로컬 작업 및 작업 일정에 대한 권한만 있습니다. SQLAgentUserRole의 멤버는 자신이 소유한 로컬 작업 및 작업 일정에 대한 권한만 갖습니다. 다중 서버 작업(마스터 및 대상 서버 작업)을 사용할 수 없으며 작업 소유권을 변경하여 아직 소유하지 않은 작업에 액세스할 수 없습니다. SQLAgentUserRole 멤버는 SQL Server Management Studio의 작업 단계 속성 대화 상자에서만 사용 가능한 프록시 목록을 볼 수 있습니다. SQL Server Management Studio 개체 탐색기의 작업 노드만 SQLAgentUserRole의 멤버에게 표시됩니다.
중요합니다
SQLAgentReaderRole 및 SQLAgentOperatorRole은 자동으로 SQLAgentUserRole의 멤버입니다. 즉 , SQLAgentReaderRole 및 SQLAgentOperatorRole 의 멤버는 SQLAgentUserRole 에 부여된 모든 SQL Server 에이전트 프록시에 액세스할 수 있으며 이러한 프록시를 사용할 수 있습니다.
다음 표에서는 SQL Server 에이전트 개체에 대한 SQLAgentUserRole 권한을 요약합니다.
조치 | 운영자 | 로컬 작업(소유 작업만 해당) | 작업 일정(소유 일정만 해당) | 프록시 |
---|---|---|---|---|
만들기/수정/삭제 | 아니오 | 예 작업 소유권을 변경할 수 없습니다. |
예 | 아니오 |
목록 보기(열거형) | 예 사용할 sp_notify_operator 수 있는 연산자 목록과 Management Studio의 작업 속성 대화 상자를 가져올 수 있습니다. |
예 | 예 | 예 Management Studio의 작업 단계 속성 대화 상자에서만 사용할 수 있는 프록시 목록입니다. |
사용/사용 안 함 | 아니오 | 예 | 예 | 해당 없음 |
속성 보기 | 아니오 | 예 | 예 | 아니오 |
실행/중지/시작 | 해당 없음 | 예 | 해당 없음 | 해당 없음 |
작업 기록 보기 | 해당 없음 | 예 | 해당 없음 | 해당 없음 |
작업 기록 삭제 | 해당 없음 | 아니오 SQLAgentUserRole의 멤버는 자신이 소유한 작업에 대한 EXECUTE 작업 기록을 삭제할 수 있는 권한을 명시적으로 부여 sp_purge_jobhistory 해야 합니다. 다른 작업에 대한 작업 기록은 삭제할 수 없습니다. |
해당 없음 | 해당 없음 |
연결/분리 | 해당 없음 | 해당 없음 | 예 | 해당 없음 |
SQLAgentReaderRole 권한
SQLAgentReaderRole 에는 사용 가능한 다중 서버 작업 목록, 해당 속성 및 기록을 볼 수 있는 권한뿐만 아니라 모든 SQLAgentUserRole 권한이 포함됩니다. 이 역할의 멤버는 자신이 소유한 작업 및 작업 일정뿐만 아니라 사용 가능한 모든 작업 및 작업 일정 및 해당 속성 목록을 볼 수도 있습니다. SQLAgentReaderRole 멤버는 아직 소유하지 않은 작업에 액세스하기 위해 작업 소유권을 변경할 수 없습니다. SQL Server Management Studio 개체 탐색기의 작업 노드만 SQLAgentReaderRole의 멤버에게 표시됩니다.
중요합니다
SQLAgentReaderRole의 멤버는 자동으로 SQLAgentUserRole의 멤버입니다. 즉 , SQLAgentReaderRole 의 멤버는 SQLAgentUserRole 에 부여된 모든 SQL Server 에이전트 프록시에 액세스할 수 있으며 이러한 프록시를 사용할 수 있습니다.
다음 표에서는 SQL Server 에이전트 개체에 대한 SQLAgentReaderRole 권한을 요약합니다.
조치 | 운영자 | 로컬 작업 | 다중 서버 작업 | 작업 일정 | 프록시 |
---|---|---|---|---|---|
만들기/수정/삭제 | 아니오 | 예(소유 작업만 해당) 작업 소유권을 변경할 수 없습니다. |
아니오 | 예(소유 일정만 해당) | 아니오 |
목록 보기(열거형) | 예 사용할 sp_notify_operator 수 있는 연산자 목록과 Management Studio의 작업 속성 대화 상자를 가져올 수 있습니다. |
예 | 예 | 예 | 예 Management Studio의 작업 단계 속성 대화 상자에서만 사용할 수 있는 프록시 목록입니다. |
사용/사용 안 함 | 아니오 | 예(소유 작업만 해당) | 아니오 | 예(소유 일정만 해당) | 해당 없음 |
속성 보기 | 아니오 | 예 | 예 | 예 | 아니오 |
속성 편집 | 아니오 | 예(소유 작업만 해당) | 아니오 | 예(소유 일정만 해당) | 아니오 |
실행/중지/시작 | 해당 없음 | 예(소유 작업만 해당) | 아니오 | 해당 없음 | 해당 없음 |
작업 기록 보기 | 해당 없음 | 예 | 예 | 해당 없음 | 해당 없음 |
작업 기록 삭제 | 해당 없음 | 아니오 SQLAgentReaderRole의 멤버는 자신이 소유한 작업에 대한 작업 기록을 삭제하기 위해 EXECUTE 에 sp_purge_jobhistory 권한을 명시적으로 부여받아야 합니다. 다른 작업에 대한 작업 기록은 삭제할 수 없습니다. |
아니오 | 해당 없음 | 해당 없음 |
연결/분리 | 해당 없음 | 해당 없음 | 해당 없음 | 예(소유 일정만 해당) | 해당 없음 |
SQLAgentOperatorRole 권한
SQLAgentOperatorRole 은 SQL Server 에이전트 고정 데이터베이스 역할의 가장 권한이 있습니다. 여기에는 SQLAgentUserRole 및 SQLAgentReaderRole의 모든 권한이 포함됩니다. 이 역할의 멤버는 연산자 및 프록시에 대한 속성을 보고 서버에서 사용 가능한 프록시 및 경고를 열거할 수도 있습니다.
SQLAgentOperatorRole 멤버에는 로컬 작업 및 일정에 대한 추가 권한이 있습니다. 모든 로컬 작업을 실행, 중지 또는 시작할 수 있으며 서버의 모든 로컬 작업에 대한 작업 기록을 삭제할 수 있습니다. 서버에서 모든 로컬 작업 및 일정을 사용하거나 사용하지 않도록 설정할 수도 있습니다. 로컬 작업 또는 일정을 활성화하거나 비활성화하려면 이 역할의 멤버가 저장 프로시저 sp_update_job
및 sp_update_schedule
를 사용해야 합니다. 작업 또는 일정 이름 또는 식별자를 지정하는 매개 변수와 @enabled
매개 변수만 SQLAgentOperatorRole의 멤버로 지정할 수 있습니다. 다른 매개 변수를 지정하면 이러한 저장 프로시저의 실행이 실패합니다.
SQLAgentOperatorRole 멤버는 아직 소유하지 않은 작업에 액세스하기 위해 작업 소유권을 변경할 수 없습니다.
SQL Server Management Studio 개체 탐색기의 작업, 경고, 연산자 및 프록시 노드는 SQLAgentOperatorRole의 멤버에게 표시됩니다. 오류 로그 노드만 이 역할의 멤버에게 표시되지 않습니다.
중요합니다
SQLAgentOperatorRole의 멤버는 SQLAgentUserRole 및 SQLAgentReaderRole의 자동으로 멤버입니다. 즉 , SQLAgentOperatorRole 의 멤버는 SQLAgentUserRole 또는 SQLAgentReaderRole 에 부여된 모든 SQL Server 에이전트 프록시에 액세스할 수 있으며 이러한 프록시를 사용할 수 있습니다.
다음 표에서는 SQL Server 에이전트 개체에 대한 SQLAgentOperatorRole 권한을 요약합니다.
조치 | 경고 | 운영자 | 로컬 작업 | 다중 서버 작업 | 작업 일정 | 프록시 |
---|---|---|---|---|---|---|
만들기/수정/삭제 | 아니오 | 아니오 | 예(소유 작업만 해당) 작업 소유권을 변경할 수 없습니다. |
아니오 | 예(소유 일정만 해당) | 아니오 |
목록 보기(열거형) | 예 | 예 사용할 sp_notify_operator 수 있는 연산자 목록과 Management Studio의 작업 속성 대화 상자를 가져올 수 있습니다. |
예 | 예 | 예 | 예 |
사용/사용 안 함 | 아니오 | 아니오 | 예 SQLAgentOperatorRole 멤버는 저장 프로시저 sp_update_job 를 사용하고 @enabled 및 @job_id (또는 @job_name ) 매개 변수 값을 지정하여 소유하지 않은 로컬 작업을 활성화하거나 비활성화할 수 있습니다. 이 역할의 멤버가 이 저장 프로시저에 대한 다른 매개 변수를 지정하면 프로시저 실행이 실패합니다. |
아니오 | 예 SQLAgentOperatorRole 멤버는 저장 프로시저 sp_update_schedule 를 사용하고 @enabled , @schedule_id (또는 @name ) 매개 변수의 값을 지정하여 소유하지 않은 일정을 활성화하거나 비활성화할 수 있습니다. 이 역할의 멤버가 이 저장 프로시저에 대한 다른 매개 변수를 지정하면 프로시저 실행이 실패합니다. |
해당 없음 |
속성 보기 | 예 | 예 | 예 | 예 | 예 | 예 |
속성 편집 | 아니오 | 아니오 | 예(소유 작업만 해당) | 아니오 | 예(소유 일정만 해당) | 아니오 |
실행/중지/시작 | 해당 없음 | 해당 없음 | 예 | 아니오 | 해당 없음 | 해당 없음 |
작업 기록 보기 | 해당 없음 | 해당 없음 | 예 | 예 | 해당 없음 | 해당 없음 |
작업 기록 삭제 | 해당 없음 | 해당 없음 | 예 | 아니오 | 해당 없음 | 해당 없음 |
연결/분리 | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 | 예(소유 일정만 해당) | 해당 없음 |
사용자에게 여러 역할 할당
sysadmin 고정 서버 역할의 멤버는 모든 SQL Server 에이전트 기능에 액세스할 수 있습니다. 사용자가 sysadmin 역할의 멤버가 아니지만 둘 이상의 SQL Server 에이전트 고정 데이터베이스 역할의 멤버인 경우 이러한 역할의 동심 권한 모델을 기억해야 합니다. 더 많은 권한 있는 역할에는 항상 권한이 적은 역할의 모든 권한이 포함되므로 둘 이상의 역할의 멤버인 사용자는 사용자가 구성원인 가장 권한 있는 역할과 연결된 사용 권한을 자동으로 갖습니다.