データベース ミラーリングで発信接続に証明書を使用できるようにする方法 (Transact-SQL)
このトピックでは、データベース ミラーリングの発信接続を認証する際に証明書を使用するようにサーバー インスタンスを構成する手順について説明します。着信接続を設定する前に、発信接続を構成する必要があります。
メモ : |
---|
1 つのサーバー インスタンス上のすべてのミラーリング接続では、1 つのデータベース ミラーリング エンドポイントが使用されます。そのため、エンドポイントを作成する際にサーバー インスタンスの認証方法を指定する必要があります。 |
発信接続を構成する処理には、次の一般的な手順が含まれます。
- master データベースで、データベース マスタ キーを作成します。
- master データベースで、暗号化された証明書をサーバー インスタンスに作成します。
- 作成した証明書を使用して、サーバー インスタンスのエンドポイントを作成します。
- 証明書をファイルにバックアップし、そのファイルを安全に他のシステムにコピーします。
パートナーおよびミラーリング監視サーバーがある場合は、それぞれで上記の手順を完了する必要があります。
次の手順では、上記の手順について詳しく説明します。各手順では、HOST_A という名前のシステムでサーバー インスタンスを構成するための例を示します。その後に続く「例」では、HOST_B という名前のシステム上の別のサーバー インスタンスに対する同じ手順について説明します。
手順
ミラーリングの発信接続用に (HOST_A 上で) サーバー インスタンスを構成するには
master データベースで、データベース マスタ キーが存在しない場合は作成します。データベースの既存のキーを表示するには、sys.symmetric_keys カタログ ビューを使用します。
データベース マスタ キーを作成するには、次の Transact-SQL コマンドを使用します。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>'; GO
複雑で一意なパスワードを使用し、作成したキーを安全な場所に記録します。
詳細については、「CREATE MASTER KEY (Transact-SQL)」を参照してください。
master データベースで、データベース ミラーリングの発信接続に使用する、暗号化された証明書をサーバー インスタンスに作成します。
たとえば、HOST_A システム用の証明書を作成するには、次のステートメントを使用します。
USE master; CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate for database mirroring'; GO
詳細については、「CREATE CERTIFICATE (Transact-SQL)」を参照してください。
master データベースの証明書を表示するには、次の Transact-SQL ステートメントを使用できます。
USE master; SELECT * FROM sys.certificates;
詳細については、「sys.certificates (Transact-SQL)」を参照してください。
各サーバー インスタンスにデータベース ミラーリング エンドポイントがあることを確認します。
サーバー インスタンスにデータベース ミラーリング エンドポイントが既に存在する場合、サーバー インスタンス上で確立するその他のセッションにそのエンドポイントを再利用する必要があります。データベース ミラーリング エンドポイントがサーバー インスタンスに存在するかどうかを確認し、その構成を表示するには、次のステートメントを使用します。
SELECT name, role_desc, state_desc, connection_auth_desc, encryption_algorithm_desc FROM sys.database_mirroring_endpoints;
エンドポイントが存在しない場合、発信接続にこの証明書を使用し、他のシステムでの検証にその証明書の資格情報を使用するエンドポイントを作成します。これは、サーバー全体のエンドポイントであり、サーバー インスタンスが参加するすべてのミラーリング セッションで使用されます。
たとえば、HOST_A 上のサーバー インスタンスの例にミラーリング エンドポイントを作成するには、次のステートメントを使用します。
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
詳細については、「CREATE ENDPOINT (Transact-SQL)」を参照してください。
証明書をバックアップし、他のシステムにコピーします。この操作は、他のシステムで着信接続を構成するために必要です。
BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer'; GO
詳細については、「BACKUP CERTIFICATE (Transact-SQL)」を参照してください。
任意の安全な方法を使用し、この証明書をコピーします。すべての証明書について、安全性が維持されるよう十分に注意してください。
上記の手順のコード例では、HOST_A の発信接続を構成します。
ここで、HOST_B の着信接続を構成するために同じ手順を実行する必要があります。この手順については、次の「例」で説明します。
使用例
次の例では、発信接続用に HOST_B を構成する方法について示します。
USE master;
--Create the database Master Key, if needed.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';
GO
-- Make a certifcate on HOST_B server instance.
CREATE CERTIFICATE HOST_B_cert
WITH SUBJECT = 'HOST_B certificate for database mirroring';
GO
--Create a mirroring endpoint for the server instance on 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
--Backup HOST_B certificate.
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';
GO
--Using any secure copy method, copy C:\HOST_B_cert.cer to HOST_A.
任意の安全な方法を使用し、証明書を他のシステムにコピーします。すべての証明書について、安全性が維持されるよう十分に注意してください。
重要 : |
---|
発信接続を設定した後、各サーバー インスタンスの着信接続を他のサーバー インスタンス用に構成する必要があります。詳細については、「データベース ミラーリングで着信接続に証明書を使用できるようにする方法 (Transact-SQL)」を参照してください。 |
Transact-SQL の例を含む、ミラー データベースの作成については、「ミラーリング用のミラー データベースを準備する方法 (Transact-SQL)」を参照してください。
高パフォーマンス モードのセッションを確立する Transact-SQL の例については、「証明書を使用したデータベース ミラーリングの設定の例 (Transact-SQL)」を参照してください。
セキュリティ
ネットワークの安全性を保証できる場合を除いて、データベース ミラーリング接続に対して暗号化を使用することをお勧めします。
証明書を別のシステムにコピーする場合は、安全なコピー方法を使用してください。
参照
処理手順
ミラーリング用のミラー データベースを準備する方法 (Transact-SQL)
概念
証明書を使用したデータベース ミラーリングの設定の例 (Transact-SQL)
データベース ミラーリング エンドポイント
データベース ミラーリングの設定のトラブルシューティング
暗号化されたミラー データベースの設定
その他の技術情報
暗号化アルゴリズムの選択
ALTER ENDPOINT (Transact-SQL)