次の方法で共有


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

レプリケーション エージェントのセキュリティ モデルを使用すると、レプリケーション エージェントを実行して接続するアカウントをきめ細かく制御できます。エージェントごとに異なるアカウントを指定できます。アカウントを指定する方法の詳細については、「レプリケーションのログインとパスワードの管理」を参照してください。

重要な注意事項重要

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 セキュリティを使用できます。推奨事項の詳細については、「レプリケーション セキュリティの推奨事項」を参照してください。

注意注意

SQL Server 2000 で作成されたレプリケーション スクリプトの場合、セキュリティに関して強化された機能を活用するには、そのスクリプトを SQL Server 2008 用にアップグレードする必要があります。詳細については、「レプリケーション スクリプトをアップグレードする方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。

エージェントに必要な権限

エージェントを実行して接続するアカウントには、さまざまな権限が必要です。これらの権限を次の表に詳しく示します。各エージェントは異なる Windows アカウントで実行することをお勧めします。また、このアカウントには、必要な権限のみ許可してください。複数のエージェントに関連するパブリケーション アクセス リスト (PAL) の詳細については、「パブリッシャのセキュリティ確保」を参照してください。

注意注意

Windows Vista のユーザー アカウント制御 (UAC) により、スナップショット共有への管理アクセスが妨害される場合があります。このため、スナップショット エージェント、ディストリビューション エージェント、およびマージ エージェントによって使用される Windows アカウントに、スナップショット共有の権限を明示的に与える必要があります。この操作は、Windows アカウントが Administrators グループのメンバである場合にも必要です。詳細については、「スナップショット フォルダのセキュリティ」を参照してください。

エージェント

権限

スナップショット エージェント

このエージェントを実行する Windows アカウントは、ディストリビュータに接続するときに使用されます。このアカウントは、次の条件を満たしている必要があります。

  • 最低でも、ディストリビューション データベースの db_owner 固定データベース ロールのメンバである。

  • スナップショット共有の書き込み権限を持っている。

パブリッシャへの接続に使用されるアカウントは、最低でもパブリケーション データベースの db_owner 固定データベース ロールのメンバである必要があります。

ログ リーダー エージェント

このエージェントを実行する Windows アカウントは、ディストリビュータに接続するときに使用されます。このアカウントは、最低でもディストリビューション データベースの db_owner 固定データベース ロールのメンバである必要があります。

パブリッシャへの接続に使用されるアカウントは、最低でもパブリケーション データベースの db_owner 固定データベース ロールのメンバである必要があります。

プッシュ サブスクリプションのディストリビューション エージェント

このエージェントを実行する Windows アカウントは、ディストリビュータに接続するときに使用されます。このアカウントは、次の条件を満たしている必要があります。

  • 最低でも、ディストリビューション データベースで db_owner 固定データベース ロールのメンバである。

  • PAL のメンバである。

  • スナップショット共有の読み取り権限を持っている。

  • サブスクリプションが SQL Server 以外のサブスクライバ用の場合、サブスクライバの OLE DB プロバイダのインストール ディレクトリに対する読み取り権限を持っている。

サブスクライバへの接続に使用されるアカウントは、最低でもサブスクリプション データベースの db_owner 固定データベース ロールのメンバである必要があります。サブスクリプションが SQL Server 以外のサブスクライバ用である場合は、同等の権限を持っている必要があります。

プル サブスクリプションのディストリビューション エージェント

このエージェントを実行する Windows アカウントは、サブスクライバに接続するときに使用されます。このアカウントは、最低でもサブスクリプション データベースの db_owner 固定データベース ロールのメンバである必要があります。

ディストリビュータへの接続に使用されるアカウントは、次の条件を満たしている必要があります。

  • PAL のメンバである。

  • スナップショット共有の読み取り権限を持っている。

プッシュ サブスクリプションのマージ エージェント

このエージェントを実行する 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>1

プル サブスクリプションに対するディストリビューション エージェント

<Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<GUID>2

SQL Server 以外のサブスクライバへのプッシュ サブスクリプションに対するディストリビューション エージェント

<Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>

キュー リーダー エージェント

[<Distributor>].<integer>

1 Oracle パブリケーションに対するプッシュ サブスクリプションの場合は、ジョブ名が **「<Publisher>-<PublicationDatabase>」ではなく「<Publisher>-<Publisher>」**になります。

2 Oracle パブリケーションに対するプル サブスクリプションの場合は、ジョブ名が **「<Publisher>-<PublicationDatabase>」ではなく「<Publisher>-<DistributionDatabase>」**になります。

レプリケーションの構成時には、エージェントを実行するアカウントを指定します。しかし、すべてのジョブ ステップはプロキシのセキュリティ コンテキストで実行されます。そのためレプリケーションでは、指定したエージェント アカウントに対して、以下のマッピングが内部的に実行されます。

  • アカウントは、まず Transact-SQLCREATE CREDENTIAL ステートメントを使用して資格情報にマップされます。SQL Server エージェント プロキシは、資格情報を使用して Windows ユーザー アカウントに関する情報を格納します。

  • sp_add_proxy ストアド プロシージャが呼び出され、資格情報を使用してプロキシが作成されます。プロキシの詳細については、「SQL Server エージェント プロキシの作成」を参照してください。

注意注意

この情報は、適切なセキュリティ コンテキストでエージェントを実行する作業についての理解を深めるために提供されています。作成済みの資格情報またはプロキシは通常、直接操作する必要はありません。