복제 에이전트 보안 모델
적용 대상: SQL Server
복제 에이전트 보안 모델을 사용하면 복제 에이전트가 실행되고 연결되는 계정을 세밀하게 제어할 수 있습니다. 각 에이전트마다 다른 계정을 지정할 수 있습니다. 계정을 지정하는 방법에 대한 자세한 내용은 복제를 위한 ID 및 액세스 제어를 참조하세요.
에이전트가 실행되는 Windows 계정이 없으므로 복제 에이전트 보안 모델은 Azure SQL Managed Instance과는 약간 다릅니다. 대신 SQL Server 인증을 통해 모든 작업을 수행해야 합니다.
Important
sysadmin 고정 서버 역할의 멤버가 복제를 구성하는 경우 복제 에이전트를 구성하여 SQL Server 에이전트 계정을 가장할 수 있습니다. 복제 에이전트에 대한 로그인 및 암호를 지정하지 않고 이 작업을 수행합니다. 그러나 이 방법은 권장하지 않습니다. 대신 보안 모범 사례로 이 항목의 뒷부분에 있는 "에이전트에 필요한 사용 권한" 섹션에 설명된 최소 사용 권한이 있는 각 에이전트에 대한 계정을 지정하는 것이 좋습니다.
복제 에이전트는 모든 실행 파일과 마찬가지로 Windows 계정의 컨텍스트에서 실행됩니다. 에이전트는 이 계정을 사용하여 Windows 통합 보안 연결을 만듭니다. 에이전트가 실행되는 계정은 에이전트 시작 방법에 따라 달라집니다.
SQL Server 에이전트 작업에서 에이전트를 시작하는 기본값: SQL Server 에이전트 작업을 사용하여 복제 에이전트를 시작하는 경우 에이전트는 복제를 구성할 때 지정한 계정의 컨텍스트에서 실행됩니다. SQL Server 에이전트 및 복제에 대한 자세한 내용은 이 항목의 뒷부분에 있는 "SQL Server 에이전트 보안" 섹션을 참조하세요. SQL Server 에이전트를 실행하는 계정에 필요한 사용 권한에 대한 자세한 내용은 SQL Server 에이전트 구성을 참조하세요.
직접 또는 스크립트를 통해 MS-DOS 명령줄에서 에이전트를 시작합니다. 에이전트는 명령줄에서 에이전트를 실행하는 사용자의 계정 컨텍스트에서 실행됩니다.
RMO(복제 관리 개체) 또는 ActiveX 컨트롤을 사용하는 애플리케이션에서 에이전트 시작: 에이전트는 RMO 또는 ActiveX 컨트롤을 호출하는 애플리케이션의 컨텍스트에서 실행됩니다.
참고 항목
ActiveX 컨트롤은 더 이상 사용되지 않습니다.
Windows 통합 보안의 컨텍스트에서 연결을 설정하는 것이 좋습니다. 이전 버전과의 호환성을 위해 SQL Server 보안도 사용할 수 있습니다. 모범 사례에 대한 자세한 내용은 복제 보안 설정 모범 사례를 참조하세요.
에이전트에 필요한 권한
에이전트를 실행하고 연결하는 계정에는 다양한 권한이 필요합니다. 이러한 권한은 다음 표에 설명되어 있습니다. 각 에이전트는 다른 Windows 계정으로 실행되며 계정에 필요한 권한만 부여해야 합니다. 여러 에이전트와 관련된 PAL(게시 액세스 목록)에 대한 자세한 내용은 게시자 보안을 참조하세요.
참고 항목
일부 Windows 운영 체제의 UAC(사용자 계정 컨트롤)는 스냅샷 공유에 대한 관리 액세스를 차단할 수 있습니다. 따라서 스냅샷 에이전트, 배포 에이전트 및 병합 에이전트 사용하는 Windows 계정에 스냅샷 공유 권한을 명시적으로 부여해야 합니다. Windows 계정이 Administrators 그룹의 구성원인 경우에도 이 작업을 수행해야 합니다. 자세한 내용은 스냅샷 폴더 보안 설정을 참조하세요.
에이전트 | 사용 권한 |
---|---|
스냅샷 에이전트 | 에이전트가 배포자에 연결할 때 에이전트가 실행되는 Windows 계정이 사용됩니다. 이 계정은 다음 조건을 충족해야 합니다. -적어도 배포 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다. -스냅샷 공유에 대해 쓰기, 읽기 및 수정 권한이 있어야 합니다. 게시자에 연결하는 데 사용되는 계정은 적어도 게시 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다. |
로그 판독기 에이전트 | 에이전트가 배포자에 연결할 때 에이전트가 실행되는 Windows 계정이 사용됩니다. 이 계정은 적어도 배포 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다. 게시자에 연결하는 데 사용되는 계정은 적어도 게시 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다. sync_type 옵션 복제 지원만 선택하거나, 백업을 사용하여 초기화하거나, lsn에서 초기화할 때 설정 스크립트가 배포 데이터베이스에 기록되도록 sp_addsubscription 실행한 후 로그 판독기 에이전트를 실행해야 합니다. 로그 판독기 에이전트는 sysadmin 고정 서버 역할의 멤버인 계정으로 실행되어야 합니다. sync_type 옵션을 자동으로 설정하면 특별한 로그 판독기 에이전트 작업이 필요하지 않습니다. |
밀어넣기 구독에 대한 배포 에이전트 | 에이전트가 배포자에 연결할 때 에이전트가 실행되는 Windows 계정이 사용됩니다. 이 계정은 다음 조건을 충족해야 합니다. -적어도 배포 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다. -PAL의 멤버여야 합니다. -스냅샷 공유에 대해 읽기 권한이 있어야 합니다. -구독이 SQL Server 이외 구독자에 대한 경우 구독자에 대한 OLE DB 공급자의 설치 디렉터리에 대한 읽기 권한이 있어야 합니다. -LOB 데이터를 복제할 때 배포 에이전트는 복제 C:\Program Files\Microsoft SQL Server\XX\COMfolder에 대한 쓰기 권한이 있어야 합니다. 여기서 XX는 instanceID를 나타냅니다. 구독자 연결 에 사용되는 계정은 적어도 구독 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버이거나 SQL Server 이외 구독자에 대한 구독인 경우 이 멤버와 동등한 권한이 있어야 합니다. 또한 배포 에이전트에서 -subscriptionstreams >= 2 를 사용할 경우 교착 상태를 검색할 수 있도록 구독자에 대한 View Server State 권한도 부여해야 합니다. |
끌어오기 구독에 대한 배포 에이전트 | 에이전트가 실행되는 Windows 계정은 구독자에 연결할 때 사용됩니다. 이 계정은 적어도 구독 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다. 배포자에 연결하는 데 사용되는 계정은 다음을 수행해야 합니다. -PAL의 멤버여야 합니다. -스냅샷 공유에 대해 읽기 권한이 있어야 합니다. -LOB 데이터를 복제할 때 배포 에이전트는 복제 C:\Program Files\Microsoft SQL Server\XX\COMfolder에 대한 쓰기 권한이 있어야 합니다. 여기서 XX는 instanceID를 나타냅니다. 또한 배포 에이전트에서 -subscriptionstreams >= 2 를 사용할 경우 교착 상태를 검색할 수 있도록 구독자에 대한 View Server State 권한도 부여해야 합니다. |
밀어넣기 구독에 대한 병합 에이전트 | 에이전트가 실행되는 Windows 계정은 게시자 및 배포자에 연결할 때 사용됩니다. 이 계정은 다음 조건을 충족해야 합니다. -적어도 배포 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다. -PAL의 멤버여야 합니다. -게시 데이터베이스에서 읽기/쓰기 권한이 있는 사용자와 연결된 로그인이어야 합니다. -스냅샷 공유에 대해 읽기 권한이 있어야 합니다. 구독자 연결에 사용되는 계정은 적어도 구독 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다. |
병합 에이전트(끌어오기 구독용) | 에이전트가 실행되는 Windows 계정은 구독자에 연결할 때 사용됩니다. 이 계정은 적어도 구독 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다. 게시자 및 배포자에 연결하는 데 사용되는 계정은 다음을 수행해야 합니다. -PAL의 멤버여야 합니다. -게시 데이터베이스에서 읽기/쓰기 권한이 있는 사용자와 연결된 로그인이어야 합니다. -배포 데이터베이스의 사용자와 연결된 로그인이어야 합니다. 이 사용자는 Guest 사용자일 수 있습니다. -스냅샷 공유에 대해 읽기 권한이 있어야 합니다. |
큐 판독기 에이전트 | 에이전트가 배포자에 연결할 때 에이전트가 실행되는 Windows 계정이 사용됩니다. 이 계정은 적어도 배포 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다. 게시자에 연결하는 데 사용되는 계정은 적어도 게시 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다. 구독자 연결에 사용되는 계정은 적어도 구독 데이터베이스에 포함된 db_owner 고정 데이터베이스 역할의 멤버여야 합니다. |
SQL Server 에이전트의 에이전트 보안
SQL Server Management Studio, Transact-SQL 프로시저 또는 RMO를 사용하여 복제를 구성하면 기본적으로 각 에이전트에 대해 SQL Server 에이전트 작업이 생성됩니다. 그런 다음 에이전트는 지속적으로 실행되는지, 일정에 따라 또는 요청 시 실행되는지에 관계없이 작업 단계의 컨텍스트에서 실행됩니다. SQL Server Management Studio의 작업 폴더에서 이러한 작업을 볼 수 있습니다. 다음 표에는 작업 이름이 나와 있습니다.
에이전트 | 작업 이름 |
---|---|
스냅샷 에이전트 | <Publisher>-<PublicationDatabase>-<Publication>-<integer> |
병합 게시 파티션에 대한 스냅샷 에이전트 | Dyn_<Publisher>-<PublicationDatabase>-<Publication>-<GUID> |
로그 판독기 에이전트 | <Publisher>-<PublicationDatabase>-<integer> |
병합 에이전트(끌어오기 구독용) | <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<integer> |
병합 에이전트(밀어넣기 구독용) | <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer> |
밀어넣기 구독용 배포 에이전트 | <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer> |
끌어오기 구독용 배포 에이전트 | <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<GUID> |
비 SQL Server 구독자에 대한 밀어넣기 구독용 배포 에이전트 | <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer> |
큐 판독기 에이전트 | [<배포자>].<정수> |
*Oracle 게시에서 밀어넣기 구독의 경우 작업명은 <Publisher>-<PublicationDatabase>가 아닌 <Publisher>-<Publisher>입니다.
**Oracle 게시물에 대한 끌어오기 구독의 경우 작업 이름은 <Publisher>-<DistributionDatabase> instead of <Publisher>-<PublicationDatabase>입니다.
복제를 구성할 때는 에이전트를 실행해야 하는 계정을 지정합니다. 그러나 모든 작업 단계는프록시의 보안 컨텍스트에서 실행되므로 복제는 사용자가 지정한 에이전트 계정에 대해 내부적으로 다음 매핑을 수행합니다.
Transact-SQL CREATE CREDENTIAL 문을 사용하여 계정이 자격 증명에 먼저 매핑됩니다. SQL Server 에이전트 프록시는 자격 증명을 사용하여 Windows 사용자 계정에 대한 정보를 저장합니다.
sp_add_proxy 저장 프로시저가 호출되고 자격 증명이 프록시를 만드는 데 사용됩니다.
참고 항목
이 정보는 적절한 보안 컨텍스트로 에이전트를 실행하는 작업과 관련된 사항을 이해하는 데 도움을 주기 위한 것입니다. 생성된 자격 증명 또는 프록시와 직접 상호 작용할 필요가 없습니다.