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 에이전트 프록시에 의해 결정된 각 작업 단계를 수행하는 데 필요한 사용 권한만 있는 보안 컨텍스트에서 각 작업 단계를 실행할 수 있습니다. 특정 작업 단계의 사용 권한을 설정하려면 필요 사용 권한을 가진 프록시를 만든 다음 해당 프록시를 작업 단계에 할당하십시오. 프록시는 둘 이상의 작업 단계에 대해 지정할 수 있습니다. 동일한 권한이 필요한 작업 단계의 경우 동일한 프록시를 사용합니다.

다음 섹션에서는 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 Administrators 그룹의 멤버인 Microsoft Windows 계정을 사용하여 SQL Server 에이전트 서비스를 실행하지 않습니다.

  • 프록시는 SQL Server 자격 증명 저장소만큼만 안전합니다.

  • 사용자 쓰기 작업으로 NT 이벤트 로그에 쓸 수 있는 경우 SQL Server 에이전트를 통해 경고를 올립니다.

  • NT 관리 계정은 서비스 계정 또는 프록시 계정으로 지정하지 않습니다.

  • SQL Server 및 SQL Server 에이전트는 서로의 자산에 대한 액세스 권한이 있습니다. 두 서비스가 단일 프로세스 공간을 공유하고 SQL Server 에이전트는 SQL Server 서비스의 sysadmin입니다.

  • TSX를 MSX에 등록할 때 MSX sysadmins는 SQL Server의 TSX 인스턴스에 대한 총 제어 권한을 가져옵니다.

  • ACE는 확장이며 자신을 호출할 수 없습니다. ACE는 Microsoft.SqlServer.Chainer.Setup.exe이라고도 하는 Chainer ScenarioEngine.exe에 의해 호출되거나 다른 호스트 프로세스에서 호출할 수 있습니다.

  • ACE는 해당 API의 DLL이 ACE에서 호출되기 때문에 SSDP에서 소유된 다음 구성 DLL에 따라 달라집니다.

    • SCO -가상 계정에 대한 새 SCO 자격 증명이 포함된 Microsoft.SqlServer.Configuration.Sco.dll

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

    • SFC - Microsoft.SqlServer.Configuration.SqlConfigBase.dll

    • 확장 - Microsoft.SqlServer.Configuration.ConfigExtension.dll

참고 항목

미리 정의된 역할 사용
sp_addrolemember(Transact-SQL)
sp_droprolemember(Transact-SQL)
보안 및 보호(데이터베이스 엔진)