データベース ミラーリング エンドポイントで着信接続に証明書を使用できるようにする (Transact-SQL)
このトピックでは、データベース ミラーリングの着信接続を認証する際に証明書を使用するようにサーバー インスタンスを構成する手順について説明します。 着信接続を設定する前に、各サーバー インスタンスで発信接続を構成する必要があります。 詳細については、「データベース ミラーリング エンドポイントで発信接続に証明書を使用できるようにする (Transact-SQL)」を参照します。
着信接続を構成する処理には、次の一般的な手順が含まれます。
他のシステムへのログインを作成します。
そのログインのユーザー名を作成します。
他のサーバー インスタンスのミラーリング エンドポイント用の証明書を入手します。
手順 2. で作成したユーザーに証明書を関連付けます。
ミラーリング エンドポイント用のログインに CONNECT 権限を許可します。
ミラーリング監視サーバーがある場合は、このサーバーでも着信接続の構成を行う必要があります。 この場合、どちらのパートナーのミラーリング監視サーバーでも、相手のログイン、ユーザー、証明書が必要です。
次の手順では、上記の手順について詳しく説明します。 各手順では、HOST_A という名前のシステムでサーバー インスタンスを構成するための例を示します。 その後に続く「例」では、HOST_B という名前のシステム上の別のサーバー インスタンスに対する同じ手順について説明します。
ミラーリングの着信接続用に (HOST_A 上で) サーバー インスタンスを構成するには
他のシステムへのログインを作成します。
次の例では、システム HOST_B のログインを HOST_A のサーバー インスタンスの master データベースに作成します。この例では、このログインに
HOST_B_login
という名前が付けられています。 サンプルのパスワードは、独自のパスワードに置き換えてください。USE master; CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#'; GO
詳細については、「CREATE LOGIN (Transact-SQL)」を参照してください。
このサーバー インスタンスのログインを表示するには、次の Transact-SQL ステートメントを使用できます。
SELECT * FROM sys.server_principals;
詳細については、「sys.server_principals (Transact-SQL)」を参照してください。
そのログインのユーザー名を作成します。
次の例では、上記の手順で作成したログイン用のユーザー
HOST_B_user
を作成します。USE master; CREATE USER HOST_B_user FOR LOGIN HOST_B_login; GO
詳細については、「CREATE USER (Transact-SQL)」を参照してください。
このサーバー インスタンスのユーザーを表示するには、次の Transact-SQL ステートメントを使用できます。
SELECT * FROM sys.sysusers;
詳細については、「sys.sysusers (Transact-SQL)」を参照してください。
他のサーバー インスタンスのミラーリング エンドポイント用の証明書を入手します。
発信接続の構成時にリモート サーバー インスタンスのミラーリング エンドポイント用の証明書のコピーを入手していない場合は、これを入手します。 これを行うには、「データベース ミラーリング エンドポイントで発信接続に証明書を使用できるようにする (Transact-SQL)」の説明に従って、そのサーバー インスタンスの証明書をバックアップします。 証明書を別のシステムにコピーする場合は、セキュリティで保護されたコピー方法を使用してください。 すべての証明書をセキュリティで保護された状態で保管するよう十分に注意してください。
詳細については、「BACKUP CERTIFICATE (Transact-SQL)」を参照してください。
手順 2. で作成したユーザーに証明書を関連付けます。
次の例では、HOST_B の証明書と HOST_B のユーザーを HOST_A で関連付けています。
USE master; CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'C:\HOST_B_cert.cer' GO
詳細については、「CREATE CERTIFICATE (Transact-SQL)」を参照してください。
このサーバー インスタンスの証明書を表示するには、次の Transact-SQL ステートメントを使用します。
SELECT * FROM sys.certificates;
詳細については、「sys.certificates (Transact-SQL)」を参照してください。
リモート ミラーリング エンドポイント用のログインに CONNECT 権限を許可します。
たとえば、HOST_A に対する権限を HOST_B 上のリモート サーバー インスタンスに許可し、このローカル ログインに接続 (つまり、
HOST_B_login
に接続) するには、次の Transact-SQL ステートメントを使用します。USE master; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login]; GO
詳細については、「GRANT (エンドポイントの権限の許可) (Transact-SQL)」を参照してください。
これで、HOST_A にログインするための HOST_B の証明書認証の設定が完了します。
ここで、HOST_B で HOST_A 用の着信接続を構成するために同じ手順を実行する必要があります。 この手順については、次の「例」のサンプル コードで着信接続の設定部分を参照してください。
例
次の例では、HOST_B の着信接続を構成する方法について示します。
注意
この例では、「データベース ミラーリング エンドポイントで発信接続に証明書を使用できるようにする (Transact-SQL)」のコード スニペットによって作成される HOST_A 証明書を含む証明書ファイルを使用します。
USE master;
--On HOST_B, create a login for HOST_A.
CREATE LOGIN HOST_A_login WITH PASSWORD = 'AStrongPassword!@#';
GO
--Create a user, HOST_A_user, for that login.
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
GO
--Obtain HOST_A certificate. (See the note
-- preceding this example.)
--Asscociate this certificate with the user, HOST_A_user.
CREATE CERTIFICATE HOST_A_cert
AUTHORIZATION HOST_A_user
FROM FILE = 'C:\HOST_A_cert.cer';
GO
--Grant CONNECT permission for the server instance on HOST_A.
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO HOST_A_login;
GO
自動フェールオーバーを伴う高い安全性モードで実行する場合、発信接続と着信接続の両方に対応するようミラーリング監視サーバーを構成する手順を繰り返す必要があります。
Transact-SQL の例を含む、ミラー データベースを作成する方法の詳細については、「ミラーリングのためのミラー データベースの準備 (SQL Server)」を参照してください。
高パフォーマンス モード セッションを確立する Transact-SQL 例については、「証明書を使用したデータベース ミラーリングの設定の例 (Transact-SQL)」を参照してください。
.NET Framework のセキュリティ
証明書を別のシステムにコピーする場合は、セキュリティで保護されたコピー方法を使用してください。 すべての証明書をセキュリティで保護された状態で保管するよう十分に注意してください。
参照
データベース ミラーリングと AlwaysOn 可用性グループのトランスポート セキュリティ (SQL Server)
GRANT (エンドポイントの権限の許可) (Transact-SQL)
暗号化されたミラー データベースの設定
データベース ミラーリング エンドポイント (SQL Server)
データベース ミラーリング構成のトラブルシューティング (SQL Server)