MS SQL Serverをバックエンドデータベースとして構成

PAM360には、デフォルトのバックエンドデータベースとしてPostgreSQLがバンドルされています。ただし、PAM360は、MS SQL(スタンドアロンまたはクラスタ)、Azure SQL、Azure Postgresなど、他のデータベースシステムと連携するよう柔軟に構成できます。このドキュメントでは、PAM360インストール環境のバックエンドデータベースとしてMS SQLをセットアップする方法について詳しく説明し、導入環境でのシームレスな移行と最適なパフォーマンスを確保します。

メモ:

専用サービスアカウントを使ってPAM360サービスを実行することを推奨します。サービスアカウントがPAM360 Serverでローカル管理者グループの一部になっていることを確認します。PAM360サービスおよびDB変更プロセスに使用するサービスアカウントに以下の許可がある必要があります:

  • SQLサーバーで、必要なアカウントを選択します。Server Rolesで、[dbcreator]権限を入力します。
  • データベースが作成されたら、アカウントを選択し、[dbowner]権限を入力します。

メモ:

高いセキュリティレベルを確保するため、PAM360はSQLサーバーへの接続をSSL経由でのみ行うように構成されています。

  1. SSL証明書の作成とWindows証明書ストアでのインストール
  2. SSL証明書のPAM360へのインポート
  3. SSL暗号化のSQL Serverでの有効化
  4. ChangeDB.batのPAM360での実行
  5. トラブルシュートのヒント

1.SSL証明書の作成とWindows証明書ストアでのインストール
(SQL Serverが稼働しているマシン上)

PAM360 を SQL Serverに接続する前に、SQL Server で SSL 暗号化を有効にする必要があります。そのためには、SSL証明書を作成し、認証局(CA)に署名してもらうか、自分で署名する必要があります。

1.1 証明書の生成と第三者認証局による署名

CA署名済みのSSL証明書をお持ちの場合は、手順4から証明書のインストールに直接進んでください。それ以外の場合は、以下の手順1~3に従って、新しいCA署名付き証明書を生成してインストールしてください:

  1. 初めに、opensslを使って秘密鍵を生成します。端末で以下のコマンドを実行してください:
    openssl genrsa -des3 -out server.key 2048
    このコマンドは2048ビットのRSA秘密鍵を生成し、パスフレーズで保護された状態でserver.keyに保存します。
  2. 秘密鍵を使用して証明書署名要求(CSR)を作成します。この要求は、署名のために認証局(CA)に送信されます。次のコマンドを実行してください:
    openssl req -new -key server.key -out server.csr
    このプロセス中に、キーのPassphraseを入力し、Common Name、Host Name、またはIP Addressなどの情報を提供するよう求められます。ここで、Common NameはSQLサーバーのFully Qualified Domain Name (FQDN)である必要があります。
  3. 生成されたCSR(server.csr)を、VeriSign、Thawte、RapidSSLなどの第三者認証局に送信して署名してもらいます。CSRの提出方法および署名プロセスの完了方法については、各認証局のドキュメントを参照してください。このサービスは通常有料です。
    数日後には、署名済みのSSL証明書と認証局のルート証明書が .cer ファイルとして届きます。
  4. MMCコンソールを使用して、SQLサーバーにサーバー証明書をインストールします:
    1. [Start]をクリックし、[Run]を選択します。「Run」ダイアログボックスに「MMC」と入力し、Enterキーを押します。これにより、Microsoft Management Console (MMC) が開きます。
    2. Consoleメニューから「Add/Remove Snap-in」を選択します。
    3. 「Add」をクリックし、次に「Certificates」を選択して、もう一度「Add」をクリックします。
    4. プロンプトが表示されたら、Computer Accountの証明書の管理を選択してください。
    5. 「Manage User Certificates (Local Computer)」 >> 「Personal」 >> 「Certificates」に移動します。
    6. 「Certificates」を右クリックし、「All Tasks」を選択してから、「Import」をクリックします
    7. 署名済みのサーバー証明書の保存場所をBrowseし、証明書を選択してインポート処理を完了してください。
      install-third-party
  5. 以下の手順に従って、PAM360にCAルート証明書をインストールしてください:
    1. CAのルート証明書を <PAM360_インストールディレクトリ>\bin ディレクトリにコピーしてください。
    2. <PAM360_インストールディレクトリ>\bin ディレクトリから、以下のコマンドを実行してください:
      importCert.bat <Absolute-Path-of-the-Certificate>
      <Absolute-Path-of-the-Certificate> を、コピーしたルート証明書ファイルの実際のパスに置き換えてください。このコマンドは、ルート証明書をPAM360証明書ストアに追加します。

1.2 PowerShell を使用した自己署名証明書の作成

自己署名証明書を作成して使用するには、SQL Serverがインストールされているマシンで以下の手順を実行します:

  1. SQL Serverに移動し、Powershellを管理者権限で開きます。
  2. 以下のコマンドを実行してください。このコマンドを実行すると、自己署名証明書がローカルストアにインストールされ、保存されます。
    New-SelfSignedCertificate -DnsName <FQDN of the SQL server> -CertStoreLocation cert:\LocalMachine\My
    <FQDN of the SQL server>をFQDNの詳細に置き換えます。

2.SSL証明書のPAM360へのインポート

証明書のインストールが完了したら、以下の手順に従ってサーバー証明書をPAM360証明書ストアにインポートしてください:

  1. サーバー証明書をコピーし、<PAM360_インストールディレクトリ>/bin ディレクトリ配下に貼り付けてください。
  2. 以下のコマンドを実行してください。これにより、証明書がPAM360証明書ストアに追加されます。
    importCert.bat <Absolute-Path-of-the-Certificate>

3.SSL暗号化のSQL Serverでの有効化

  1. SQL Server が実行されているマシンで、[Start]をクリックしてSQL Server Configuration Managerを開きます。
  2. 左側のパネルで「SQL Server Network Configuration」を展開し、構成するサーバーの「Protocols」を右クリックして「Properties」をクリックします。
  3. [Certificate ]タブに移動し、指定した証明書を使用するようにデータベースエンジンを構成します。
  4. クライアントとサーバー間のすべての通信が暗号化されるようにするには、「Force Encryption」を「Yes」に設定してください。この設定では、暗号化をサポートできないクライアントからのアクセスが拒否されます。これはセキュリティ上の推奨設定です。あるいは、暗号化をクライアントアプリケーション側で要求するようにしたい場合は、「Force Encryption」を「No」に設定することもできます。これは暗号化されていない通信につながる可能性があるため、推奨されません。
  5. SQL Serverを再起動します。
    forced-encryption-new1

    forced-encryption-new2

詳細は、Microsoftのナレッジベース記事にあるConfiguring SSL for SQL Serverセクションを参照してください。

4.ChangeDB.batのPAM360での実行

ChangeDB.bat(Windows)またはChangeDB.sh(Linux)ファイルを編集して、SQLサーバーに関する詳細をPAM360に提供します。以下の手順に従ってください:

  1. <PAM360 Installation Folder>/binフォルダーに移動し、ファイル(ChangeDB.bat(Windows)またはsh ChangeDB.sh(Linux))を実行します。
  2. ポップアップウィンドウが開いたら、「ベストプラクティス文書を開きます」ボタンをクリックして、まずBest Practices Guideをお読みください。データベース変更の設定を進めるには、「セットアップを継続」ボタンをクリックしてください。
  3. 表示されたウィンドウで、以下の詳細を入力します:
    1. 「サーバー種別」をSQL Serverとして選択します。
    2. 「ホスト名」:MS SQLサーバーがインストールされているマシンの名前またはIPアドレス。
    3. 「インスタンス名」:PAM360で使用するSQLサーバーの名前付きインスタンスを指定します。インスタンス名が指定されていない場合、PAM360はポート 1433でデフォルトのインスタンスとの接続を確立しようとします。

      メモ:

      PAM360 は SSL モードでのみ MS SQL に接続するため、PAM360 の特定のポートで実行される専用のデータベース インスタンスを作成することをお勧めします。1433以外のポート番号を指定する場合は、上記の「ホスト名」パラメーターで次のように指定できます:<ホスト名>:<ポート番号>

    4. 「データベース」:PAM360データベースの名前。デフォルトはPassTrixです。別のデータベース名が必要な場合は、ここで指定してください。PAM360 は、マスターキー、対称キーなどの作成を処理します。
    5. 「認証」:SQLサーバーに接続する方法。WindowsからSQLサーバーに接続している場合は、Windowsを選択します。PAM360 サービスが SQL サーバーに接続する権限を持つサービス アカウントで実行されている場合は、Windows Single Sign On機能を利用します。それ以外の場合は、SQLオプションを選択します。

      メモ:

      認証に使用されるユーザー名とパスワードはどこにも保存されないため、Windowsオプションを選択することをお勧めします。

    6. 「ユーザー名」と「パスワード」:手順vでSQLオプションを選択した場合は、PAM360がデータベースに接続できるユーザー名とパスワードを指定します。

      メモ:

      • ここに入力した「ユーザー名」と「パスワード」は、PAM360のdatabase_params.confファイルに保存されます。したがって、ホストの強化に注意してください。
      • Windowsからデータベースに接続する場合は、Windowsのログイン認証情報を使用することもできます。この場合、「ユーザー名」を<ドメイン名>\<ユーザー名>として入力します。
    7. 「暗号化鍵」:データを暗号化してSQLサーバーに保存するためのキー。「規定」のままにして、PAM360 がキーを生成できるようにすることもできます。カスタムキーが必要な場合は、「カスタム」オプションを選択します。

      「カスタム」オプションを選択した場合は、次の手順を実行します:

    8. 「Instance Type」:PAM360では、バックエンドデータベースとして「Local Instance」(オンプレミス)と「Azure SQL」の両方を使用できます。ここで、Instance TypeとしてLocal Instanceを選択して、データベース変更構成を続行してください。
    9. JDBC Driver: このドライバは、MS SQL Serverデータベースとシームレスに統合します。Microsoft (Recommended) は、このフィールドでデフォルトで選択されるドライバであり、最新のSQL Serverバージョンおよび機能と互換性があるため、ほとんどのインストールで推奨されます。代替のJDBC Driverとして選択可能なのは 'jTDS'で、これは特定の互換性機能をサポートしています。
    10. 「接続プロパティ」: このチェックボックスを選択すると、次の形式でカスタム接続プロパティを指定できるようになります:key1=value1;key2=value2。

      メモ:

      DB移行設定ウィンドウに表示されている既存のサーバー情報やプロパティ(SSLや暗号化など)は、カスタム接続プロパティとして追加することはできません。

    11. 最後に、「テスト」をクリックして接続設定が正しいことを確認し、その後「保存」をクリックします。
      db-change-conf

    メモ:

    上記の手順を実行した後、<PAM360_インストールディレクトリ>/confディレクトリに移動し、masterkey.keyファイルを安全な場所に移動します。SQL Serverは、階層的な暗号化とキー管理インフラストラクチャを使用してデータを暗号化します。各レイヤーは、証明書、非対称キー、および対称キーの組み合わせを使用して、その下のレイヤーを暗号化します。その1つがデータベースマスターキーであり、これはサービスマスターキーとパスワードによって作成されます。このパスワードは、PAM360 インストールフォルダ内の <PAM360_インストールディレクトリ>/conf ディレクトリにある masterkey.key というファイルに保存されています。Masterkey.keyファイルを安全な場所に移動することを強くお勧めします。これは、データのセキュリティを確保するためです。このキーを安全に保つように注意してください。高可用性とディザスタリカバリを実行するときに必要になります。このキーを紛失した場合は、MS SQL/Azure MS SQL Serverセットアップをすべて構成し直す必要があります。

MS SQLでの暗号化およびキー管理についての詳細は、このMSDNドキュメントを参照してください。

5.トラブルシュートのヒント


1.SQL ServerでSSL暗号化を有効にするとき、証明書ドロップダウンにサーバー証明書が表示されませんか?

MMCコンソールに追加したサーバー証明書が証明書ドロップダウンに表示されない場合は、SSL暗号化用のSQL Server証明書を手動で更新する必要があります。SQL Server が接続を暗号化するために使用する証明書は、次のレジストリ キーで指定されます:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\SuperSocketNetLib

このキーには、サーバー内の各証明書を一意に識別するサムプリントと呼ばれる証明書のプロパティが含まれています。

registry

上記の手順を使って作成された証明書のサムプリント値をコピーし、レジストリの証明書プロパティで更新する必要があります。

certificate

注意:サムプリントを正しくコピーして更新するには、以下の手順に従ってください:

  1. サムプリントからUnicode文字を削除します。これを行うには、サムプリントをメモ帳に貼り付けます。
  2. メモ帳の内容をANSI形式で別のファイルとして保存します。
  3. 次に、ANSI形式のファイルを開き、ファイルから[?]文字を削除します。
  4. サムプリント内の文字間のスペースを削除します。
  5. このサムプリントをHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\Certificateプロパティに保存します。