レプリケーション セキュリティの推奨事項

適用対象:SQL ServerAzure SQL Managed Instance

レプリケーションでは、単一ドメインのイントラネットから、信頼できないドメイン間およびインターネット経由でデータにアクセスするアプリケーションに及ぶ分散環境でデータを移動します。 これらのさまざまな状況下でレプリケーション接続のセキュリティを確保するためには、推奨事項を理解することが重要です。

次の情報は、すべての環境のレプリケーションに関連します。

  • レプリケーション トポロジ内のコンピューター間の接続を、仮想プライベート ネットワーク (VPN)、トランスポート層セキュリティ (TLS) (旧称 Secure Sockets Layer (SSL))、IPSEC (IP Secrity) などの業界標準の方式を使用して暗号化します。 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。 VPN と TLS を使用したインターネット経由のデータのレプリケーションについては、「インターネット経由のレプリケーションのセキュリティ」をご覧ください。

    TLS 1.2 を使用してレプリケーション トポロジ内のコンピューター間の接続をセキュリティで保護する場合は、各レプリケーション エージェントの 1 パラメーターに 2 または -EncryptionLevel の値を指定します (2の値をお勧めします)。 1の値は暗号化が使用されることを指定しますが、エージェントは TLS/SSL サーバー証明書が信頼された発行者によって署名されていることを確認しません。2の値は、証明書が検証されることを指定します。 Azure SQL Managed Instance では、の値を指定することで、Azure SQL Managed Instances または SQL Server 2025 以降のバージョンからの接続に3されます。 Azure SQL Managed Instance および SQL Server 2025 以降のバージョンでは、の値を指定することで、SQL Server への接続に 4されます。

    エージェントの使用については、次を参照してください。

  • 異なる Windows アカウントで各レプリケーション エージェントを実行し、すべてのレプリケーション エージェント接続に対して Windows 認証を使用する。 アカウントを指定する方法の詳細については、「ID およびアクセス制御 (レプリケーション)」を参照してください。

  • 各エージェントに必要な権限のみを許可する。 詳細については、「 Replication Agent Security Model」の「エージェントに必要な権限」を参照してください。

  • マージ エージェントとディストリビューション エージェントのすべてのアカウントがパブリケーション アクセス リスト (PAL) に含まれているかどうかを確認する。 詳細については、「パブリッシャーのセキュリティ保護」を参照してください。

  • 最小特権の原則に従って、PAL 内のアカウントに、レプリケーション タスクを実行するために必要な権限のみを許可する。 レプリケーションに必要のない固定サーバー ロールにはログインを追加しないでください。

  • すべてのマージ エージェントおよびディストリビューション エージェントによる読み取りアクセスを許可するようにスナップショット共有を構成する。 パラメーター化されたフィルターを使用するパブリケーションのスナップショットの場合は、適切なマージ エージェント アカウントへのアクセスのみを許可するように各フォルダーを設定してください。

  • スナップショット エージェントによる書き込みアクセスを許可するようにスナップショット共有を構成する。

  • プル サブスクリプションを使用する場合は、スナップショット フォルダーにローカル パスではなく、ネットワーク共有を使用する。

レプリケーション トポロジに、同じドメイン内に存在しないコンピューター、または相互に信頼関係を持たないドメインに存在するコンピューターが含まれている場合、エージェントが確立する接続には Windows 認証または SQL Server 認証を使用できます (ドメインの詳細については、Windows のマニュアルを参照してください)。 セキュリティの推奨方法としては、Windows 認証の使用をお勧めします。

  • Windows 認証を使用するには

    • 適切なノードで、各エージェントのドメイン アカウントではない、ローカルの Windows アカウントを追加します (各ノードでは同じ名前とパスワードを使用します)。 たとえば、プッシュ サブスクリプションのディストリビューション エージェントをディストリビューターで実行し、ディストリビューターとサブスクライバーに接続しているとします。 この場合、ディストリビューション エージェントの Windows アカウントを、ディストリビューターおよびサブスクライバーに追加する必要があります。

    • 指定されたエージェント (たとえば、サブスクリプションのディストリビューション エージェント) が、各コンピューターで同じアカウントを使用して実行されているかどうかを確認します。

  • SQL Server 認証を使用するには:

    • 適切なノードで、各エージェントの SQL Server アカウントを追加します (各ノードで同じアカウント名とパスワードを使用します)。 たとえば、プッシュ サブスクリプションのディストリビューション エージェントをディストリビューターで実行し、ディストリビューターとサブスクライバーに接続しているとします。 この場合、ディストリビューション エージェントの SQL Server アカウントを、ディストリビューターおよびサブスクライバーに追加する必要があります。

    • 指定されたエージェント (たとえば、サブスクリプションのディストリビューション エージェント) が、各コンピューターで同じアカウントを使用して接続しているかどうかを確認します。

    • SQL Server 認証が必要な状況では、多くの場合、UNC スナップショット共有へのアクセスは実行できません (たとえば、アクセスがファイアウォールによってブロックされている可能性があります)。 この場合は、ファイル転送プロトコル (FTP) を使用して、スナップショットをサブスクライバーに転送できます。 詳細については、「FTP によるスナップショットの転送」を参照してください。

データベース マスター キーを使用してセキュリティ体制を強化する

注

このセクションの手順は、現在、SQL Server 2022 CU18 以降、および SQL Server 2019 CU31 以降に適用できます。 これらの手順は、Azure SQL Managed Instance には適用されません。

レプリケーションに SQL Server 認証を使用する場合、レプリケーションの構成時に指定したシークレットは、SQL Server 内 (特にディストリビューション データベースとプル サブスクリプションの場合はサブスクライバー データベース) に格納されます。

レプリケーションの 構成を 開始 する前に、レプリケーションのセキュリティ体制を強化するには、

  • ディストリビューターをホストするサーバーのディストリビューション データベースにデータベース マスター キー (DMK) を作成します。
  • プル サブスクリプションの場合は、サブスクライバー データベースに DMK も作成します。

DMK の前にレプリケーションが作成された場合は、まず DMK を作成してから、レプリケーション ジョブのパスワードを更新してレプリケーション シークレットを更新します。 同じパスワードでジョブを更新することも、新しいパスワードを使用することもできます。

レプリケーション シークレットを更新するには、次の関連するストアド プロシージャのいずれかを使用して、レプリケーション ジョブのパスワードを更新します。

DMK を使用せずにトランザクション レプリケーションを構成すると、SQL Server の警告 14130 が発生する可能性があります。

  • Azure SQL Managed Instance
  • SQL Server 2022 CU18 以降
  • SQL Server 2019 CU31 以降