Skip to main content

分散キャッシュ・クラスタのセキュリティ

分散キャッシュ・クラスタ内のすべての InterSystems インスタンスが、InterSystems IRIS の安全な境界の内部 (外部に対する安全が確保されている環境の内部) に存在する必要があります。その理由は、ECP が基本的なセキュリティ・サービスであり、リソース・ベースのサービスではないので、アクセスするユーザを制限する方法がないためです (基本サービスおよびリソース・ベースのサービスの詳細は、"使用可能なサービス" を参照してください)。このページでは、この境界内で利用可能な関連するセキュリティ・ツールについて説明します。

Note:

データ・サーバ上でデータベースが暗号化されている場合は、接続されているすべてのアプリケーション・サーバ上の IRISTEMP データベースも暗号化する必要があります。キーは、すべてのサーバで同じものにすることもできれば、別々のものにすることもできます。データベース暗号化の詳細は、"暗号化ガイド" を参照してください。

アプリケーション・サーバのデータ・サーバへの接続の TLS によるセキュリティ保護

TLS がデータ・サーバで有効な場合、これを使用してアプリケーション・サーバからそのデータ・サーバへの接続をセキュリティ保護できます。この保護には、X.509 証明書ベースの暗号化が含まれます。TLS およびインターシステムズ製品での TLS の使用の詳細は、インターシステムズの "TLS ガイド" を参照してください。

データ・サーバの構成または編集時、あるいはそれ以降であればいつでも ("データ・サーバの準備" を参照)、[ECP SSL/TLS サポート] 設定として、既定の [無効] ではなく、[有効] または [必須] を選択できます。これらの設定は、データ・サーバをアプリケーション・サーバに追加する ("アプリケーション・サーバの構成" を参照) か、既存のデータ・サーバを編集する際に、TLS によりデータ・サーバへの接続をセキュリティ保護する、[SSL/TLS 使用] チェック・ボックスの使用オプションを制御します。これら設定は、以下のように影響します。

  • 無効 — アプリケーション・サーバのこのデータ・サーバへの接続に対する TLS の使用を無効にします。[SSL/TLS 使用] が選択されているアプリケーション・サーバであっても、同様です。

  • 有効 — データ・サーバでアプリケーション・サーバの接続に対する TLS の使用が有効になります。[SSL/TLS 使用] が選択されているアプリケーション・サーバからの接続に対して TLS が使用され、[SSL/TLS 使用] が選択されていないアプリケーション・サーバからの接続に対しては、SSL/TLS は使用されません。

  • 必須 — データ・サーバではアプリケーション・サーバの接続に TLS を使用する必要があります。アプリケーション・サーバは、データ・サーバに対して [SSL/TLS 使用] が選択されている場合のみ、データ・サーバに接続できます。この場合、すべての接続に対して TLS が使用されます。

TLS を使用してアプリケーション・サーバからデータ・サーバへの接続を確立するには、次の 3 つの要件があります。

  • データ・サーバでは、スーパーサーバ・クライアントに対して TLS 接続を有効にする必要があります。そのためには、データ・サーバで、システムの既定のスーパーサーバの構成ページ ([システム管理][セキュリティ][スーパーサーバ]) に移動して、[SSL/TLSサポートレベル] 設定に [有効] を選択します。詳細は、"スーパーサーバの管理" を参照してください。

  • 両方のインスタンスに ECP TLS 構成が必要です。

    このため、[ECP設定] ページ ([システム管理][構成][接続性][ECP設定]) の両側の [このシステムをECPアプリケーションサーバとする][このシステムをECPデータサーバとする] には、[SSL/TLS の構成] リンクが含まれており、これを使用してインスタンスに適した ECP TLS 構成を作成できます。このためには、以下の手順を実行します。

    1. [ECP設定] ページのアプリケーション・サーバ側の [SSL/TLS ‘%ECPClient’ を設定] リンク、またはデータ・サーバ側の [SSL/TLS ‘%ECPServer’ を設定] リンクをクリックします。

    2. [ECP用 SSL/TLS 構成を編集] ダイアログ内のフォームの各フィールドに入力します。これらは [新規 SSL/TLS 構成] ページに似ています ("TLS 構成の作成または編集" を参照)。ただし、[構成名][説明][有効] のいずれのフィールドもありません。また、秘密鍵パスワードに関しては、このページでパスワードの入力または置き換え ([新規パスワード入力])、パスワードを使用しないことの指定 ([パスワードクリア])、あるいは既存のパスワードをそのまま使用すること ([そのままにする]) の指定を行えます。

      このページのフィールドは以下のとおりです。

      • [信頼された証明書機関 X.509 証明書を含むファイル]

        この構成が信頼する 1 つまたは複数の認証機関 (CA) の X.509 証明書 (PEM 形式) が含まれているファイルのパスと名前。絶対パス、または install-dir/mgr/ ディレクトリを基準とした相対パスで指定できます。X.509 証明書とそれらの生成および使用の詳細は、インターシステムズの "TLS ガイド" を参照してください。

        Note:

        このファイルには、他のミラー・メンバに属する X.509 証明書の検証に使用できる証明書が含まれている必要があります。ファイルに複数の証明書が含まれている場合は、それらの証明書を正しい順序で (現在のインスタンスの証明書が最初になるように) 並べる必要があります。詳細は、"必須証明書チェーンの確立" を参照してください。

      • [この構成のX.509 証明書を含むファイル]

        構成独自の X.509 証明書 (PEM 形式) の場所。これは、絶対パスと相対パスのいずれかとして指定できます。

        Note:

        証明書の識別名 (DN) は証明書のサブジェクト・フィールドに表示する必要があります。

      • [関連づけられた秘密鍵を含むファイル:]

        構成の秘密鍵ファイルを格納する場所。絶対パスまたは相対パスで指定します。

      • [秘密鍵タイプ]

        秘密鍵の生成に使用するアルゴリズム。有効なオプションは [DSA][RSA] です。

      • [パスワード]

        ECP TLS 構成を作成している場合、[新規パスワード入力] を選択すると、証明書に関連付けられた秘密鍵のパスワードの入力および確認のための再入力を実行できます。

      • [プロトコル]

        構成で有効と見なされる通信プロトコル TLSv1.1 および TLSv1.2 は、既定で有効となります。

      • [有効な暗号スイート]

        クライアントとサーバ間の通信の保護に使用される暗号スイート・セット。通常、これは既定の設定のままにできます。

      フォームの入力が完了したら [保存] をクリックします。

  • アプリケーション・サーバは、TLS を使用して接続する前に、データ・サーバで承認する必要があります。

承認された ECP 接続の追加

アプリケーション・サーバが最初に TLS を使用してデータ・サーバに接続を試みると、その SSL (TLS) コンピュータ名 (その X.509 証明書の所有者識別名) とそのホストの IP アドレスが、データ・サーバの [アプリケーションサーバ] ページ ([システム管理][構成][接続性][ECP設定][アプリケーションサーバ]) の、承認または拒否が決まっていない保留中の ECP アプリケーション・サーバのリストに表示されます。[承認] および [拒否] リンクを使用して、リスト内の要求に対応します (保留中の要求がない場合、リストは表示されません)。

リモート ECP クライアント接続を事前承認して、クライアントの接続時に手動で承認する必要性を排除するには、SYS.ECP.AddAuthorizedCN()Opens in a new tab メソッドを使用します。このメソッドは、分散キャッシュ・クラスタのセットアップ・プロセスを簡略化し、安全なクライアント接続時の手動による操作の必要性を減らします。

ddAuthorizedCN() に必要な SSLComputerName パラメータ値を取得するには、3 つの方法があります。

  • 制御された生成プロセスを使用して独自の証明書を作成および導入し、AuthorizedCN() に渡す SSLComputerName 値の予測可能な名前付け方式を実装できるようにします。

  • 複製された単一の証明書をすべての ECP アプリケーション・サーバで使用することで、同一の SSLComputerName 値を AddAuthorizedCN() で一貫して使用できます。

  • まず証明書を生成または取得し、次に、AddAuthorizedCN() を呼び出す前に SSLComputerName 値を読み込んで、承認に正しい値を利用できるようにします。

以下に、AddAuthorizedCN() を使用して、承認されたリストにクライアント証明書を追加する方法を示します。

// Add a remote client's certificate to the authorized list
Set SSLComputerName = "CN=RemoteClientCert, OU=Department, O=Organization, C=US"
Set Status = ##class(SYS.ECP).AddAuthorizedCN(SSLComputerName)

// Check the operation status
IF ##class(%SYSTEM.Status).IsOK(Status) { 
	Write "Certificate successfully authorized: ", SSLComputerName, ! 
} ELSE { 
	Write "Error adding certificate to authorized list.", ! 
}

証明書を事前承認すると、クライアントはデータ・サーバへの接続時に、手動による承認なしで認識されます。TLS を使用して接続することが既に承認されているアプリケーション・サーバが 1 つ以上存在する場合、その SSL (TLS) コンピュータ名が、[アプリケーションサーバ] ページの、ECP アプリケーション・サーバとして承認された SSL コンピュータ名のリストに表示されます。必要に応じて、[削除] リンクを使用して承認をキャンセルできます。

データ・サーバへのアクセスの制限

既定では、(前のセクションで説明したように) データ・サーバ・インスタンスがデータ・サーバとして構成されている InterSystems IRIS インスタンスは、データ・サーバに接続できます。ただし、許可される着信接続元となるホストを指定することによって、データ・サーバに対するアプリケーション・サーバとして機能できるインスタンスを制限できます。これを行う場合、明示的にリストされていないホストは、データ・サーバに接続できません。これを行うには、データ・サーバ上で次の手順を実行します。

  1. [サービス] ページ (ポータルのホーム・ページから、[セキュリティ][サービス] の順に選択) で、[%Service_ECP] をクリックします。[サービス編集] ダイアログが表示されます。

  2. 既定では、[許可済みの接続元] ボックスは空です。つまり、ECP サービスが有効な場合、すべてのアプリケーション・サーバがこのインスタンスに接続できます。[追加] をクリックして、単一の IP アドレス (192.9.202.55 など) または完全修飾ドメイン名 (mycomputer.myorg.com など)、あるいは IP アドレスの範囲 (例えば、8.61.202–210.*18.68.*.*) を入力します。リストに 1 つ以上のエントリがあるときに、[サービス編集] ダイアログで [保存] をクリックすると、これらのエントリで指定されたホストのみが接続できます。

リストには説明に従っていつでもアクセスすることができます。リストからホストを削除するには [削除] を使用し、ホストに関連付けられたロールを指定するには [編集] リンクを使用します ("ロールと権限によるアクセスの制御" を参照)。

ロールと権限によるデータベースへのアクセスの制御

インターシステムズが使用するセキュリティ・モデルでは、データベースを含むアセットがリソースに割り当てられ、リソースには読み取りや書き込みなどの許可が割り当てられます。リソースと許可の組み合わせを権限と呼びます。権限は、ユーザが所属できるロールに割り当てられます。このように、リソースへのユーザ・アクセスを制御するためにロールが使用されます。このモデルの詳細は、"承認 : ユーザ・アクセスの制御" を参照してください。

データ・サーバにあるデータベースへのアクセス許可を取得するには、アプリケーション・サーバ上のプロセスを開始するユーザが保持するロールと、データ・サーバ上の ECP 接続に対して設定されたロールの両方に、そのデータベースを表す同じリソースに対する許可が指定されている必要があります。例えば、あるユーザが、特定のデータベース・リソースに対する読み取り許可の権限を付与するアプリケーション・サーバ上のロールに所属し、データ・サーバ上の ECP 接続に設定されているロールにもこの権限が含まれている場合、そのユーザは、アプリケーション・サーバ上のデータベースからデータを読み取ることができます。

アプリケーション・サーバの代わりにデータ・サーバを実行する場合、既定では、InterSystems IRIS は、データ・サーバ上の ECP 接続に %All 特権を与えます。つまり、アプリケーション・サーバ上のユーザが持つ権限はすべて、データ・サーバ上で照合され、アクセスはアプリケーション・サーバ上でのみ制御されます。例えば、%DB_USER リソースに対する特権のみを持っており、%DB_IRISLIB リソースに対する特権を持っていない、アプリケーション・サーバのユーザは、データ・サーバの USER データベースにあるデータにアクセスできますが、データ・サーバの IRISLIB データベースにアクセスしようとすると、<PROTECT> エラーとなります。アプリケーション・サーバの別のユーザが、%DB_IRISLIB リソースに対する特権を持っている場合、そのユーザは IRISLIB データベースを利用できます。

Note:

LDAP サーバを使用して、分散キャッシュ・クラスタのアプリケーション・サーバ全体で、ユーザ・ロールと特権を含む、一元的なセキュリティを実装することをお勧めします。InterSystems IRIS での LDAP の使用についての詳細は、"LADP ガイド" を参照してください。

ただし、アプリケーション・サーバのホストに基づいて、データ・サーバ上の ECP 接続で使用できるロールを制限することもできます。例えば、データ・サーバで、特定のアプリケーション・サーバと対話するときに使用できるロールを %DB_USER のみとすることを指定できます。この場合、アプリケーション・サーバで %DB_USER ロールが与えられているユーザは、データ・サーバの USER データベースにアクセスできますが、アプリケーション・サーバ上のユーザは、付与されたロールに関係なく、データ・サーバ上の他のデータベースにアクセスすることはできません。

Caution:

データ・サーバですべての ECP 接続に対して %All 権限を引き続き付与できるようにするのではなく、クラスタ内のすべてのアプリケーション・サーバで使用可能なロールを指定することにより、クラスタを保護することを強くお勧めします。

以下は、この動作に対する例外です。

  • InterSystems IRIS は必ずデータ・サーバに %DB_IRISSYS ロールを与えます。これは、このデータ・サーバが稼働するには、IRISSYS データベースへの Read アクセスが必要なためです。つまり、アプリケーション・サーバ上で %DB_IRISSYS ロールを持つユーザは、データ・サーバの IRISSYS データベースにアクセスできます。

    このアプリケーション・サーバのユーザが、データ・サーバの IRISSYS データベースにアクセスできないようにする方法には次の 2 とおりがあります。

    • %DB_IRISSYS リソースに対する特権をユーザに与えない。

    • データ・サーバで、IRISSYS データベースのリソース名を、%DB_IRISSYS 以外の名前に変更する。このとき、アプリケーション・サーバのユーザが変更後の名前を持つリソースに対する特権を持っていないことを確認してください。

  • データ・サーバにパブリック・リソースが存在する場合、アプリケーション・サーバのロールや、ECP 接続用に構成されたロールに関係なく、ECP アプリケーション・サーバ上のすべてのユーザはこのパブリック・リソースを使用できます。

データ・サーバ上の特定のアプリケーション・サーバからの ECP 接続に使用可能なロールを指定するには、以下の操作を行います。

  1. [サービス] ページ (ポータルのホーム・ページから、[セキュリティ][サービス] の順に選択) に移動して、[%Service_ECP] をクリックし、[サービス編集] ダイアログを表示します。

  2. 制限するアプリケーション・サーバ・ホストの [編集] リンクをクリックして、[ロールの選択] 領域を表示します。

  3. ホストのロールを指定するには、[使用可能] の下に一覧表示されるロールから必要なロールを選択し、右矢印をクリックして、選択したロールを [選択済み] リストに追加します。

  4. [選択済み] リストからロールを削除するには、削除するロールを選択し、左矢印をクリックします。

  5. [選択済み] リストにすべてのロールを追加するには、二重右矢印をクリックします。また、[選択済み] リストからロールをすべて削除するには、二重左矢印をクリックします。

  6. [保存] をクリックして、IP アドレスとロールを関連付けます。

既定では、リストされたホストは %All ロールを保持していますが、その他のロールを 1 つまたは複数指定すると、この接続は指定したそれらのロールのみを持つことになります。したがって、%Operator ロールを持つホストまたは IP 範囲からの接続が持つ特権は、そのロールに関連付けられているもののみです。一方、ロールが関連付けられていない (つまり、%All ロール) ホストからの接続はすべての特権を持つことになります。

アプリケーション・サーバのホストで使用可能なロールに対する変更、およびデータ・サーバのリソース上のパブリック許可に対する変更を有効にするには、InterSystems IRIS の再起動が必要です。

セキュリティ関連のエラー報告

ECP で発生するセキュリティ関連のエラー報告の動作は、アプリケーション・サーバとデータ・サーバのどちらでチェックが失敗したか、またどのような操作が行われたかによって次のように異なります。

  • アプリケーション・サーバでチェックに失敗した場合は、直ちに <PROTECT> エラーとなります。

  • データ・サーバでの同期操作の場合は、直ちに <PROTECT> エラーとなります。

  • データ・サーバでの非同期操作の場合は、<NETWORK DATA UPDATE FAILED> エラーが遅延時間の後で表示されることがあります。このような操作には、例えば Set 操作があります。

関連項目

FeedbackOpens in a new tab