복제 에이전트 보안 모델Replication Agent Security Model

복제 에이전트 보안 모델을 사용하여 복제 에이전트를 실행 및 연결하는 계정을 세밀하게 제어할 수 있습니다. 즉, 각 에이전트에 대해 다른 계정을 지정할 수 있습니다.The replication agent security model allows for fine-grained control over the accounts under which replication agents run and make connections: A different account can be specified for each agent. 계정을 지정하는 방법은 복제의 로그인 및 암호 관리를 참조하세요.For more information about how to specify accounts, see Manage Logins and Passwords in Replication.

중요

sysadmin 고정 서버 역할의 멤버가 복제를 구성할 경우 복제 에이전트가 SQL ServerSQL Server 에이전트 계정을 가장하도록 구성할 수 있습니다.When a member of the sysadmin fixed server role configures replication, replication agents can be configured to impersonate the SQL ServerSQL Server Agent account. 이는 복제 에이전트의 로그인과 암호를 지정하여 수행할 수 있지만 이 방법은 사용하지 않는 것이 좋습니다.This is done by not specifying a login and password for a replication agent; however, we do not recommend this approach. 대신 이 항목의 뒷부분에 나오는 "에이전트에 필요한 사용 권한" 섹션에서 설명하는 최소 사용 권한이 있는 각 에이전트에 대해 계정을 지정(최상의 보안 방법)하는 것이 좋습니다.Instead, as a security best practice, we recommend that you specify an account for each agent that has the minimum permissions that are described in the section "Permissions That Are Required by Agents" later in this topic.

복제 에이전트는 모든 실행 파일처럼 Windows 계정의 컨텍스트에서 실행됩니다.Replication agents, like all executables, run under the context of a Windows account. 이 에이전트는 이 계정을 사용하여 Windows 통합 보안 연결을 설정합니다.The agents make Windows Integrated Security connections by using this account. 에이전트를 실행하는 계정은 에이전트를 시작하는 방법에 따라 달라집니다.The account under which the agent runs depends on how the agent is started:

  • SQL ServerSQL Server 에이전트 작업에서 에이전트 시작(기본값): SQL ServerSQL Server 에이전트 작업을 사용하여 복제 에이전트를 시작하면 복제를 구성할 때 지정한 계정의 컨텍스트에서 에이전트가 실행됩니다.Starting the agent from a SQL ServerSQL Server Agent job, the default: When a SQL ServerSQL Server Agent job is used to start a replication agent, the agent runs under the context of an account that you specify when you configure replication. SQL ServerSQL Server 에이전트 및 복제에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 "SQL Server 에이전트의 에이전트 보안" 섹션을 참조하십시오.For more information about SQL ServerSQL Server Agent and replication, see the section "Agent Security under SQL Server Agent" later in this topic. SQL ServerSQL Server 에이전트를 실행하는 계정에 필요한 사용 권한에 대한 자세한 내용은 SQL Server 에이전트 구성을 참조하세요.For information about the permissions that are required for the account under which SQL ServerSQL Server Agent runs, see Configure SQL Server Agent.

  • MS-DOS 명령줄에서 직접 또는 스크립트를 통해 에이전트 시작: 명령줄에서 에이전트를 실행하는 사용자 계정의 컨텍스트에서 에이전트가 실행됩니다.Starting the agent from an MS-DOS command line, either directly or through a script: The agent runs under the context of the account of the user that is running the agent at the command line.

  • RMO(복제 관리 개체) 또는 ActiveX 컨트롤을 사용하는 응용 프로그램에서 에이전트 시작: RMO 또는 ActiveX 컨트롤을 호출하는 응용 프로그램의 컨텍스트에서 에이전트가 실행됩니다.Starting the agent from an application that uses Replication Management Objects (RMO) or an ActiveX control: The agent runs under the context of the application that is calling RMO or the ActiveX control.

    참고

    ActiveX 컨트롤은 더 이상 사용되지 않습니다.ActiveX controls are deprecated.

    Windows 통합 보안의 컨텍스트에서 연결을 설정하는 것이 좋습니다.We recommend that connections be made under the context of Windows Integrated Security. 이전 버전과의 호환성을 위해 SQL ServerSQL Server 보안을 사용할 수도 있습니다.For backward compatibility, SQL ServerSQL Server Security can also be used. 가장 적절한 방법에 대한 자세한 내용은 Replication Security Best Practices을 참조하십시오.For more information about best practices, see Replication Security Best Practices.

에이전트에 필요한 사용 권한Permissions That Are Required by Agents

에이전트를 실행 및 연결하는 계정에는 여러 가지 사용 권한이 필요합니다.The accounts under which agents run and make connections require a variety of permissions. 다음 표에서는 이러한 사용 권한에 대해 설명합니다.These permissions are described in the following table. 각 에이전트를 다른 Windows 계정으로 실행하는 것이 좋으며 이러한 계정에는 필요한 사용 권한만 부여해야 합니다.We recommend that each agent run under a different Windows account and the account should be granted only the required permissions. 여러 에이전트와 관련이 있는 PAL(게시 액세스 목록)에 대한 자세한 내용은 게시자 보안 설정을 참조하세요.For information about the publication access list (PAL), which is relevant for a number of agents, see Secure the Publisher.

참고

일부 Windows 운영 체제의 UAC(사용자 계정 컨트롤)에서 스냅숏 공유에 대한 관리 액세스를 거부할 수 있습니다.User Account Control (UAC) in some Windows operating systems can prevent administrative access to the snapshot share. 따라서 스냅숏 에이전트, 배포 에이전트 및 병합 에이전트에서 사용하는 Windows 계정에 스냅숏 공유 권한을 명시적으로 부여해야 합니다.You must therefore explicitly grant snapshot share permissions to the Windows accounts that are used by the Snapshot Agent, Distribution Agent, and Merge Agent. Windows 계정이 Administrators 그룹의 멤버인 경우에도 이 작업을 수행해야 합니다.You must do this even if the Windows accounts are members of the Administrators group. 자세한 내용은 스냅숏 폴더 보안 설정을 참조하세요.For more information, see Secure the Snapshot Folder.

에이전트Agent 사용 권한Permissions
스냅숏 에이전트Snapshot Agent 에이전트를 실행하는 Windows 계정을 사용하여 배포자에 연결합니다.The Windows account under which the agent runs is used when it makes connections to the Distributor. 이 계정은 다음과 같아야 합니다.This account must:

-적어도 배포 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.-At minimum, be a member of the db_owner fixed database role in the distribution database.

-스냅숏 공유에 대해 쓰기, 읽기 및 수정 권한이 있어야 합니다.-Have read, write, and modify permissions on the snapshot share.



게시자 연결 에 사용되는 계정은 적어도 게시 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.Note that the account that is used to connect to the Publisher must at minimum be a member of the db_owner fixed database role in the publication database.
로그 판독기 에이전트Log Reader Agent 에이전트를 실행하는 Windows 계정을 사용하여 배포자에 연결합니다.The Windows account under which the agent runs is used when it makes connections to the Distributor. 이 계정은 적어도 배포 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.This account must at minimum be a member of the db_owner fixed database role in the distribution database.

게시자 연결에 사용되는 계정은 적어도 게시 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.The account that is used to connect to the Publisher must at minimum be a member of the db_owner fixed database role in the publication database.

sync_type 옵션 replication support only, initialize with backup또는 initialize from lsn을 선택할 때는 설치 스크립트가 배포 데이터베이스에 기록되도록 sp_addsubscription을 실행한 후 로그 판독기 에이전트를 실행해야 합니다.When selecting the sync_type options replication support only, initialize with backup, or initialize from lsn, the log reader agent must run after executing sp_addsubscription, so that the set-up scripts are written to the distribution database. 로그 판독기 에이전트는 sysadmin 고정 서버 역할의 멤버인 계정으로 실행되어야 합니다.The log reader agent must be running under an account that is a member of the sysadmin fixed server role. sync_type 옵션이 Automatic으로 설정된 경우 특별한 로그 판독기 에이전트 동작이 필요하지 않습니다.When the sync_type option is set to Automatic, no special log reader agent actions are required.
밀어넣기 구독에 대한 배포 에이전트Distribution Agent for a push subscription 에이전트를 실행하는 Windows 계정을 사용하여 배포자에 연결합니다.The Windows account under which the agent runs is used when it makes connections to the Distributor. 이 계정은 다음과 같아야 합니다.This account must:

-적어도 배포 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.-At minimum be a member of the db_owner fixed database role in the distribution database.

-PAL의 멤버여야 합니다.-Be a member of the PAL.

-스냅숏 공유에 대해 읽기 권한이 있어야 합니다.-Have read permissions on the snapshot share.

-SQL Server 이외 구독자에 대한 구독인 경우에는 구독자용 OLE DB 공급자의 설치 디렉터리에 대해 읽기 권한이 있어야 합니다.-Have read permissions on the installation directory of the OLE DB provider for the Subscriber if the subscription is for a non-SQL Server Subscriber.

-LOB 데이터를 복제할 때 배포 에이전트에는 복제 C:\Program Files\Microsoft SQL Server\XX\COMfolder 에 대한 쓰기 권한이 있어야 합니다. 여기서 XX는 인스턴스 ID를 나타냅니다.-When replicating LOB data, the distribution agent must have write permissions on the replication C:\Program Files\Microsoft SQL Server\XX\COMfolder where XX represents the instanceID.



구독자 연결 에 사용되는 계정은 적어도 구독 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버이거나 SQL Server 이외 구독자에 대한 구독인 경우 이 멤버와 동등한 권한이 있어야 합니다.Note that the account that is used to connect to the Subscriber must at minimum be a member of the db_owner fixed database role in the subscription database, or have equivalent permissions if the subscription is for a non-SQL Server Subscriber.

또한 배포 에이전트에서 -subscriptionstreams >= 2 를 사용할 경우 교착 상태를 검색할 수 있도록 구독자에 대한 View Server State 권한도 부여해야 합니다.Also note that when using -subscriptionstreams >= 2 on the distribution agent you must also grant the View Server State permission on the subscribers to detect deadlocks.
끌어오기 구독에 대한 배포 에이전트Distribution Agent for a pull subscription 에이전트를 실행하는 Windows 계정을 사용하여 구독자에 연결합니다.The Windows account under which the agent runs is used when it makes connections to the Subscriber. 이 계정은 적어도 구독 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.This account must at minimum be a member of the db_owner fixed database role in the subscription database. 배포자 연결에 사용되는 계정은 다음과 같아야 합니다.The account that is used to connect to the Distributor must:

-PAL의 멤버여야 합니다.-Be a member of the PAL.

-스냅숏 공유에 대해 읽기 권한이 있어야 합니다.-Have read permissions on the snapshot share.

-LOB 데이터를 복제할 때 배포 에이전트에는 복제 C:\Program Files\Microsoft SQL Server\XX\COMfolder 에 대한 쓰기 권한이 있어야 합니다. 여기서 XX는 인스턴스 ID를 나타냅니다.-When replicating LOB data, the distribution agent must have write permissions on the replication C:\Program Files\Microsoft SQL Server\XX\COMfolder where XX represents the instanceID.



배포 에이전트에서 -subscriptionstreams >= 2 를 사용할 경우 교착 상태를 검색할 수 있도록 구독자에 대한 View Server State 권한도 부여해야 합니다.Note that when using -subscriptionstreams >= 2 on the distribution agent you must also grant the View Server State permission on the subscribers to detect deadlocks.
밀어넣기 구독에 대한 병합 에이전트Merge Agent for a push subscription 에이전트를 실행하는 Windows 계정을 사용하여 게시자 및 배포자에 연결합니다.The Windows account under which the agent runs is used when it makes connections to the Publisher and Distributor. 이 계정은 다음과 같아야 합니다.This account must:

-적어도 배포 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.-At minimum be a member of the db_owner fixed database role in the distribution database.

-PAL의 멤버여야 합니다.-Be a member of the PAL.

-게시 데이터베이스의 사용자와 연결된 로그인이어야 합니다.-Be a login that is associated with a user in the publication database.

-스냅숏 공유에 대해 읽기 권한이 있어야 합니다.-Have read permissions on the snapshot share.



구독자 연결 에 사용되는 계정은 적어도 구독 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.Note that the account used to connect to the Subscriber must at minimum be a member of the db_owner fixed database role in the subscription database.
끌어오기 구독에 대한 병합 에이전트Merge Agent for a pull subscription 에이전트를 실행하는 Windows 계정을 사용하여 구독자에 연결합니다.The Windows account under which the agent runs is used when it makes connections to the Subscriber. 이 계정은 적어도 구독 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.This account must at minimum be a member of the db_owner fixed database role in the subscription database. 게시자 및 배포자 연결에 사용되는 계정은 다음과 같아야 합니다.The account that is used to connect to the Publisher and Distributor must:

-PAL의 멤버여야 합니다.-Be a member of the PAL.

-게시 데이터베이스의 사용자와 연결된 로그인이어야 합니다.-Be a login associated with a user in the publication database.

-배포 데이터베이스의 사용자와 연결된 로그인이어야 합니다.-Be a login associated with a user in the distribution database. 이 사용자는 Guest 사용자일 수 있습니다.The user can be the Guest user.

-스냅숏 공유에 대해 읽기 권한이 있어야 합니다.-Have read permissions on the snapshot share.
큐 판독기 에이전트Queue Reader Agent 에이전트를 실행하는 Windows 계정을 사용하여 배포자에 연결합니다.The Windows account under which the agent runs is used when it makes connections to the Distributor. 이 계정은 적어도 배포 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.This account must at minimum be a member of the db_owner fixed database role in the distribution database.

게시자 연결에 사용되는 계정은 적어도 게시 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.The account that is used to connect to the Publisher must at minimum be a member of the db_owner fixed database role in the publication database.

구독자 연결에 사용되는 계정은 적어도 구독 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.The account that is used to connect to the Subscriber must at minimum be a member of the db_owner fixed database role in the subscription database.

SQL Server 에이전트의 에이전트 보안Agent Security Under SQL Server Agent

SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL 프로시저 또는 RMO를 사용하여 복제를 구성하면 기본적으로 각 에이전트에 대해 SQL ServerSQL Server 에이전트 작업이 생성됩니다.When you configure replication by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL procedures, or RMO, a SQL ServerSQL Server Agent job is created by default for each agent. 그런 다음 계속, 일정대로 또는 요청 시 실행되는지 여부에 관계없이 에이전트가 작업 단계의 컨텍스트에서 실행됩니다.Agents then run under the context of a job step, regardless of whether they run continuously, on a schedule, or on demand. 작업 SQL Server Management StudioSQL Server Management Studio폴더에서 이러한 작업을 볼 수 있습니다.You can view these jobs under the Jobs folder in SQL Server Management StudioSQL Server Management Studio. 다음 표에서는 작업 이름을 나열합니다.The following table lists the job names.

에이전트Agent 작업 이름Job name
스냅숏 에이전트Snapshot Agent <Publisher>-<PublicationDatabase>-<Publication>-<integer><Publisher>-<PublicationDatabase>-<Publication>-<integer>
병합 게시 파티션에 대한 스냅숏 에이전트Snapshot Agent for a merge publication partition Dyn_<Publisher>-<PublicationDatabase>-<Publication>-<GUID>Dyn_<Publisher>-<PublicationDatabase>-<Publication>-<GUID>
로그 판독기 에이전트Log Reader Agent <Publisher>-<PublicationDatabase>-<integer><Publisher>-<PublicationDatabase>-<integer>
끌어오기 구독에 대한 병합 에이전트Merge Agent for pull subscriptions <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<integer><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<integer>
밀어넣기 구독에 대한 병합 에이전트Merge Agent for push subscriptions <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>
밀어넣기 구독에 대한 배포 에이전트Distribution Agent for push subscriptions <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>**
끌어오기 구독에 대한 배포 에이전트Distribution Agent for pull subscriptions <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<GUID>*<Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<GUID>***
SQL Server 이외 구독자의 밀어넣기 구독에 대한 배포 에이전트Distribution Agent for push subscriptions to non-SQL Server Subscribers <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>
큐 판독기 에이전트Queue Reader Agent [<Distributor>].<integer>[<Distributor>].<integer>

*Oracle 게시물에 대한 밀어넣기 구독의 경우 작업 이름은 <Publisher>-<PublicationDatabase>가 아닌 <Publisher>-<Publisher>입니다.*For push subscriptions to Oracle publications, the job name is <Publisher>-<Publisher> instead of <Publisher>-<PublicationDatabase>.

**Oracle 게시물에 대한 끌어오기 구독의 경우 작업 이름은 <Publisher>-<PublicationDatabase>가 아닌 <Publisher>-<DistributionDatabase>입니다.**For pull subscriptions to Oracle publications, the job name is <Publisher>-<DistributionDatabase> instead of <Publisher>-<PublicationDatabase>.

복제를 구성할 때는 에이전트를 실행해야 하는 계정을 지정합니다.When you configure replication, you specify accounts under which agents should run. 그러나 모든 작업 단계는 프록시의 보안 컨텍스트에서 실행되므로 복제는 사용자가 지정하는 에이전트 계정에 대해 다음 매핑을 내부적으로 수행합니다.However, all job steps run under the security context of a proxy; therefore, replication performs the following mappings internally for the agent accounts that you specify:

  • Transact-SQLTransact-SQL CREATE CREDENTIAL 문을 사용하여 계정이 자격 증명에 먼저 매핑됩니다.The account is first mapped to a credential by using the Transact-SQLTransact-SQL CREATE CREDENTIAL statement. SQL ServerSQL Server 에이전트 프록시는 자격 증명을 사용하여 Windows 사용자 계정에 대한 정보를 저장합니다. Agent proxies use credentials to store information about Windows user accounts.

  • sp_add_proxy 저장 프로시저가 호출되고 자격 증명을 사용하여 프록시가 생성됩니다.The sp_add_proxy stored procedure is called, and the credential is used to create a proxy..

참고

이 정보는 적절한 보안 컨텍스트로 에이전트를 실행하는 작업과 관련된 사항을 이해하는 데 도움을 주기 위한 것입니다.This information is provided to help you understand what is involved in running agents with the appropriate security context. 이미 생성된 자격 증명이나 프록시와는 직접 상호 작용하지 않아도 됩니다.You should not have to interact directly with the credentials or proxies that have been created.

관련 항목:See Also

Replication Security Best Practices Replication Security Best Practices
보안 및 보호(복제) Security and Protection (Replication)
스냅숏 폴더 보안 설정Secure the Snapshot Folder