例:証明書を使用したデータベース ミラーリングの設定 (Transact-SQL)
適用対象: SQL Server
この例では、証明書ベースの認証を使用してデータベース ミラーリング セッションを作成するために必要なすべての段階について説明します。 このトピックの例では、Transact-SQL を使用します。 ネットワークがセキュリティで保護されていることを保証できる場合を除いて、データベース ミラーリング接続に対して暗号化を使用することをお勧めします。
証明書を別のシステムにコピーする場合は、セキュリティで保護されたコピー方法を使用してください。 すべての証明書をセキュリティで保護された状態で保管するよう十分に注意してください。
例
以下の例は、HOST_A に存在するパートナーで実行する必要のある処理を示しています。 この例では、2 つのパートナーが、3 つのコンピューター システムの既定のサーバー インスタンスです。 2 つのサーバー インスタンスは、信頼されていない Windows ドメインで実行されているため、証明書ベースの認証が必要です。
初期プリンシパル ロールは HOST_A によって取得され、ミラー ロールは HOST_B によって取得されます。
証明書を使用したデータベース ミラーリングの設定には、一般的な段階が 4 つあり、そのうちの 3 つの段階 (1、2、および 4) をこの例に示します。 これらの段階は次のとおりです。
-
この例では次の手順を示します。
発信接続用の Host_A の構成。
発信接続用の Host_B の構成。
データベース ミラーリングの設定のこの段階の詳細については、「データベース ミラーリング エンドポイントで発信接続に証明書を使用できるようにする (Transact-SQL)」を使用します。
-
この例では次の手順を示します。
着信接続用の Host_A の構成。
着信接続用の Host_B の構成。
データベース ミラーリングの設定のこの段階の詳細については、「データベース ミラーリング エンドポイントで着信接続に証明書を使用できるようにする (Transact-SQL)」を使用します。
ミラー データベースの作成
ミラー データベースを作成する方法の詳細については、「ミラーリングのためのミラー データベースの準備 (SQL Server)」を参照してください。
発信接続の構成
発信接続用に Host_A を構成するには
master データベースで、必要な場合はデータベース マスター キーを作成します。
USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>'; GO
このサーバー インスタンスに対する証明書を作成します。
USE master; CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate'; GO
作成した証明書を使用して、サーバー インスタンスのミラーリング エンドポイントを作成します。
CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=7024 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL ); GO
HOST_A の証明書をバックアップし、他のシステム HOST_B にコピーします。
BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer'; GO
安全なコピー方法を使用して、C:\HOST_A_cert.cer を HOST_B にコピーします。
発信接続用に Host_B を構成するには
master データベースで、必要な場合はデータベース マスター キーを作成します。
USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>'; GO
HOST_B サーバー インスタンスで証明書を作成します。
CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate for database mirroring'; GO
HOST_B のサーバー インスタンスに対するミラーリング エンドポイントを作成します。
CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=7024 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL ); GO
HOST_B の証明書をバックアップします。
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer'; GO
安全なコピー方法を使用して、C:\HOST_B_cert.cer を HOST_A にコピーします。
詳細については、「データベース ミラーリング エンドポイントで発信接続に証明書を使用できるようにする (Transact-SQL)」を参照します。
着信接続の構成
着信接続用に Host_A を構成するには
HOST_B に対するログインを HOST_A に作成します。
USE master; CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#'; GO
そのログインのユーザー名を作成します。
CREATE USER HOST_B_user FOR LOGIN HOST_B_login; GO
証明書をユーザーと関連付けます。
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'C:\HOST_B_cert.cer' GO
リモート ミラーリング エンドポイント用のログインに CONNECT 権限を許可します。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login]; GO
着信接続用に Host_B を構成するには
HOST_A に対するログインを HOST_B に作成します。
USE master; CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2'; GO
そのログインのユーザー名を作成します。
CREATE USER HOST_A_user FOR LOGIN HOST_A_login; GO
証明書をユーザーと関連付けます。
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'C:\HOST_A_cert.cer' GO
リモート ミラーリング エンドポイント用のログインに CONNECT 権限を許可します。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login]; GO
重要
自動フェールオーバーを伴う高い安全性モードで実行する場合、発信接続と着信接続の両方で、ミラーリング監視サーバーを構成する同じ手順を繰り返す必要があります。 ミラーリング監視サーバーを利用する着信接続を設定する場合は、両方のパートナーでミラーリング監視サーバー用にログインとユーザーを設定し、ミラーリング監視サーバーで両方のパートナー用にログインとユーザーを設定する必要があります。
詳細については、「データベース ミラーリング エンドポイントで着信接続に証明書を使用できるようにする (Transact-SQL)」を参照してください。
ミラー データベースの作成
ミラー データベースを作成する方法の詳細については、「ミラーリングのためのミラー データベースの準備 (SQL Server)」を参照してください。
ミラーリング パートナーの構成
HOST_B のミラー サーバー インスタンスで、HOST_A のサーバー インスタンスをパートナー (最初のプリンシパル サーバー インスタンス) として設定します。
TCP://HOST_A.Mydomain.Corp.Adventure-Works``.com:7024
の部分を有効なネットワーク アドレスに置き換えます。 詳細については、「サーバー ネットワーク アドレスの指定 (データベース ミラーリング)」を参照してください。--At HOST_B, set server instance on HOST_A as partner (principal server): ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024'; GO
HOST_A のプリンシパル サーバー インスタンスで、HOST_B のサーバー インスタンスをパートナー (最初のミラー サーバー インスタンス) として設定します。
TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024
の部分を有効なネットワーク アドレスに置き換えます。--At HOST_A, set server instance on HOST_B as partner (mirror server). ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024'; GO
この例では、セッションが高パフォーマンス モードで実行されると仮定します。 このセッションの実行モードを高パフォーマンス モードに構成するには、HOST_A のプリンシパル サーバー インスタンスでトランザクションの安全性を OFF に設定します。
--Change to high-performance mode by turning off transaction safety. ALTER DATABASE AdventureWorks SET PARTNER SAFETY OFF GO
注意
自動フェールオーバーを伴う高い安全性モードで実行する場合は、トランザクションの安全性を FULL (既定の設定) のままにし、2 番目の SET PARTNER 'partner_server' ステートメントの実行後、できる限り早い段階でミラーリング監視サーバーを追加します。 ただし、まずミラーリング監視サーバーが発信接続と着信接続用に構成されている必要があります。
Related Tasks
参照
データベース ミラーリングと Always On 可用性グループのトランスポート セキュリティ (SQL Server)
サーバー ネットワーク アドレスの指定 (データベース ミラーリング)
データベース ミラーリング エンドポイント (SQL Server)
データベース ミラーリング エンドポイントでの証明書の使用 (Transact-SQL)
ALTER DATABASE (Transact-SQL)
SQL Server データベース エンジンと Azure SQL Database のセキュリティ センター