Skip to main content

InterSystems IRIS への Web ゲートウェイ接続の保護

ここでは、Web ゲートウェイから InterSystems IRIS® への接続を保護するオプションについて説明します。CSP 認証の詳細は、"認証ガイド" を参照してください。InterSystems IRIS への Web ゲートウェイ接続は、以下のセキュリティ・レベルに応じて保護できます。

  1. 最小の接続セキュリティ (非推奨)

  2. ユーザ名ベースおよびパスワードベースの単純な認証

  3. Kerberos ベース認証とデータの保護

  4. SSL/TLS ベース認証とデータの保護 (相互 TLS 認証を含む)

ここで適用されるセキュリティは、InterSystems IRIS サーバに対して Web ゲートウェイのホストを認証する目的のみで使用されることに注意してください。Web ゲートウェイと InterSystems IRIS アプリケーション・サーバ (%cspServer) 間に承認されていない接続が生成されないように保護します。ただし、Web アプリケーションの個々のユーザは識別されません。ユーザのログイン機能が Web アプリケーション自体に用意されている場合に限り、Web アプリケーションのユーザを確実に識別できます。例えば、管理ポータルにログオンしているシステム管理者の場合、管理ポータルのログイン・フォームに入力したユーザ名とパスワードによってのみ識別できます。

Web のステートレスな特性も、念頭に置く必要があります。InterSystems IRIS への Web ゲートウェイ接続と、Web アプリケーションの個々のユーザとの間には、固定された関係が存在しません。多くのユーザが同じ接続を共有します。

接続時に InterSystems IRIS に対して Web ゲートウェイを認証することは重要です。攻撃者が Web ゲートウェイになりすますことができると、その攻撃者は、技術的な手段またはソーシャル・エンジニアリング、およびその両方を使用して自分の制御下に置いたシステムでトラフィックをリダイレクトし、データを自由に読み取り、変更できるようになります。これは、Web アプリケーションに対する個人ユーザの認証とは異なります。Web ゲートウェイの InterSystems IRIS のユーザ名およびパスワード、Windows ネットワークの資格情報、および UNIX® Kerberos キー・テーブルのいずれも、通常のユーザが使用しないようにする必要があります。

Web ゲートウェイの接続セキュリティの構成

Web ゲートウェイの接続セキュリティを構成するには、常に Web ゲートウェイ管理ページを使用します。関連するオプションは、[構成][サーバ接続][接続セキュリティ] セクションにあり、ここでは次のような設定が用意されています。

  • [接続セキュリティレベル]:選択肢は以下のとおりです。

    • [パスワード]

    • [Kerberos]

    • [Kerberosパケット整合性]

    • [Kerberos暗号化]

    • SSL/TLS

  • [ユーザ名]

  • [パスワード]

  • [製品]

  • [サービス・プリンシパル名]

  • [キーテーブル]

最小の接続セキュリティ (非推奨)

最小の接続セキュリティを使用するには、[接続セキュリティレベル][パスワード] に設定し、[ユーザ名] フィールドおよび [パスワード] フィールドを空欄のままにします。

このモードでは、Web ゲートウェイと InterSystems IRIS 間の接続に対して最小レベルのセキュリティが適用されます。

この処理モードの場合、Web ゲートウェイ・サービス (%Service_WebGateway) と、そのサービスが機能するユーザ名 (CSPSystem など) が、任意の形式の認証を要求していないかどうかを確認します。

単純なユーザ名/パスワード認証

ユーザ名/パスワード認証は、Web ゲートウェイと InterSystems IRIS 間に適用できる最も簡単な認証形式です。インスタンスのインストール・プロセスでは、インスタンスの Web ゲートウェイ・アクセスを認証する CSPSystem ユーザが作成されます。このユーザ (CSPSystem またはその他のユーザ) には、有効期限を設定する必要はありません。つまり、Expiration Date プロパティの値は 0 になります。

どのような場合でも、Web ゲートウェイに使用する既定のユーザ名とパスワードは以下のようになります。

Username: CSPSystem
Password: SYS

Web ゲートウェイ管理ページでインスタンスに単純なユーザ名/パスワード認証を構成するには、[接続セキュリティレベル][パスワード] に設定し、[ユーザ名][パスワード] に値を指定して、サーバ・アクセス・プロファイルを変更します。

InterSystems IRIS アプリケーション・サーバでは、Web ゲートウェイへのアクセス権を与えるユーザ・アカウントの認証情報を必要に応じて変更できます。ただし、Web ゲートウェイの対応するサーバ・アクセス・プロファイルも、これらの新しい認証情報で更新する必要があります。そうしないと、Web ゲートウェイはそのアプリケーション・サーバへの新しい接続を確立できません。パスワードは { で始まり、} で終わることはできません。Web ゲートウェイはこれらの中括弧内の文字列をパスワード取得コマンドとして解釈しようとするためです。

パスワードは、InterSystems IRIS で認証するプレーン・テキストとしてネットワーク上に送信する必要があるので、セキュリティの面で脆弱な形式の認証であることに注意してください。簡単に実行可能なネットワーク・スニッフィングによって、これらのパスワードが盗まれる可能性があります。この構成オプションで使用するパスワードは、以下のガイドラインに従って、Web ゲートウェイの構成ファイルで保持する必要があります。

UNIX®、Linux、および macOS では、CSP.ini ファイル内のパスワードは base64 ハッシュとして格納されます。Windows では、パスワードは、Microsoft のデータ保護 API (DPAPI) で提供される機能を使用して Web ゲートウェイ構成ファイルに暗号化されます。このパスワードの暗号化は、Web ゲートウェイ管理の [デフォルトパラメータ] ページで処理されます。

Note:

通常の Windows のユーザ・アカウントには Administrators グループのメンバシップが付与されていることがあるため、Windows ではこのパスワード暗号化が使用されています。ただし、プロダクション・システムではこの方法をお勧めしません。パスワードを暗号化すると、Windows のすべてのインストールに、より高いレベルの保護が提供されます。

外部から導入されるパスワード

Web ゲートウェイ管理ページのコンテキスト以外でパスワードを扱うことが必要になる場合もあります。例えば、Web ゲートウェイ構成がカスタム構成スクリプトによって設定されている場合などです。この場合、パスワードをプレーン・テキストとして保存しておくと、Web ゲートウェイを初めて起動したときにこのパスワードが暗号化されます。このメソッドを使用する場合、ゲートウェイ管理フォームへのパスワードを '1' または 'PBKDF2|' で始めることはできず、IRIS へのパスワードを ']]]' で始めることはできません。これらの文字で始まるパスワードが必要な場合は、代わりに OS のコマンド・プロンプトで CSPpwd ユーティリティを使用します。このユーティリティは、Web ゲートウェイ構成ファイルに保持されているパスワードをエンコードします。一般的なフォームは次のとおりです。

CSPpwd <path to the CSPx.so|dll library> <context> <clear text password>

説明:

  • context = 0:Web ゲートウェイ管理ページへのパスワード

  • context = 2:Cache/IRIS サーバへのパスワード

エンコードされたパスワードが標準出力に書き込まれます。

例 (Windows):

CSPpwd C:\Inetpub\CSPGateway\CSPx.dll 0 MyGatewayManagementPassword
CSPpwd C:\Inetpub\CSPGateway\CSPx.dll 2 MyIRISServerPassword

例 (UNIX®):

CSPpwd /opt/webgateway/bin/CSPx.so 0 MyGatewayManagementPassword
CSPpwd /opt/webgateway/bin/CSPx.so 2 MyIRISServerPassword

別のコンピュータで暗号化されたパスワード

Windows では、Web サーバはユーザ・ストアではなくマシン・ストアを使用します。そのため、DPAPI パスワード暗号化はマシン固有です。他のコンピュータで暗号化された Web ゲートウェイ・パスワードを解読することはできません。つまり、クラスタ環境内のマシンが CSP.ini ファイル内の情報を共有することはできません。

この問題に対して考えられるソリューションを以下に示します。

  • クラスタ外のマシンを Web サーバとして使用する。

  • フェイルオーバーするたびに、Web ゲートウェイで同じパスワードを再設定する。

  • そのクラスタに属していないディスクに Web ゲートウェイ構成ファイルのコピーをそれぞれ独自に持つように、クラスタに属する各コンピュータを構成する。InterSystems IRIS が、Web ゲートウェイの DLL をホストするディレクトリにファイルを保持する。個々のコンピュータそれぞれにパスワードを保存し、暗号化したうえで、ノードをクラスタに導入する。

    例えば、各マシンの Disk C がクラスタに属さず、InterSystems IRIS が Disk S にインストールされている場合は、次のようになります。

    CLUNODE-1CLUNODE-1 で暗号化したパスワード XXX を記述した CSP.ini のコピー

    CLUNODE-2CLUNODE-2 で暗号化したパスワード XXX を記述した CSP.ini のコピー

  • Web ゲートウェイを起動してパスワードを追加する前に、以下の指示文を構成ファイルに手動で追加することによって、パスワードの暗号化を無効にする。

           [SYSTEM]
           DPAPI=Disabled
    

プログラムによるパスワードの取得 (UNIX®/Linux/macOS)

UNIX®/Linux/macOS システムでは、パスワードそのものをプレーン・テキストで指定するのではなく、安全なストレージ・ソリューション (ボールト・アプリケーションやマウントされたシークレット・ファイルなど) からパスワードを取得するオペレーティング・システム・コマンドを実行するよう Web ゲートウェイに指示できます。それには、Web ゲートウェイ管理ページを使用して、インスタンスのサーバ・アクセス・プロファイル[パスワード] フィールドで、中括弧 ({}) で囲んでコマンドを指定します。インスタンスに対応する CSP.ini ファイルのセクション内で、対応する CSP.ini パラメータ (Password パラメータ) を直接設定することもできます。例えば、CSP.ini ファイルには以下の行が含まれる場合があります。

Password={sh /tmp/PWretrieve.sh}

文字列は、プレーン・テキストのパスワードのように、CSP.ini ファイル内に base64 ハッシュ値として格納されます。

Web ゲートウェイは、Web ゲートウェイ管理ページを使用してサーバ・アクセス・プロファイルを保存するとき、または CSP.ini ファイルの [SYSTEM] セクションで RELOAD=1 フラグが検出されたときにコマンドを実行します。コマンドの出力は、インスタンスのパスワードとしてメモリに格納されます。指定するコマンドは、追加アクションなしでパスワードを取得できるものである必要があります。安全なストレージ・ソリューションのコマンド行インタフェースをシステムで完全に構成し、必要な認証情報が環境変数または構成ファイルで利用できる必要があります。

Note:

この方法を使用して、SSL/TLS 秘密鍵パスワードサーバ・アクセス・プロファイル内または CSP.ini ファイル内でプログラムによって取得することもできます。

Kerberos ベース認証とデータ保護

Kerberos ベース認証とデータ保護を使用するために、[接続セキュリティレベル] パラメータによって 3 種類の認証レベル (およびデータ保護) が提供されています。

  1. Kerberos :接続に対する初期の認証のみを提供します。

  2. Kerberos パケット整合性 :初期の認証を提供し、データ・パケットの整合性を保証します。

  3. Kerberos 暗号化 :最高レベルのセキュリティです。初期の認証、データ・パケットの整合性の保証、および送信されるすべてのメッセージの暗号化を行います。

Kerberos ライブラリ

Kerberos ベースのいずれかのモードを使用する場合、Web ゲートウェイは次の InterSystems Kerberos クライアント・ライブラリをロードする必要があります。

  • Windows DLL : irisconnect.dll

  • UNIX® 共有オブジェクト : irisconnect.so

オペレーティング・システムの PATH 環境変数に指定した場所、または Web ゲートウェイのインストール場所を基準にした以下のいずれかの場所に、適切なライブラリをインストールします。

  • . (Web ゲートウェイのローカル側)

  • ./bin

  • ../bin

  • ../../bin

Web ゲートウェイは、ライブラリが初めて必要になったときにライブラリのロードを試みます。成功すると、Web ゲートウェイ・イベント・ログに次のステータス・メッセージが書き込まれます。

Web Gateway Initialization The IRISCONNECT library is loaded - Version: 5.3.0.175.0. 

(このライブラリは、Web ゲートウェイと InterSystems IRIS の間のオプションの Kerberos ベースのセキュリティで使用されます。)

Web ゲートウェイが IRISCONNECT ライブラリを見つけられない場合や、リンクできない場合は、失敗を示す適切な説明やエラー・メッセージが Web ゲートウェイ・イベント・ログに書き込まれます。

Web ゲートウェイと InterSystems IRIS 間の通信が Kerberos で保護されている場合は、Web ゲートウェイが Kerberos クライアントになります。

Kerberos を使用するように Web ゲートウェイを構成する手順は、Windows のセクションに記載されています。

SSL/TLS を使用する場合のライブラリ・パスのオーバーライド

既定の Web ゲートウェイでは、そのホーム・ディレクトリ (つまり、Web ゲートウェイ・バイナリを保持するディレクトリ) に依存セキュリティ・ライブラリ (共有オブジェクト) がインストールされることを想定しています。

Web ゲートウェイと InterSystems IRIS 間で SSL/TLS 接続を使用する場合、これらのライブラリとして IRISCONNECT ライブラリおよび SSL/TLS ライブラリ (UNIX® の場合:libssl.solibcrypto.so、Windows の場合:libcrypto-1_1-x64.dll libssl-1_1-x64.dll) があります。

Web ゲートウェイおよび IRISCONNECT ライブラリ (Web サーバの処理領域にロードされます) が SSL/TLS ライブラリのコピーをロードする場合、ホスト Web サーバによって以前にロードされた同じライブラリの異なるバージョン間で競合が発生します。SSL/TLS ライブラリの 1 つのコピーだけが Web サーバの処理領域にロードされるようにするには、Web ゲートウェイが IRISCONNECT ライブラリに対して、ホスト Web サーバで使用されているものと同じ場所から SSL/TLS ライブラリをロードするように指示する必要があります。

Web ゲートウェイ管理の [デフォルトパラメータ] ページでは、OpenSSL ライブラリの代替セットを使用するためのパラメータ [SSL/TLS ライブラリ・パス] が提供されます。例えば、以下のとおりです。

SSL/TLS Library Path = /usr/bin/  
Important:

OpenSSL の使用を許可しない Apache インストールを作成することも、OpenSSL を無効にするように Apache を構成することも可能です。この状況では、[SSL/TLS ライブラリ・パス] が別の場所に設定されない限り、Web ゲートウェイは付属していたライブラリをロードします。

ライブラリ・バージョンが Apache と Web ゲートウェイで一致しない場合、Web ゲートウェイと InterSystems IRIS インスタンス間の TLS 接続は失敗する可能性があります。接続を試みたときに TLS エラーが発生したり、OpenSSL 関数を呼び出すときに Web ゲートウェイが SIGSEGV でクラッシュする可能性があります。

Windows

Windows の場合、Kerberos キー・テーブルは実装されません。したがって、ホスト・サービスが指定のアカウントで開始したときに取得されるネットワーク資格情報、またはホスト・サービスをシステム・ログオン・セッションで (LOCAL SYSTEM として) 実行するときに Trusted Computing Base (TCB) から取得されるネットワーク資格情報が認証で使用されます。

Windows のドメイン・アカウントは、パスワードから派生した永続キーを使用して、ローカル・マシン用の Kerberos Ticket Granting Ticket (TGT) およびサービス・チケットを取得します。ローカル・マシンにも、ドメイン・コントローラの Key Distribution Centre (KDC) コンポーネントとの間で共有される永続 Kerberos キーが必要です。このキーを使用して、InterSystems IRIS などの別の Kerberos プリンシパルに対して認証を行うための TGT やサービス・チケットを取得できます。

実際に、Windows ベースの Web サーバ内で実行する Web ゲートウェイは、ネットワーク・サービス・ログオン・セッションまたはシステム・ログオン・セッションによって動作しています。使用するアカウントには、バッチ・ジョブとしてログオンする権利を割り当てる必要があります。

組み込みネットワーク・サービス・ログオン・セッションは、マシンの資格情報にアクセスできます。このセッションは、その他のマシンに対して認証を行うためにネットワーク資格情報を必要とするサービス用に設計されています。ただし、ネットワーク・サービス・ログオン・セッションは常に存在するわけではありません。InterSystems IRIS に対して Web ゲートウェイを認証する目的でシステム・ログオン・セッションを使用することもできます。

IIS インストール (特に ISAPI 拡張) の場合、ネットワーク・サービス・ログオン・セッションを使用して両方のデータベース (ローカルおよびリモート) とリモート・コンピュータにアクセスするのが望ましい方法です。

Kerberos のための Windows Web ゲートウェイ構成

  • [サービス・プリンシパル名] を、Web ゲートウェイの接続先であるターゲットの InterSystems IRIS サーバ名に設定します。

  • [ユーザ名][パスワード]、および [キーテーブル] の各フィールドは、空欄にしておきます。

  • クライアント・プリンシパル名 (クライアント・ユーザ名) は、Web ゲートウェイ・ホストの名前です。これは、Web ゲートウェイ・ホストのネットワーク・サービス・セッションを表す、次の Kerberos 名です。<computer_name>$

  • このプリンシパルに InterSystems IRIS サーバで必要な特権を割り当て、Web ゲートウェイのサービスが動作するようにします。

Kerberos のための UNIX® Web ゲートウェイ構成

これらのオペレーティング・システムは、Kerberos キー・テーブルをサポートします。

Kerberos のための UNIX® Web ゲートウェイ構成

概念的には、これらのシステムの Web ゲートウェイ構成の方が簡単です。

  • [サービス・プリンシパル名] を、Web ゲートウェイの接続先であるターゲットの InterSystems IRIS サーバ名に設定します。

  • [キーテーブル] フィールドに、キー・テーブル・ファイル名 (フル・パス指定) を入力します。

  • [ユーザ名] フィールドを、キー・テーブル・ファイルの適切なキー名に設定します。

  • [パスワード] フィールドは空欄にします。

  • クライアント・プリンシパル名 (クライアント・ユーザ名) は、Web ゲートウェイ・ホストの名前です。これは Kerberos キー・テーブルでキーを識別するために使用する名前です。このプリンシパルに InterSystems IRIS サーバで必要な特権を割り当て、Web ゲートウェイのサービスが動作するようにします。

SSL/TLS ベース認証とデータの保護

SSL/TLS プロトコルを使用して、Web ゲートウェイと InterSystems IRIS 間の通信を保護することもできます。

このモードでは、ホストに構成された SSL/TLS 転送により InterSystems IRIS への接続が保護されます。 [SSL/TLS 構成名] フィールドを、ターゲット・サーバに適切な値に設定する必要があります。 [サービスプリンシパル名] および [キーテーブル] フィールドは無関係なので、空白にしておく必要があります。

InterSystems IRIS システムの SSL/TLS クライアント構成の作成に関する詳細は、"TLS を使用して InterSystems IRIS に接続するための Web ゲートウェイの構成" を参照してください。

相互 TLS

相互 TLS は、パスワード認証の代替手段として Web ゲートウェイと InterSystems IRIS の間で適用できる認証形式です。詳細は、"相互 TLS (mTLS)" を参照してください。

FeedbackOpens in a new tab