レプリケーション エージェントのセキュリティ モデルReplication Agent Security Model

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) 適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions)

レプリケーション エージェントのセキュリティ モデルでは、レプリケーション エージェントの実行や接続に使用されるアカウントをきめ細かく制御できます。異なるアカウントをエージェントごとに指定できます。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. アカウントを指定する方法の詳細については、「ID およびアクセス制御 (レプリケーション)」を参照してください。For more information about how to specify accounts, see Identity and access control for replication.

エージェントを実行する Windows アカウントがないため、Azure SQL Managed Instance のレプリケーション エージェントのセキュリティ モデルは少し異なります。The replication agent security model is a little bit different for Azure SQL Managed Instance, as there are no Windows accounts under which the agents will run. 代わりに、SQL Server 認証を使用してすべての操作を行う必要があります。Instead, everything must be done through SQL Server authentication.

重要

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 エージェントを実行するアカウントに必要な権限の詳細については、「Configure SQL Server Agent」 (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) の詳細については、「Secure the Publisher」 (パブリッシャーのセキュリティ保護) を参照してください。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. 詳細については、「Secure the Snapshot Folder」(スナップショット フォルダーのセキュリティ保護) をご覧ください。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)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 onlyinitialize 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 with read/write permissions 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 with read/write permissions 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)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 StudioTransact-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>
マージ パブリケーション パーティションに対するスナップショット エージェントSnapshot Agent for a merge publication partition Dyn_<Publisher>-<PublicationDatabase>-<Publication>-<GUID>Dyn_<Publisher>-<PublicationDatabase>-<Publication>-<GUID>
ログ リーダー エージェント (Log Reader Agent)Log Reader Agent <Publisher>-<PublicationDatabase>-<integer>
プル サブスクリプションに対するマージ エージェントMerge Agent for pull subscriptions <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<integer>
プッシュ サブスクリプションに対するマージ エージェントMerge Agent for push subscriptions <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>
プッシュ サブスクリプションに対するディストリビューション エージェントDistribution Agent for push subscriptions <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>
プル サブスクリプションに対するディストリビューション エージェントDistribution Agent for pull subscriptions <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<GUID>
SQL Server 以外のサブスクライバーへのプッシュ サブスクリプションに対するディストリビューション エージェントDistribution Agent for push subscriptions to non-SQL Server Subscribers <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>
キュー リーダー エージェント (Queue Reader Agent)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
レプリケーションのセキュリティ設定の表示および変更 View and modify replication security settings
スナップショット フォルダーのセキュリティ保護Secure the Snapshot Folder