SQL Server 에이전트 보안 구현Implement SQL Server Agent Security

적용 대상: 예SQL Server 예Azure SQL Database(Managed Instance만 해당) 아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure SQL Data Warehouse noParallel Data Warehouse


현재 Azure SQL Database Managed Instance에서 일부 SQL Server 에이전트 기능이 지원됩니다.On Azure SQL Database Managed Instance, most, but not all SQL Server Agent features are currently supported. 자세한 내용은 SQL Server에서 Azure SQL Database Managed Instance T-SQL 차이점을 참조하세요.See Azure SQL Database Managed Instance T-SQL differences from SQL Server for details.

SQL ServerSQL Server 에이전트를 사용하면 데이터베이스 관리자가 SQL ServerSQL Server 에이전트 프록시에 의해 결정된 각 작업 단계를 수행하는 데 필요한 사용 권한만 있는 보안 컨텍스트에서 각 작업 단계를 실행할 수 있습니다.Agent lets the database administrator run each job step in a security context that has only the permissions required to perform that job step, which is determined by a SQL ServerSQL Server Agent proxy. 특정 작업 단계의 사용 권한을 설정하려면 필요 사용 권한을 가진 프록시를 만든 다음 해당 프록시를 작업 단계에 할당하십시오.To set the permissions for a particular job step, you create a proxy that has the required permissions and then assign that proxy to the job step. 프록시는 둘 이상의 작업 단계에 대해 지정할 수 있습니다.A proxy can be specified for more than one job step. 동일 사용 권한이 필요한 작업 단계에 대해서는 동일한 프록시를 사용합니다.For job steps that require the same permissions, you use the same proxy.

다음 섹션에서는 SQL ServerSQL Server 에이전트를 사용하여 작업을 만들거나 실행할 수 있도록 사용자에게 부여해야 하는 데이터베이스 역할에 대해 설명합니다.The following section explains what database role you must grant to users so they can create or execute jobs by using SQL ServerSQL Server Agent.

SQL Server 에이전트에 액세스 부여Granting Access to SQL Server Agent

SQL ServerSQL Server 에이전트를 사용하려면 사용자가 다음 고정 데이터베이스 역할 중 하나 이상의 멤버여야 합니다.To use SQL ServerSQL Server Agent, users must be a member of one or more of the following fixed database roles:

  • SQLAgentUserRoleSQLAgentUserRole

  • SQLAgentReaderRoleSQLAgentReaderRole

  • SQLAgentOperatorRoleSQLAgentOperatorRole

이러한 역할은 msdb 데이터베이스에 저장됩니다.These roles are stored in the msdb database. 기본적으로 사용자는 이러한 데이터베이스 역할의 멤버가 아닙니다.By default, no user is a member of these database roles. 이러한 역할의 멤버는 명시적으로 부여되어야 합니다.Membership in these roles must be granted explicitly. sysadmin 고정 서버 역할의 멤버인 사용자는 SQL ServerSQL Server 에이전트에 대해 모든 권한을 가지며 SQL ServerSQL Server 에이전트를 사용하기 위해 이러한 고정 데이터베이스 역할의 멤버일 필요가 없습니다.Users who are members of the sysadmin fixed server role have full access to SQL ServerSQL Server Agent, and do not need to be a member of these fixed database roles to use SQL ServerSQL Server Agent. 이러한 데이터베이스 역할 또는 sysadmin 역할의 멤버가 아닌 사용자는 SQL ServerSQL Server 를 사용하여 SQL ServerSQL Server 에 연결할 때 SQL Server Management StudioSQL Server Management Studio에이전트 노드를 사용할 수 없습니다.If a user is not a member of one of these database roles or of the sysadmin role, the SQL ServerSQL Server Agent node is not available to them when they connect to SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio.

이러한 데이터베이스 역할의 멤버는 자신이 소유하는 작업을 보고 실행할 수 있으며 기존 프록시 계정으로 실행되는 작업 단계를 만들 수 있습니다.Members of these database roles can view and execute jobs that they own, and create job steps that run as an existing proxy account. 이러한 각 역할과 관련된 특정 사용 권한에 대한 자세한 내용은 SQL Server 에이전트 고정 데이터베이스 역할을 참조하세요.For more information about the specific permissions that are associated with each of these roles, see SQL Server Agent Fixed Database Roles.

sysadmin 고정 서버 역할의 멤버에게는 프록시 계정을 만들고 수정하고 삭제할 수 있는 권한이 있습니다.Members of the sysadmin fixed server role have permission to create, modify, and delete proxy accounts. sysadmin 역할의 멤버는 프록시를 지정하지 않는 작업 단계를 만들 수 있는 권한이 있지만 그 대신 SQL ServerSQL Server 에이전트를 시작하는 데 사용되는 계정인 SQL ServerSQL Server 에이전트 서비스 계정으로 실행합니다.Members of the sysadmin role have permission to create job steps that do not specify a proxy, but instead run as the SQL ServerSQL Server Agent service account, which is the account that is used to start SQL ServerSQL Server Agent.


SQL ServerSQL Server 에이전트 구현에 대한 보안을 향상시키려면 다음 지침을 따르십시오.Follow these guidelines to improve the security of your SQL ServerSQL Server Agent implementation:

  • 프록시에 대한 전용 사용자 계정을 만들고 이러한 프록시 사용자 계정만 사용하여 작업 단계를 실행합니다.Create dedicated user accounts specifically for proxies, and only use these proxy user accounts for running job steps.

  • 프록시 사용자 계정에 필요한 사용 권한만 부여합니다.Only grant the necessary permissions to proxy user accounts. 특정 프록시 계정에 할당된 작업 단계를 실행하는 데 실제로 필요한 사용 권한만 부여합니다.Grant only those permissions actually required to run the job steps that are assigned to a given proxy account.

  • Windows SQL ServerSQL Server Administrators 그룹의 멤버인 Microsoft Windows 계정을 사용하여 에이전트 서비스를 실행하지 않습니다.Do not run the SQL ServerSQL Server Agent service under a Microsoft Windows account that is a member of the Windows Administrators group.

  • 프록시는 SQL ServerSQL Server 자격 증명 저장소만큼만 안전합니다.Proxies are only as secure as the SQL ServerSQL Server credential store.

  • 사용자 쓰기 작업으로 NT 이벤트 로그에 쓸 수 있는 경우 SQL ServerSQL Server 에이전트를 통해 경고를 올립니다.If user write operations can write to the NT Event log, they can raise alerts via SQL ServerSQL Server Agent.

  • NT 관리 계정은 서비스 계정 또는 프록시 계정으로 지정하지 않습니다.Do not specify the NT Admin account as a service account or proxy account.

  • SQL ServerSQL ServerSQL ServerSQL Server 에이전트는 서로 자산에 대한 액세스를 갖고 있습니다.Note that SQL ServerSQL Server and SQL ServerSQL Server Agent have access to each other’s assets. 두 서비스가 단일 프로세스 공간을 공유하고 SQL ServerSQL Server 에이전트는 SQL ServerSQL Server 서비스의 sysadmin입니다.The two services share a single process space and SQL ServerSQL Server Agent is a sysadmin on the SQL ServerSQL Server service.

  • TSX를 MSF에 등록할 때 MSX sysadmins는 SQL ServerSQL Server의 TSX 인스턴스에 대한 총 제어 권한을 가져옵니다.When a TSX enlists with an MSX, the MSX sysadmins gets total control over the TSX instance of SQL ServerSQL Server.

  • ACE는 확장 파일이며 그 자체를 호출할 수 없습니다.ACE is an extension and cannot invoke itself. ACE는 Microsoft.SqlServer.Chainer.Setup.exe라는 비어 있는 Chainer ScenarioEngine.exe에 의해 호출되며 이는 Microsoft.SqlServer.Chainer.Setup.exe로도 알려져 있습니다.ACE is invoked by Chainer ScenarioEngine.exe – also known as Microsoft.SqlServer.Chainer.Setup.exe – or it can be invoked by another host process.

  • ACE는 해당 API의 DLL이 ACE에서 호출되기 때문에 SSDP에서 소유하는 다음 구성 DLL에 따라 달라집니다.ACE depends on the following configuration DLL’s owned by SSDP, because those API’s of DLL’s are called by ACE:

    • SCO -Microsoft.SqlServer.Configuration.Sco.dll, 가상 계정에 대한 새 SCO 자격 증명을 포함합니다.SCO – Microsoft.SqlServer.Configuration.Sco.dll, including new SCO validations for virtual accounts

    • 클러스터 -Microsoft.SqlServer.Configuration.Cluster.dllCluster – Microsoft.SqlServer.Configuration.Cluster.dll

    • SFC – Microsoft.SqlServer.Configuration.SqlConfigBase.dllSFC – Microsoft.SqlServer.Configuration.SqlConfigBase.dll

    • 확장 – Microsoft.SqlServer.Configuration.ConfigExtension.dllExtension – Microsoft.SqlServer.Configuration.ConfigExtension.dll

참고 항목See Also

미리 정의된 역할 사용Using Predefined Roles
sp_addrolemember(Transact-SQL)sp_addrolemember (Transact-SQL)
sp_droprolemember(Transact-SQL)sp_droprolemember (Transact-SQL)
보안 및 보호(데이터베이스 엔진)Security and Protection (Database Engine)