高可用性(MS SQL Serverの場合)

(この機能は、Enterprise Editionでのみサポートされています。また、本手順書は、ビルド6400以降を対象としています。)

ミッション クリティカルな環境において、パスワードへの継続的なアクセスを提供するということは必要不可欠な要素です。PMPの高可用性の機能により、サーバー障害などの不慮の事態においてもパスワードにアクセスできる環境を提供することができます。

高可用性の仕組み

  • リダンダントPMPサーバーとデータベースインスタンスがあります。
  • 通常使用されるインスタンス(プライマリ)は、ユーザーに対して読み取り/書き込みアクセスを提供します。すべてのユーザーはプライマリに接続します。
  • もうひとつのインスタンスは、セカンダリ として機能します。
  • プライマリとセカンダリのデータは常に相互同期されています。PMPはSQL サーバーのデータベース複製機能を使用してデータの同期を行います。データのレプリケーションは、安全な、暗号化されたチャネルを通じて行われます。
  • プライマリ サーバーがダウンすると、セカンダリ サーバーはユーザーへの "読み取り/書き込み" アクセスを提供します(パスワード リセットを除く)。これは、プライマリ サーバーが完全復旧し、サービスを再開するまで継続されます。プライマリ サーバーのダウン中に行われたデータベースへの変更は、プライマリとセカンダリの接続が回復すると自動的に同期されます。
  • ユーザーはいつでもプライマリ/セカンダリに接続することができます。

高可用性のアーキテクチャ

シナリオ例;

シナリオ 1 - 地理的に別の場所に配置されたプライマリとセカンダリを繋ぐWANリンク上で不具合が発生した場合

プライマリ サーバーが場所"A"に配置され、セカンダリ サーバーが場所"B"に配置されているとします。通常は、"A"、"B"、いずれのユーザーもプライマリ サーバーにアクセスしてパスワード管理操作を行います。プライマリとセカンダリのデータは常に相互同期されています。ここで、場所"A"と"B"の間を繋ぐネットワーク接続が失われたと仮定します。この場合、場所"A"にいるユーザーはプライマリ サーバーへの接続を継続し、すべての操作を実行し続けることができます。場所"B"にいるユーザーは、セカンダリ サーバーにアクセスすることで、パスワード管理操作(読み取り/書き込み)を継続することができます(パスワード リセットを除く)。場所"A"と"B"を繋ぐネットワーク接続が回復すると、プライマリ サーバーとセカンダリ サーバーのデータは再び同期されます。

シナリオ 2 - 同一ネットワーク上にプライマリとセカンダリが配置された環境で、プライマリがダウンした場合

プライマリサーバーがダウンすると、場所"A"と"B"のユーザーは、応急的にセカンダリサーバーへアクセスし、パスワード管理操作を継続します(パスワード リセットを除く)。

監査証跡への影響について

上記の高可用性のシナリオでは、通常通りに監査証跡が記録されます。シナリオ1では、2つの場所を繋ぐネットワークが有効である場合、監査証跡はプライマリに記録されます。ユーザーがセカンダリに接続すると、"パスワード取得"、"ログイン"、"ログアウト"などの操作が記録されます。2つの場所のネットワーク接続が回復すると、監査データが同期されます。シナリオ2では、プライマリがクラッシュした場合、ユーザーによるセカンダリ上での"パスワード取得"、"ログイン"、"ログアウト"などの操作が記録されます。他の監査記録はスタンバイに同期されます。

高可用性の設定方法

ステップ1:

  • プライマリ サーバーが稼働している場合、停止します。

ステップ2:

  • PMPプライマリ サーバーで使用するMS SQL サーバーは、マスターデータベースとして動作します。スレーブデータベースとして、別のMS SQL サーバーインスタンスを指定します。次に、スレーブデータベースのMS SQL サーバーからプライマリ サーバーへSSL証明書をインポートします。このステップを実行する前に、MS SQL サーバーのスレーブデータベースにSSLの設定がされていることを確認してください。SSLを有効にする方法は、 こちらのドキュメントのステップ 1 から 3 までを実行します

スレーブSQL サーバーからPMPプライマリにSSL証明書をインポートするには;

  • [Password Manager Pro Primary Installation Folder]/binディレクトリを開き、次のコマンドを実行します:importCert.bat[slavecert.cer]

ステップ3:

  • [Password Manager Pro Primary Installation Folder]/confディレクトリに移動し、[master_key.key]ファイルをテキストエディタで開き、SQLのマスター鍵をコピーします。コピーしたマスター鍵は次のステップで使用します。(SQLサーバーの統合の際にキーを別の場所に移動している場合は、移動先からキーを取得します。)

ステップ4:

マスターデータベースとスレーブデータベースの間でMS SQLサーバーのレプリケーションを設定します。

  • [Password Manager Pro Primary Installation Folder]/binディレクトリを開き、次のコマンドを実行します:ConfigureReplication.bat(Windows)、もしくはsh ConfigureReplication.sh(Linux)
  • マスターデータベースとスレーブデータベースの情報を入力します。

マスターデータベースの情報:

    1. マスターのホスト名:MS SQL サーバーがインストールされているマシンの名前またはIPアドレス。
    2. インスタンス名:PMPで使用するため、SQLサーバーのインスタンス名を入力します。インスタンス名が入力されないと、PMPは、ポート番号1433で既定のインスタンスとの接続を試みます。
    3. PMPとSQLサーバー間の通信にはSSLを使用するため、PMP専用のデータベース インスタンスを特定のポート番号で動作させることを推奨します。1433以外のポート番号を使用したい場合、上記ホスト名のパラメーターにおいて、次のように入力してください。[hostname]:[port]

    4. ユーザー名とパスワード:PMPがデータベースに接続するために使用するユーザー名/パスワードを入力します。(SQL サーバーのsysadminの権限を持ったユーザーを入力します。このユーザー名/パスワードは、PMPのどこにも保存されません。このユーザー名/パスワードは、SQLマスターサーバーとスレーブサーバーのレプリケーションの設定時にのみ使用します。)Windowsからデータベースに接続する場合、自分のWindowsログイン資格情報を使用してデータベースに接続するオプションを選択できます。この場合、ユーザー名は [ドメイン名]\[ユーザー名] の形式で記述します。
    5. マスターデータベース名:PMPデータベースの名称。
    6. マスター鍵:上記ステップ 3 でコピーしたマスター鍵をペーストします。

スレーブデータベースの情報:

    1. スレーブのホスト名:MS SQLサーバーがインストールされているマシンの名前またはIPアドレス。
    2. インスタンス名:PMPで使用するため、SQLサーバーのインスタンス名を入力します。インスタンス名が入力されないと、PMPは、ポート番号1433で既定のインスタンスとの接続を試みます。
    3. PMPとSQL サーバー間の通信にはSSLを使用するため、PMP専用のデータベース インスタンスを、特定のポート番号で動作させることを推奨します。1433以外のポート番号を使用したい場合、上記ホスト名のパラメーターにおいて、次のように入力してください。[hostname]:[port]

    4. ユーザー名とパスワード:PMPがデータベースに接続するために、ユーザー名とパスワードを入力してください。(SQL サーバーのsysadminの権限を持ったユーザーを入力します。このユーザー名/パスワードは、PMPのどこにも保存されません。このユーザー名/パスワードは、SQLマスターサーバーとスレーブサーバーのレプリケーションの設定時にのみ使用します。)Windowsからデータベースに接続する場合は、自分のWindowsログイン資格情報を使用してデータベースに接続することもできます。この場合、ユーザー名は [ドメイン名]\[ユーザー名] の形式で記述します。
    5. スレーブデータベース名:PMPデータベースの名称。既定の値は "pmstandby" です。(プライマリ サーバーに[ChangeDB.bat]を設定する際に[暗号化キー]オプションに[カスタム]を選択した場合、スレーブデータベース用の新規データベース、マスター鍵、そして証明書の作成を行い、AES-256暗号化を使用して対称キーを作成する必要があります。そして、ここにスレーブデータベースの名前を入力します。)
    6. [テスト&設定]をクリックし、レプリケーションを完了します。この処理には 30 分以上かかる場合があります。

ステップ5:

PMPのプライマリ サーバーを起動します。

ステップ6:

別のマシンに、セカンダリ サーバーとしてPMPの新規インスタンスを インストール します。セカンダリ サーバーとしてPMPをインストールするには、インストール処理中にオプション [このサーバーを高可用性のセカンダリ サーバーとして設定する(読み取り専用)]を選択してください。インストール後には、PMPセカンダリサーバーを起動させないでください。

ステップ7:

PMPセカンダリサーバーのインストール後、バックエンド データベースとしてMS SQL サーバーを使用する設定を行います:

ChangeDB.batを実行します。

セカンダリ サーバーの[Password Manager Pro Standby Installation Folder]/bin/ChangeDB.bat(Windows)、もしくは[Password Manager Pro Standby Installation Folder]/bin/sh ChangeDB.sh(Linux)を使用して、SQL サーバーの情報をPMPに設定します。

SQLサーバーを選択し、他の値を入力します。

    1. スレーブデータベースのホスト名:MS SQLサーバーがインストールされているマシンの名前、またはIPアドレス。
    2. ポート:PMPがデータベースへの接続を行う際に使用するポート番号。既定のポート番号は 1433 です。
    3. データベース名:スレーブデータベースの名称。上記ステップ 4 で使用したスレーブデータベース名と同じものを入力します。
    4. 認証:SQL サーバーに接続する方法を選択します。WindowsからSQL サーバーへ接続する場合、Windowsのシングル サインオン機能を選択し、PMPサービスを実行しているサービス アカウントの資格情報を使用してSQL サーバーに接続することが可能です。この場合、オプション[Windows]を選択します。そうでない場合、オプション[SQL]を選択します。認証に使用するユーザー名とパスワードがどこにも保存されないため、[Windows]オプションの利用を推奨します。
    5. ユーザー名とパスワード:[SQL]オプションを選択した場合、PMPがデータベースに接続するために使用するユーザー名とパスワードを入力します。このユーザー名とパスワードの情報は、PMPに保存されます。 そのため、ホストの安全性には十分に注意してください。Windowsからデータベースに接続する場合は、自分のWindowsログイン資格情報を使用してデータベースに接続することもできます。この場合、ユーザー名は [ドメイン名]\[ユーザー名] の形式で記述します。
    6. 暗号化鍵:データをSQL サーバーに暗号化して保存するために使用する鍵です。"既定" のままにしておくと、PMPが鍵を生成します。マスターデータベースをカスタム鍵で設定している場合、ここでも[カスタム]を選択します。
    7. [カスタム]オプションを選択した場合:上記の手順を実行後、マスターデータベースに入力した証明書名と対称鍵名を入力してください。
    8. [テスト]をクリックし、[保存]をクリックします。

ステップ8:

PMPライセンス/カスタムアイコン/リブランディング設定をプライマリからセカンダリに複製するには、 プライマリ サーバーの /replication フォルダを開き、 SQLServerHAPack.zipをコピーします。コピーしたzipファイルをセカンダリ サーバーの [PMP_Secondary_Installation_Folder]で解凍します。ファイルの解凍先は [PMP_Secondary_Intallation_Folder] 直下にするよう、ご注意ください。 既存のファイルが上書きされます。 [PMP_Secondary_Installation_Folder]/SQLServerHAPackディレクトリでは解凍しないでください。

ステップ9:

セカンダリサーバーで SQLServerHAPack.zip を解凍した後、[PMP_Secondary_Installation_Folder]/confフォルダを開き、manage_key.confをテキストエディタで開きます。そして、pmp_key.key (AES 256ビット 暗号化されたマスター鍵 )の場所を指定します。PMPセカンダリ サーバーを起動します。PMPを起動させるためには、PMPからアクセス可能な場所に配置された pmp_key.key ファイルのフルパス情報が必要です。起動に成功すると、マスター鍵はもう必要ありませんので、鍵を格納したデバイスを切り離すことができます。

高可用性セットアップの検証

上記手順の完了後、高可用性の設定が正しく動作しているかどうかを確認するには、プライマリ サーバーの[管理] >> [一般] >> [高可用性]を選択します。正しくセットアップされている場合、次のように表示されます;

高可用性の状態: 活動

上記は、高可用性が正しく動作していることを示します。 状態が "失敗" と表示されている場合、高可用性の設定は失敗していることを示します。