27 プロキシ/データ・ソース間のセキュリティ構成
次の各トピックでは、プロキシとリモートLDAPサーバーの間のセキュリティを構成する方法について説明します。
プロキシとリモートLDAPサーバー間のセキュリティは次の方法で構成できます。
-
プロキシのインストール時に
.oud-proxy-setup
GUIを使用して。詳細は、Oracle Unified DirectoryのインストールのGUIを使用したプロキシ・サーバーの設定に関する項を参照してください -
プロキシのインストール後に対話モードで
dsconfig
コマンドを使用して。dsconfig
コマンドの使用方法の詳細は、「dsconfigを使用したサーバー構成の管理」を参照してください。
27.1 プロキシとリモートLDAPサーバーの間のセキュリティについて
セキュリティ管理のために、ネットワーク・グループを有効にして着信クライアント接続を分類することができます。ネットワーク・グループを使用すると、接続の分類に基づいて実行可能な操作を制限できます。
この機能を使用して、たとえば指定したIPアドレスから接続するクライアントに対してのみアクセスを制限することができます。詳細は、「dsconfigを使用したネットワーク・グループの構成」を参照してください。
プロキシとリモートLDAPサーバーの間でのセキュアなクライアント認証のために、各リモートLDAPサーバーのトラスト・ストアにプロキシの証明書をインポートする必要があります。この場合は、キーストアを手動で構成する必要があります。詳細は、「キー・マネージャ・プロバイダの構成」を参照してください。
プロキシのセキュリティは、バックエンドACIをバイパスしません。
27.2 プロキシによるセキュアな接続の管理について
プロキシは、クライアントとのセキュリティとディレクトリ・サーバーとのセキュリティを管理し、SSLとStartTLSの両方をサポートします。
セキュリティを構成する際には、プロキシがリモートLDAPサーバーにどのように接続するかを指定する必要があります。それには、プロキシによるSSLの使用について、always
、never
またはuser
を指定します。always
を指定すると、クライアントがどのような方法でプロキシに接続するかに関係なく、リモートLDAPサーバーとの接続は常にSSLを使用して保護されます。never
を指定すると、クライアントがセキュアな方法でプロキシに接続するかどうかに関係なく、プロキシとリモートLDAPディレクトリ・サーバーとの接続は保護されなくなります。user
を指定すると、プロキシとリモートLDAPディレクトリ・サーバーの間のセキュリティが、クライアントとプロキシの間のセキュリティと同じになります。たとえば、クライアントがSSLを使用して接続している場合は、リモートLDAPサーバーへの接続でもSSLが使用されます。例外として、クライアントがStartTLSを使用して接続している場合は、プロキシからリモートLDAPサーバーへの接続にSSLが使用されます。
ノート:
プロキシで使用するユーザー権限の変更をリモート・サーバーにバインドして反映させるには、リモート・サーバーのmaintain-authenticated-users
フラグをtrue
に設定する必要があります。デフォルトでは、false
に設定されています。
決定済のauthDN
によってバインドされるオープン接続の場合、import-ldif
コマンドを使用してdn: authDN
を持つエントリをインポートしても、接続が確立済のauthDN
のプロパティ(アクセス権や特権など)は変更されないことに注意してください。import-ldif
の結果によって指定されたauthDN
の新しいプロパティは、authDN
の新しいバインドのみに適用されます。このシナリオでは、maintain-authenticated-users:true
の設定は機能しません。次に例を示します。
たとえば、プロキシのシナリオでリモートLDAPサーバーのバインド・モードがuse-specific-id
に設定されており、remote-ldap-server-bind-dn
がcn=my_proxy_manager,dc=com
の場合、プロキシではauthDN='cn=my_proxy_manager,dc=com'
でバインドしたリモートLDAPサーバーとのオープン接続のプールは維持されます。この場合、リモートLDAPサーバーに格納されているユーザー・エントリcn=my_proxy_manager,dc=com
にpassword-reset
権限がない場合、プロキシ・サーバーに到達したパスワード変更操作は、権限の不足により失敗します。このため、LDIFファイルをインポートして必要なpassword-reset
権限をcn=my_proxy_manager,dc=com
ユーザー・エントリに追加することで、リモートLDAPサーバーのデータをリロードすることが必要になる場合があります。ただし、この場合も、オープン接続が設定済の場合には新しい権限は考慮されません。
詳細は、「セキュアな接続のモードの理解」を参照してください。
27.3 セキュアな接続のモードの理解
LDAPサーバーとのセキュアな接続はプロキシによって処理されます。
プロキシは、リモートLDAPサーバーへの接続を次の3つのSSLセキュリティ・モードで処理します:
-
always
-
never
-
user
これらの設定は、dsconfig --advanced
コマンドを使用して表示および編集できます。メイン・メニューから「拡張」を選択します。
remote-ldap-server-ssl-policy
プロパティは、3つのSSLセキュリティ・モードを管理します。
remote-ldap-server-ssl-policy
プロパティをalways
またはuserに設定した場合は、プロキシがリモートLDAPサーバーを信頼する必要があります。そのためには、各リモートLDAPサーバーの証明書を手動でプロキシのトラスト・ストアにインポートする必要があります。
次の各トピックでは、セキュアな接続のモードについて説明します。
27.3.1 always
セキュア・モードについて
remote-ldap-server-ssl-policy
プロパティをalways
に設定すると、クライアントがどのような方法でプロキシに接続するかに関係なく、プロキシからリモートLDAPサーバーへの接続はすべて完全にセキュアなSSL接続となります。
このモードでは、プール・サイズは1つのタイプの接続プール、すなわちセキュアなLDAPS接続を参照します。
always
セキュア・モードでは、各リモートLDAPサーバーの証明書をプロキシのトラスト・ストアにインポートする必要があります。Oracle Unified DirectoryサーバーではないバックエンドLDAPサーバーが多数存在していて、インストール時に証明書が管理されていなかった場合、プロキシのトラスト・ストアへ証明書をインポートすることが制約になる可能性があります。テスト環境の場合は、ssl-trust-all
パラメータを使用してこのプロセスを迅速化できます。このパラメータは、すべてのリモートLDAPサーバーを信頼することをプロキシにリクエストします。
27.3.2 never
セキュア・モードについて
remote-ldap-server-ssl-policy
プロパティをnever
に設定すると、プロキシからリモートLDAPサーバーへの接続はいっさいセキュアなSSL接続にならなくなります。
このモードでは、リモートLDAPサーバーのプロキシによるモニタリング接続は決してセキュアになりません。
このモードでは、プール・サイズは1つのタイプの接続プール、すなわち非保護LDAP接続を参照します。
27.3.3 user
セキュア・モードについて
remote-ldap-server-ssl-policy
プロパティをuser
に設定すると、プロキシからリモートLDAPサーバーへの接続がセキュアになるかどうかは、クライアントがどのような方法でプロキシに接続するかに関係なく、クライアントからプロキシへの着信リクエストによって決まります。
着信クライアント・リクエストがセキュアな場合、それがSSLであってもStartTLSであっても、プロキシからリモートLDAPサーバーへの接続はセキュアなSSL接続になります。
着信クライアント・リクエストがセキュアでない場合、プロキシからリモートLDAPサーバーへの接続はセキュアなSSL接続になりません。
このモードでは、プロキシとリモートLDAPサーバーの間のモニタリング接続は決してセキュアになりません。
2つの接続プールが作成されます。1つはセキュアで、もう1つは非保護です。これは、図27-1に示されています。左のシナリオでは、クライアントが非保護接続を使用してプロキシに接続し、プロキシからリモートLDAPサーバーまでは非保護の接続プールが使用されます。右のシナリオでは、クライアントがセキュアな接続(SSLとStartTLSのどちらでも)を使用してプロキシに接続し、プロキシからリモートLDAPサーバーまではセキュアなSSL接続プールが使用されます。
user
モードでは、各リモートLDAPサーバーの証明書をプロキシのトラスト・ストアにインポートする必要があります。Oracle Unified DirectoryサーバーではないリモートLDAPサーバーが多数存在していて、インストール時に証明書が管理されていなかった場合、プロキシのトラスト・ストアへ証明書をインポートすることが制約になる可能性があります。テスト環境では、ssl-trust-all
パラメータを使用してこのプロセスを迅速化できます。このパラメータは、すべてのリモートLDAPサーバーを信頼することをプロキシにリクエストします。
remote-ldap-server-ssl-policy
プロパティがuser
に設定されている場合、プール・サイズは2つのタイプの接続プール、すなわち非保護のLDAP接続とセキュアなLDAPS接続を参照します。たとえば、図27-2のようにpool-initial-size
で接続数が5に設定された場合、LDAP拡張が初期化されるときに、5個のLDAP接続からなるプールが1つと5個のLDAPS接続からなるプールが1つ(つまり合計10個の接続)が存在することになります。この初期化の後、各プールは各自について設定されたパラメータに基づいて、それぞれ個別に進化していきます。
ノート:
デフォルトでは、pool-initial-size
は10(接続数)に設定されています。
27.4 プロキシとデータ・ソースの間でのdsconfig
を使用したセキュリティ構成
dsconfig
ツールは、証明書認証によって保護された接続を通じてサーバーにアクセスします。dsconfig
を非対話モードで実行する場合(dsconfig -n
を使用して)、トラスト・ストア・パラメータの指定は、そのコマンドをローカルとリモートのどちらで実行するかによって決まります。
コマンドをローカルまたはリモートで実行する方法の詳細は、「dsconfigコマンドの使用」を参照してください。
dsconfigを使用したその他の構成は、次の各項で説明します。
27.4.1 dsconfig
を使用したプロキシとディレクトリ・サーバー間のセキュリティの構成
このタスクでは、リモートLDAPサーバーへの接続のセキュリティを構成するために必要な主要なステップについて説明します。プロセスが、プロキシとクライアントの間のセキュリティを構成する場合のプロセスに似ている箇所では、関連する手順への参照が示されています。
dsconfig
を使用してプロキシとディレクトリ・サーバーの間のセキュリティを構成するには、次のステップを実行します。
-
プロキシからリモートLDAPサーバーへクライアント認証を渡す必要がない場合は、ステップ2に進んでください。
プロキシからリモートLDAPサーバーへクライアント認証を渡す必要がある場合は、次のサブステップを実行してください:
-
リモートLDAPサーバー接続のキーストアを構成します。
これを行うには、Javaコマンド
keytool
を使用してプロキシ・サーバー上に証明書を生成します。キーストアは手動で構成する必要があります。詳細は、「キー・マネージャ・プロバイダの構成」を参照してください。証明書に自己署名するか、外部の認証局による署名を取得します。詳細は、「キー・マネージャ・プロバイダの構成」を参照してください。
-
リモートLDAPサーバー接続のキーストアについて、プロキシ上のキー・マネージャ・プロバイダを構成します。
詳細は、「キー・マネージャ・プロバイダの構成」を参照してください。このキー・マネージャ・プロバイダは、クライアントへのセキュアな接続を処理するために使用するキー・マネージャ・プロバイダとは別にすることができます。
-
リモートLDAPサーバーがクライアント認証を必要とする場合は、プロキシの証明書を各リモートLDAPサーバーのキーストアにインポートする必要があります。
Oracle Unified Directory上での証明書のインポートとエクスポートの方法は、「キー・マネージャ・プロバイダの構成」を参照してください。
-
-
プロキシがリモートLDAPサーバーとの間にセキュアな接続を確立できるようにするために、トラスト・ストアを構成します。
セキュアな接続を必要とするすべてのリモートLDAPサーバーについて、各サーバーの証明書をプロキシのトラスト・ストアにインポートする必要があります。これらのリモートLDAPサーバーの証明書はすべて、単一のプロキシ・トラスト・ストアにインポートすることも、複数のプロキシ・トラスト・ストアに分散させることもできます。プロキシのトラスト・ストアは、インポートするリモートLDAPサーバーの証明書の数だけ使用できます。
リモートLDAPデータ・ソースへのセキュアな接続をターゲットとするLDAPプロキシ拡張は、その構成の中で適切なトラスト・ストア・マネージャを参照する必要があります。LDAPプロキシ拡張はこの参照により、インポートされたリモートLDAPサーバーの証明書にアクセスして、セキュアな接続を承認できるようになります。
-
各トラスト・ストアは、プロキシ信頼マネージャ・プロバイダを必要とします。
プロキシ信頼マネージャ・プロバイダのリストを表示するには、
dsconfig list-trust-manager-providers
コマンドを使用します。たとえば:$
dsconfig
-h
localhost-p
4444-D
"cn=Directory Manager" -j pwd-file-X
-n
\list-trust-manager-providers
プロキシ信頼マネージャ・プロバイダを作成するには、
dsconfig create-trust-manager-provider
コマンドを使用します。たとえば:$
dsconfig
-h
localhost-p
4444-D
"cn=Directory Manager" -j pwd-file-X
-n
\create-trust-manager-provider \
--provider-name Backend\ Servers \
--type file-based --set enabled:true \
--set trust-store-file:/localhost/config/backend-servers-truststore \
--set trust-store-type:JKS \
--set trust-store-pin-file:/installPath/config/backend-servers-truststore.pin
-
リモートLDAPサーバーの証明書をプロキシのトラスト・ストアにインポートします。
27.4.2 LDAP拡張の構成可能なセキュリティ関連プロパティについて
dsconfig
を使用してリモートLDAPサーバーへの接続を管理するときに、LDAP拡張のセキュリティ接続プロパティのいくつかを構成できます。
LDAP拡張の管理の詳細は、「リモートLDAPサーバーとの通信の構成」を参照してください。直接的または間接的にセキュリティに関連する構成可能なプロパティには、次のものが含まれます:
-
remote-ldap-server-ssl-policy
この重要な値は、プロキシとリモートLDAPサーバーの間の接続の全体的なセキュリティ・モードを制御します。その使用方法については、「セキュアな接続のモードの理解」で説明しています。
-
pool-increment
remote-ldap-server-ssl-policy
プロパティをuser
に設定すると、2つの接続プールが作成され、各プールのサイズの増分変更がpool-increment
に設定されます。このプロパティの詳細は、「LDAPサーバー拡張のプロパティの変更」を参照してください。 -
pool-initial-size
remote-ldap-server-ssl-policy
プロパティがuser
に設定されると、2つの接続プールが作成され、各プールの初期サイズ、つまり最小サイズがpool-initial-size
に設定されます。したがってこの場合は、pool-initial-size
で指定された合計接続数の2倍の数の接続が最初に存在することになります。詳細は、「LDAPサーバー拡張のプロパティの変更」を参照してください。 -
pool-max-size
remote-ldap-server-ssl-policy
プロパティがuser
に設定されると、2つの接続プールが作成され、各プールの最大サイズがpool-max-size
に設定されます。デフォルト値は接続数1000です。このプロパティの詳細は、「LDAPサーバー拡張のプロパティの変更」を参照してください。
-
remote-ldap-server-ssl-port
プロキシからリモートLDAPサーバーへのSSL接続のポート番号です。
-
ssl-client-alias
クライアントの認証のためにキーストアが作成されるときに、複数のキーがそのキーストアに保存されることがあります。このプロパティは、どのキーを使用するかを指定するために使用します。キーストアの詳細は、「SSLの迅速な起動と実行」および「キー・マネージャ・プロバイダの構成」を参照してください。
-
ssl-key-manager-provider
LDAP拡張のために使用するキー・マネージャ・プロバイダを指定します。キー・マネージャ・プロバイダは必須ではなく、リモートLDAPサーバーがクライアント認証用に構成されている場合に使用できます。参照先のキー・マネージャ・プロバイダは、有効になっている必要があります。キー・マネージャ・プロバイダの詳細は、「キー・マネージャ・プロバイダの構成」を参照してください。
-
ssl-trust-all
このパラメータを
true
に設定すると、すべてのリモートLDAPサーバーが信頼されます。デフォルト値はfalse
です。この値をtrue
に設定すると、リモートLDAPサーバーから証明書をインポートする必要はなくなりますが、接続がセキュアでなくなります。ノート:
インタラクティブな
dsconfig --advanced
コマンドは、使用できる信頼マネージャ・プロバイダとしてブラインド信頼を提供しますが、ブラインド信頼はプロキシ・サーバーについてはサポートされていません。証明書をインポートする必要をなくすには、かわりにssl-trust-all
パラメータをtrue
に設定します。その結果、デプロイメントがセキュアでなくなるため、この設定は本番環境ではお薦めできません。テスト用にのみ使用してください。remote-ldap-server-ssl-policy
をnever
に設定すると、ssl-trust-all
パラメータの値は無意味になります。この場合、プロキシとの間のすべての接続がセキュアでなくなります(暗号化されません)。remote-ldap-server-ssl-policy
の詳細は、「セキュアな接続のモードの理解」を参照してください。 -
ssl-trust-manager-provider
LDAP拡張のためにどの信頼マネージャ・プロバイダを使用するかを指定します。信頼マネージャ・プロバイダは、
ssl-trust-all
パラメータがtrue
に設定されていないかぎり必須です。参照先の信頼マネージャ・プロバイダは、有効になっている必要があります。 -
ssl-protocol
リモートLDAPサーバーとのSSL通信に使用されるSSL/TLSプロトコルを制御します。このプロパティはシステム・デフォルト値を取り、必要に応じて有効なSSL/TLSプロトコルで上書きできます。システム・デフォルト値の詳細は、「Oracle Unified DirectoryがサポートしているTLSプロトコルおよび暗号スイート」を参照してください。
-
ssl-cipher-suite
リモートLDAPサーバーとのSSL通信に使用されるSSL/TLS暗号スイートを制御します。このプロパティはシステム・デフォルト値を取り、必要に応じて有効なSSL/TLS暗号スイートで上書きできます。システム・デフォルト値の詳細は、「Oracle Unified DirectoryがサポートしているTLSプロトコルおよび暗号スイート」を参照してください。