적용 대상: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 에이전트 프록시에 의해 결정되는 해당 작업 단계를 수행하는 데 필요한 권한만 있는 보안 컨텍스트에서 각 작업 단계를 실행할 수 있습니다. 특정 작업 단계에 대한 사용 권한을 설정하려면 필요한 권한이 있는 프록시를 만든 다음 해당 프록시를 작업 단계에 할당합니다. 둘 이상의 작업 단계에 프록시를 지정할 수 있습니다. 동일한 권한이 필요한 작업 단계의 경우 동일한 프록시를 사용합니다.
다음 섹션에서는 SQL Server 에이전트를 사용하여 작업을 만들거나 실행할 수 있도록 사용자에게 부여해야 하는 데이터베이스 역할에 대해 설명합니다.
SQL Server 에이전트에 대한 액세스 권한 부여
SQL Server 에이전트를 사용하려면 사용자가 다음 고정 데이터베이스 역할 중 하나 이상의 멤버여야 합니다.
SQLAgentUserRole
SQLAgentReaderRole
SQLAgentOperatorRole
이러한 역할은 msdb 데이터베이스에 저장됩니다. 기본적으로 사용자는 이러한 데이터베이스 역할의 멤버가 아닙니다. 이러한 역할의 멤버 자격은 명시적으로 부여되어야 합니다. sysadmin 고정 서버 역할의 멤버인 사용자는 SQL Server 에이전트에 대한 모든 권한을 가지며 SQL Server 에이전트를 사용하려면 이러한 고정 데이터베이스 역할의 멤버가 될 필요가 없습니다. 사용자가 이러한 데이터베이스 역할 또는 sysadmin 역할의 멤버가 아닌 경우 SQL Server Management Studio를 사용하여 SQL Server에 연결할 때 SQL Server 에이전트 노드를 사용할 수 없습니다.
이러한 데이터베이스 역할의 멤버는 자신이 소유한 작업을 보고 실행하고, 기존 프록시 계정으로 실행되는 작업 단계를 만들 수 있습니다. 이러한 각 역할과 연결된 특정 권한에 대한 자세한 내용은 SQL Server 에이전트 고정 데이터베이스 역할을 참조하세요.
sysadmin 고정 서버 역할의 멤버에는 프록시 계정을 만들고 수정하고 삭제할 수 있는 권한이 있습니다. sysadmin 역할의 멤버는 프록시를 지정하지 않고 SQL Server 에이전트를 시작하는 데 사용되는 계정인 SQL Server 에이전트 서비스 계정으로 실행되는 작업 단계를 만들 수 있는 권한이 있습니다.
지침
SQL Server 에이전트 구현의 보안을 향상하려면 다음 지침을 따르세요.
프록시용 전용 사용자 계정을 만들고 이러한 프록시 사용자 계정만 작업 단계를 실행하는 데 사용합니다.
프록시 사용자 계정에 필요한 권한만 부여합니다. 지정된 프록시 계정에 할당된 작업 단계를 실행하는 데 필요한 권한만 부여합니다.
Windows 관리자 그룹의 구성원인 Microsoft Windows 계정으로 SQL Server 에이전트 서비스를 실행하지 마세요.
프록시는 SQL Server 자격 증명 저장소만큼만 안전합니다.
사용자가 쓰기 작업을 NT Event 로그에 기록할 수 있는 경우, SQL Server 에이전트를 통해 경고를 올릴 수 있습니다.
NT 관리자 계정을 서비스 계정 또는 프록시 계정으로 지정하지 마세요.
SQL Server 및 SQL Server 에이전트는 서로의 자산에 액세스할 수 있습니다. 두 서비스는 단일 프로세스 공간을 공유하고 SQL Server 에이전트는 SQL Server 서비스의 sysadmin입니다.
TSX(대상 서버)가 MSX(마스터 서버)와 함께 참여하면 MSX sysadmins는 SQL Server의 TSX 인스턴스를 완전히 제어합니다.
ACE는 확장이며 자신을 호출할 수 없습니다. chainer ScenarioEngine.exe(Microsoft.SqlServer.Chainer.Setup.exe라고도 함)는 ACE를 호출할 수 있습니다. 다른 호스트 프로세스는 ACE를 호출할 수도 있습니다.
ACE는 SSDP가 소유한 다음 구성 DLL에 따라 달라집니다. 이러한 DLL API는 ACE에서 호출되기 때문입니다.
SCO - 가상 계정에 대한 새 SCO 유효성 검사를 포함하여 Microsoft.SqlServer.Configuration.Sco.dll
클러스터 - Microsoft.SqlServer.Configuration.Cluster.dll
SFC - Microsoft.SqlServer.Configuration.SqlConfigBase.dll
확장 - Microsoft.SqlServer.Configuration.ConfigExtension.dll
연결된 서버
Azure SQL Managed Instance와 같은 일부 시나리오에서는 연결된 서버를 통해 원격 서버에서 Transact-SQL(T-SQL) 쿼리를 실행하는 SQL 에이전트 작업을 실행하려면 로컬 로그인을 원격 서버의 로그인에 매핑해야 합니다.
sp_addlinkedsrvlogin 사용하여 로컬 서버의 로그인 간에 T-SQL 쿼리를 실행하는 데 필요한 권한이 있는 원격 서버의 로그인 간에 매핑을 만듭니다. SQL 에이전트 작업이 연결된 서버를 통해 원격 서버에 연결되면 원격 로그인 컨텍스트에서 T-SQL 쿼리를 실행합니다.
다음 표에서는 Azure SQL Managed Instance의 SQL 에이전트 작업 소유자를 기반으로 로그인을 매핑하는 방법을 설명합니다.
SQL 에이전트 작업 소유자 | 로그인을 매핑하는 방법 |
---|---|
sysadmin이 아닌 사용자 | SQL 에이전트 작업을 소유한 로컬 사용자를 원격 로그인에 매핑합니다. |
sysadmin | 매개 변수를 으로 설정하여 @locallogin NULL 원격 로그인에 매핑합니다. |
비고
로컬 서버가 Azure SQL Managed Instance인 경우 SQL 에이전트 작업에 대한 원격 서버에 로그인을 만들어야 합니다. 사용자를 올바르게 매핑하지 못하면 다음 예제와 같은 오류가 발생할 수 있습니다.
Windows logins are not supported in this version of SQL Server
Linked servers cannot be used under impersonation without a mapping for the impersonated login