分散キャッシュ・クラスタのセキュリティ
分散キャッシュ・クラスタ内のすべての InterSystems インスタンスが、InterSystems IRIS の安全な境界の内部 (外部に対する安全が確保されている環境の内部) に存在する必要があります。その理由は、ECP が基本的なセキュリティ・サービスであり、リソース・ベースのサービスではないので、アクセスするユーザを制限する方法がないためです (基本サービスおよびリソース・ベースのサービスの詳細は、"使用可能なサービス" を参照してください)。このページでは、この境界内で利用可能な関連するセキュリティ・ツールについて説明します。
データ・サーバ上でデータベースが暗号化されている場合は、接続されているすべてのアプリケーション・サーバ上の 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 構成を作成できます。このためには、以下の手順を実行します。
-
[ECP設定] ページのアプリケーション・サーバ側の [SSL/TLS ‘%ECPClient’ を設定] リンク、またはデータ・サーバ側の [SSL/TLS ‘%ECPServer’ を設定] リンクをクリックします。
-
[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 を使用して接続する前に、データ・サーバで承認する必要があります。
データ・サーバへのアクセスの制限
既定では、(前のセクションで説明したように) データ・サーバ・インスタンスがデータ・サーバとして構成されている InterSystems IRIS インスタンスは、データ・サーバに接続できます。ただし、許可される着信接続元となるホストを指定することによって、データ・サーバに対するアプリケーション・サーバとして機能できるインスタンスを制限できます。これを行う場合、明示的にリストされていないホストは、データ・サーバに接続できません。これを行うには、データ・サーバ上で次の手順を実行します。
-
[サービス] ページ (ポータルのホーム・ページから、[セキュリティ]、[サービス] の順に選択) で、[%Service_ECP] をクリックします。[サービス編集] ダイアログが表示されます。
-
既定では、[許可済みの接続元] ボックスは空です。つまり、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 データベースを利用できます。
LDAP サーバを使用して、分散キャッシュ・クラスタのアプリケーション・サーバ全体で、ユーザ・ロールと特権を含む、一元的なセキュリティを実装することをお勧めします。InterSystems IRIS での LDAP の使用についての詳細は、"LADP ガイド" を参照してください。
ただし、アプリケーション・サーバのホストに基づいて、データ・サーバ上の ECP 接続で使用できるロールを制限することもできます。例えば、データ・サーバで、特定のアプリケーション・サーバと対話するときに使用できるロールを %DB_USER のみとすることを指定できます。この場合、アプリケーション・サーバで %DB_USER ロールが与えられているユーザは、データ・サーバの USER データベースにアクセスできますが、アプリケーション・サーバ上のユーザは、付与されたロールに関係なく、データ・サーバ上の他のデータベースにアクセスすることはできません。
データ・サーバですべての ECP 接続に対して %All 権限を引き続き付与できるようにするのではなく、クラスタ内のすべてのアプリケーション・サーバで使用可能なロールを指定することにより、クラスタを保護することを強くお勧めします。
以下は、この動作に対する例外です。
-
InterSystems IRIS は必ずデータ・サーバに %DB_IRISSYS ロールを与えます。これは、このデータ・サーバが稼働するには、IRISSYS データベースへの Read アクセスが必要なためです。つまり、アプリケーション・サーバ上で %DB_IRISSYS ロールを持つユーザは、データ・サーバの IRISSYS データベースにアクセスできます。
このアプリケーション・サーバのユーザが、データ・サーバの IRISSYS データベースにアクセスできないようにする方法には次の 2 とおりがあります。
-
%DB_IRISSYS リソースに対する特権をユーザに与えない。
-
データ・サーバで、IRISSYS データベースのリソース名を、%DB_IRISSYS 以外の名前に変更する。このとき、アプリケーション・サーバのユーザが変更後の名前を持つリソースに対する特権を持っていないことを確認してください。
-
-
データ・サーバにパブリック・リソースが存在する場合、アプリケーション・サーバのロールや、ECP 接続用に構成されたロールに関係なく、ECP アプリケーション・サーバ上のすべてのユーザはこのパブリック・リソースを使用できます。
データ・サーバ上の特定のアプリケーション・サーバからの ECP 接続に使用可能なロールを指定するには、以下の操作を行います。
-
[サービス] ページ (ポータルのホーム・ページから、[セキュリティ]、[サービス] の順に選択) に移動して、[%Service_ECP] をクリックし、[サービス編集] ダイアログを表示します。
-
制限するアプリケーション・サーバ・ホストの [編集] リンクをクリックして、[ロールの選択] 領域を表示します。
-
ホストのロールを指定するには、[使用可能] の下に一覧表示されるロールから必要なロールを選択し、右矢印をクリックして、選択したロールを [選択済み] リストに追加します。
-
[選択済み] リストからロールを削除するには、削除するロールを選択し、左矢印をクリックします。
-
[選択済み] リストにすべてのロールを追加するには、二重右矢印をクリックします。また、[選択済み] リストからロールをすべて削除するには、二重左矢印をクリックします。
-
[保存] をクリックして、IP アドレスとロールを関連付けます。
既定では、リストされたホストは %All ロールを保持していますが、その他のロールを 1 つまたは複数指定すると、この接続は指定したそれらのロールのみを持つことになります。したがって、%Operator ロールを持つホストまたは IP 範囲からの接続が持つ特権は、そのロールに関連付けられているもののみです。一方、ロールが関連付けられていない (つまり、%All ロール) ホストからの接続はすべての特権を持つことになります。
アプリケーション・サーバのホストで使用可能なロールに対する変更、およびデータ・サーバのリソース上のパブリック許可に対する変更を有効にするには、InterSystems IRIS の再起動が必要です。
セキュリティ関連のエラー報告
ECP で発生するセキュリティ関連のエラー報告の動作は、アプリケーション・サーバとデータ・サーバのどちらでチェックが失敗したか、またどのような操作が行われたかによって次のように異なります。
-
アプリケーション・サーバでチェックに失敗した場合は、直ちに <PROTECT> エラーとなります。
-
データ・サーバでの同期操作の場合は、直ちに <PROTECT> エラーとなります。
-
データ・サーバでの非同期操作の場合は、<NETWORK DATA UPDATE FAILED> エラーが遅延時間の後で表示されることがあります。このような操作には、例えば Set 操作があります。