LDAP 認証¶
Virtual DataPort では、LDAP (Lightweight Directory Access Protocol) を使用してクライアントを認証できます。LDAP 認証を使用するように構成されている Virtual DataPort は、ユーザーの認証を LDAP サーバーに委任します。 通常 認証を使用するメリットは、Microsoft Windows Active Directory などの LDAP サーバーを使用してユーザーを認証できることです。これによりユーザーとその権限の管理が簡単になります。
Virtual DataPort で LDAP 認証を使用するには、LDAP サーバーでユーザーが割り当てたグループの名前を使用して、Virtual DataPort 内でのロールを定義する必要があります。その後、これらのロールに権限を割り当てます。
実行時にユーザーが Virtual DataPort に接続するとき、VDP は LDAP サーバーに接続してユーザーの資格情報を確認します。資格情報が正しければ、サーバーはこのユーザーに割り当てられているロールの名前を取得します。ユーザーが実行権限を与えられる操作は、Virtual DataPort で定義されているロールに割り当てられた権限に基づいて決定されます。
注釈
クライアントが Kerberos 認証を使用して Virtual DataPort に接続するときは、データベースの認証タイプは重要ではありません。ユーザーに付与される権限は、Kerberos 構成ダイアログで選択された LDAP サーバーから取得された、そのユーザーのロールに依存するためです (「 Virtual DataPort サーバーでの Kerberos 認証の設定 」のセクションを参照)。
ユーザーが LDAP 認証を使用して Virtual DataPort に接続しようとすると、サーバーは以下のことを行います。
ユーザー名が Virtual DataPort ユーザーに属しているかどうかを確認します。属している場合は、そのパスワードが正しいことを確認します。正しくなければ、エラーを返します。
ユーザー名が Virtual DataPort ユーザーでなければ、LDAP サーバーに接続して、そのユーザーの資格情報を確認します。資格情報が正しければ、ユーザーのロールを取得します。資格情報が正しくなければ、エラーを返します。
「user1」という名前の Virtual DataPort ユーザーが存在し、同じユーザー名のユーザーが LDAP サーバーに存在する場合、サーバーは、ローカルユーザー「user1」に割り当てられている権限を使用します。
Virtual DataPort では、サーバー全体またはデータベースのセットのみに対して LDAP 認証を有効にできます。グローバル LDAP 認証では、すべての Virtual DataPort データベースに対して同じ LDAP サーバーを使用します。認証タイプを編集することで、Virtual DataPort データベースに対してさまざまな LDAP サーバーを構成できます。その方法については、「 Virtual DataPort データベースに対する LDAP 認証の有効化 」のセクションを参照してください。
LDAP 認証を有効にするための初期構成¶
LDAP 認証をグローバルに有効にする場合も、データベースごとに有効にする場合も、以下の手順を実行する必要があります。
LDAP サーバーで以下を実行します。
ユーザーに割り当てたい Virtual DataPort ロールごとにノードを作成します。
これらのノードごとに、ノードが表すロールの名前を保存する属性を作成します。この属性の名前は、これらのすべてのノードで同じでなければなりません。
注釈
実行時に、ユーザーが LDAP 認証を使用してデータベースに接続しようとすると、サーバーはユーザーに割り当てられたロールの名前を LDAP サーバーから取得します。LDAP サーバーから取得されたロール名のうち、Virtual DataPort に存在しないものは無視されます。ロール名を比較する際、大文字と小文字は区別されます。サーバーの「識別子の文字セット」 ([Administration] メニュー > [Server configuration] の [Identifiers charset] タブ) が制限されている場合、ユーザーから取得したロールは、比較する前に小文字に変換されます (ロールが制限モードでインポートされた場合も含みます。この場合、比較では大文字と小文字は区別されないと言えます)。
これらのノードのそれぞれで、このロールを持つユーザーの識別名を値とする属性を作成します。つまりロールのノードは同じ名前の N 個の属性を持ち、各属性の値がユーザーの識別名である必要があります。
Virtual DataPort では
serveradmin
という特別なロールを定義します。このロールが割り当てられると、Virtual DataPort サーバーの管理者ユーザーとしての権限が付与されます。ただし、JMX 経由で Virtual DataPort に接続することはできません。serveradmin
ロールをユーザーに付与する場合は、このロールに対して上記の手順を実行します。
ユーザーの資格情報をチェックするために使用する LDAP サーバーに接続する LDAP データソースを作成します (LDAP データソースの作成方法については、「 LDAP ソース 」のセクションを参照してください)。
注釈
組織がマルチドメイン環境を採用している場合、LDAP データソースで [Use GSSAPI SASL authentication mechanism] チェックボックスをチェックする必要があります。
また、LDAP サーバー (通常は Active Directory) の管理者は、ドメイン間の信頼関係を確立して、すべてのドメインからユーザーを認証できるようにする必要があります。
Virtual DataPort でロールを作成し (「 ロールの作成 」のセクションを参照)、ロールに権限を割り当てます。
これらのロールの名前は、ユーザーの認証時に LDAP サーバーから取得する名前と一致している必要があります。
[Import Roles from LDAP] ウィザード ウィザードを使用すると、LDAP サーバーで定義されたすべてのロールを Virtual DataPort で簡単に作成できます。ただし、インポートされたロールに権限を割り当てる必要があることに変わりはありません。このウィザードの使用方法については、「 ロールの作成 」のセクションを参照してください。
ユーザーにロール「serveradmin」、「assignprivileges」、または デフォルトロール のいずれかを付与する場合に、グループをそれらと同じ名前で Active Directory に作成して、そのグループにユーザーを追加することはできません。
たとえば、Active Directory に「serveradmin」というグループを作成し、このグループにユーザーを追加した場合、このユーザーが Virtual DataPort にログインすると、ユーザーにはこのロールがありません。これは、ユーザーがログインしたときに、Active Directory で割り当てられた、「デフォルトロール」と同じ名前のグループを Virtual DataPort が無視するためです。
この動作は、Denodo の管理者のみがユーザーに管理権限を付与するようにするためです。そうしなければ、Active Directory の管理者が、Denodo の管理者の承認を得ずに、ユーザーに対して特別な権限を付与する可能性があります。
Virtual DataPort サーバーに対するグローバル LDAP 認証の有効化¶
Virtual DataPort でグローバル LDAP 認証を設定するには、Administration Tool に管理者ユーザーとしてログインし、[Administration*] メニュー > [Server configuration] > [Server authentication] をクリックし、[LDAP] タブをクリックします。

グローバル LDAP 認証の有効化¶
以下のデータを指定する必要があります。
Database: LDAP データソースを作成した Virtual DataPort のデータベースを選択します。
LDAP data source: データソースを選択します。
User base: ユーザーを表すノードを検索するためのスコープとして使用する LDAP サーバーのノード。
[User base] ボックスの横にある
ボタンをクリックすると、複数の「ユーザーベース」を入力することができます。複数の「ユーザーベース」が存在する場合、サーバーは最初の「ユーザーベース」スコープ内でユーザーのノードを検索します。ユーザーを表すノードが見つからなければ、2 番目の「ユーザーベース」スコープで検索します。それでも見つからなければ、3 番目のスコープを検索します (以降同様)。サーバーがユーザーを表すノードを見つけられなかった場合は、そのユーザーへのアクセスが拒否されます。
Attribute with user name: ユーザーを表すノード内の、ユーザーのユーザー名を含む属性の名前。
User search pattern: サーバーに接続しようとしているユーザーを表すノードを取得するために実行される LDAP クエリの生成に使用されるパターン。
Role extraction method: [Do not extract roles from the LDAP source and use only roles from external users created in VDP] チェックボックスを選択した場合、LDAP サーバーからロールは取得されません。この構成は、LDAP サーバーの代わりに Virtual DataPort サーバーでロール割り当てを管理する場合に役立ちます (「 外部ユーザー 」のセクションを参照)。このオプションを選択した場合、以下に示す 3 つのフィールドの値を指定する必要はありません。
Role base: このデータベースのユーザーが持つことのできるロールを表すノードを検索するためのスコープとして使用される LDAP サーバーのノード。
[Role base] ボックスの横にある
ボタンをクリックすると、複数の「ロールベース」を入力することができます。「ロール検索」パターンで形成された LDAP クエリは、「ロールベース」スコープごとに実行されます。
Attribute with role name: ロールを表すノード内の、ロールの名前を含む属性の名前。
Role search pattern: ユーザーのロールを表すノードを取得するために実行される LDAP クエリの生成に使用するパターン。このパターンには、トークン
@{USERDN}
または@{USERLOGIN}
を含める必要があります (両方を含めることはできません)。オプションで、@{OBJECT_SID}
を含めることもできます。@{USERDN}
は、このデータベースに接続しようとしているユーザーの識別名に置換されます (例: CN=john,CN=Users,DC=acme,DC=loc)。@{USERLOGIN}
は、このデータベースに接続しようとしているユーザーのログイン名に置換されます (例: john)。@{OBJECT_SID}
は、Active Directory サーバーのユーザーのオブジェクトセキュリティ ID(「S-1-5-21-1111111111-2222222222-3333333333-4444」など) で置き換えられます。この値は、他のドメインに属するグループまたはユーザーを取得するのに役立ちます (マルチドメインアーキテクチャでのみ適用可能)。
Assign "allusers" role for every connected user: 選択すると、サーバーは正常にログインしたすべてのユーザーにロール「allusers」の権限を付与します。このロールが LDAP サーバーのユーザーに割り当てられていない場合も同様です。
たとえば、特定のデータベースに対する読み取りアクセス権をすべてのユーザーに付与したい場合は、このオプションを選択し、この権限を「allusers」ロールに割り当てます。
このオプションを選択しても、LDAP サーバー内のユーザーに付与されたロールが変更されることはありません。つまり、後からこのチェックボックスのチェックをはずすと、ログインしているユーザーは「allusers」ロールで付与される権限を持たなくなります。
Session attribute mapping: 認証されたユーザーから取得する LDAP 属性とユーザーセッションに追加される属性の間にマッピングを定義できます。Virtual DataPort 上の名前は Session Attribute 列で表され、LDAP 上の名前は Authentication Attribute で指定されます。
たとえば、LDAP ユーザーに department 属性がある場合、 user_department セッション属性へのマッピングを作成でき、このセッション属性は Virtual DataPort でユーザーセッションに追加されます。user_department 属性には、 GETVAR などの関数からアクセスできるほか、 グローバルセキュリティポリシー からユーザーのセッションの属性としてアクセスできます。
これらの変更を適用するために再起動する必要はありません。
ドメインの付いたログイン名 (「jsmith@contoso.com」など) で Virtual DataPort にログインするユーザーがいる場合、次のコマンドを実行し、Virtual DataPort を再起動し変更を適用します。
SET 'com.denodo.vdb.security.UserManager.UseLDAPDomainName' = 'true';
これは、サーバーではなく特定のデータベースで LDAP 認証を有効にする場合にも当てはまります。
注釈
LDAP データソースで [Use GSSAPI SASL authentication mechanism] を選択した場合、ドメインの付いたログイン名を使用するユーザーがいない場合でも、このコマンドを実行します。
Virtual DataPort データベースに対する LDAP 認証の有効化¶
Virtual DataPort では、データベースに対する LDAP 認証を使用できます。既存のデータベースに対して LDAP 認証を有効にしたり、LDAP 認証を使用する新しいデータベースを作成したりできます。どちらの処理も似ています。最初に Virtual DataPort Administration Tool を開き、[Administration] メニューで [Database management] をクリックします。次に、既存のデータベースに対して LDAP 認証を有効にするために、そのデータベースを選択して [Edit] をクリックします。LDAP 認証を使用するデータベースを作成する場合は、[New] をクリックします。

LDAP 認証を使用する新規データベースの作成¶
以下のデータを指定する必要があります。
Name: データベースの名前。
Description: データベースの説明 (オプション)。
Identifiers charset: [Default] を選択した場合、データベースではサーバー全体に対して構成された設定が使用されます (「 ID の文字セット」のセクションを参照)。『VQL ガイド』の「 エレメント名 (識別子) 」のセクションでは、 Restricted と Unicode 文字セットの違いを詳しく説明しています。
認証タイプ: LDAP 。
「 Virtual DataPort サーバーに対するグローバル LDAP 認証の有効化 」のセクションでは、フォームの以下のフィールドの意味を説明しています。
Use data source credentials to obtain user roles: ユーザーが LDAP 認証を使用してデータベースに接続しようとすると、サーバーはユーザーが入力したパスワードを検証し、LDAP クエリを実行して、ユーザーのロールを取得します。
このチェックボックスがチェックされている場合、サーバーは、このダイアログの「LDAP データソース」リストで選択された LDAP データソースの資格情報を使用して、この LDAP クエリを実行します。
このチェックボックスのチェックがはずされている場合、このデータベースに接続しようとしているユーザーの資格情報を使用して LDAP クエリが実行されます。
LDAP 認証プロセス¶
このセクションでは、Virtual DataPort がデータベースに接続するユーザーを LDAP 認証を使用して認証する方法について説明します。
以下の説明は、ユーザーが Kerberos 認証を使用してサーバーに接続する場合や、SAML 認証を使用して Web サービスに接続する場合にも当てはまります。
たとえば、LDAP 認証を使用するデータベースを作成し、ユーザー「john」がこのデータベースへの接続を試みるとします。
サーバーは、ユーザー「john」を表すノードを取得する LDAP クエリを実行します。この LDAP クエリは、「ユーザーベース」スコープ内の「ユーザー検索パターン」を使用して、「Attribute with user name」属性の値が、ユーザー (この場合「john」) が指定したユーザー名であるノードを検索します。クエリからノードが返されず、複数の「ユーザーベース」が存在する場合、サーバーは同じ検索を 2 番目の「ユーザーベース」で実行します。そこでノードが見つからない場合は、3 番目の「ユーザーベース」を使用します (以降同様)。ノードが見つからなかった場合、サーバーはそのユーザーへのアクセスを拒否します。
これらのクエリを実行するために、サーバーはデータソースの資格情報を使用して LDAP サーバーに接続します。
注釈
LDAP ロールキャッシュが構成されている場合、Virtual DataPort は LDAP サーバーにクエリしません。詳細については、「 LDAP ロールキャッシュを有効化 」を参照してください。
ユーザーの LDAP ノードを取得後、サーバーはこのノードの識別名 (DN) とユーザーが入力したパスワードを使用して、LDAP サーバーへのログインを試みます。パスワードが LDAP サーバーによって拒否されると、サーバーはユーザーへのアクセスを拒否します。
ユーザーが Kerberos 認証を使用してサーバーに接続した場合や、SAML 認証を使用して Web サービスに接続した場合、この手順は省略されます。この時点でユーザーの資格情報はすでに検証されており、このプロセスはユーザーに割り当てられたロールを取得するためのものだからです。
ユーザーの資格情報が正しく、[Don't extract roles from LDAP source (no role configuration)] チェックボックスを選択しない場合、サーバーはそのユーザーのロールを取得します。取得するために、LDAP クエリを実行します。クエリは、[Role search pattern] のトークン
@{USERDN}
または@{USERLOGIN}
を置き換えて作成されます。この例では、パターンには「@{USERDN}」トークンがあり、このトークンはユーザーの LDAP ノードの識別名に置換されます。その結果、次のようなクエリが作成されます:
(&(member=CN=john,CN=Users,DC=acme,DC=loc)(objectClass=group))
ユーザーのロールを表すノードを取得するために、サーバーは「ロールベース」スコープでこの LDAP クエリを実行します。複数の「ロールベース」がある場合、LDAP クエリはすべての「ロールベース」スコープから実行され、結果は各クエリの結果をまとめたものになります。
[Use data source credentials to obtain user roles] チェックボックスがチェックされている場合、サーバーは、データベースに関連付けられている LDAP データソースの資格情報を使用して、この LDAP クエリを実行します。チェックボックスのチェックがはずされている場合は、このデータベースに接続しようとしているユーザーの資格情報を使用して、クエリが実行されます。ユーザーが Kerberos 認証を使用してサーバーに接続した場合や、SAML 認証を使用して Web サービスに接続した場合も、サーバーは LDAP データソースの資格情報を使用して、この LDAP クエリを実行します。
ロールのノードを取得後、サーバーは別の LDAP クエリを実行して、ユーザーに割り当てられているロールの名前を、これらのノードの「Attribute with Role name」属性から取得します。
データベースの構成の [Use data source credentials to obtain user roles] チェックボックスがチェックされている場合、サーバーはデータソースの資格情報を使用して、このクエリを実行します。このチェックボックスのチェックがはずされている場合は、このデータベースに接続しようとしているユーザーの資格情報を使用して、この LDAP クエリが実行されます。ユーザーが Kerberos 認証を使用してサーバーに接続した場合や、SAML 認証を使用して Web サービスに接続した場合も、サーバーは LDAP データソースの資格情報を使用して、この LDAP クエリを実行します。
注釈
LDAP サーバーから取得されたロール名が Virtual DataPort に存在しない場合、そのロール名は無視され、ユーザーは存在する他のロールの権限を持つことになります。LDAP サーバーから取得されたロール名が 1 つも Virtual DataPort に存在しない場合、「標準」ユーザーはこのデータベースに接続できません (「管理者」ユーザーは、こうした認証を回避できるため、このデータベースに接続できます)。
注釈
認証プロセスの最初のステップでは、サーバーは LDAP サーバーに接続してユーザーのノードを検索します。そのためには、以下のことを行う必要があります。
有効な「ログイン情報」と「パスワード」を使用して「LDAP データソース」を構成します。これにより LDAP データソースは LDAP サーバーに接続して適切なノードを検索できるようになります。
または、匿名クエリを許可するように LDAP サーバーを構成します。
実際の環境でこれらのいずれもが不可能な場合は、以下の手順に従って、認証プロセスの最初の手順を省略することができます。ただし、この場合、ユーザー名を保存する LDAP ノードの属性は「cn」でなければなりません。
[Attribute with role name] に「cn」と入力します。
[User search pattern] に何も入力されておらず、[Attribute with role name] が「cn」の場合、[User base] の値がユーザーの識別名を作成するために使用されます。
この例では、ユーザー「john」が「ユーザーパターン」
CN=Users,DC=acme,DC=loc
でデータベースへの接続を試みる場合、LDAP サーバーへの接続に使用される識別名はCN=john,CN=Users,DC=acme,DC=loc
になります。サーバーは、この文字列 (識別名) とユーザーが入力したパスワードを使用して、LDAP サーバーへの接続を試みます。接続に成功した場合、ユーザーが入力したパスワードは正しかったということです。
付録「 Active Directory または他の LDAP サーバーの問題のデバッグに役立つツール 」には、Active Directory および他の LDAP サーバーに関連する問題をデバッグするのに便利なツールの一覧が記載されています。
LDAP 認証と動的グループを使用するデータベースの構成¶
一部の LDAP サービスでは、グループのメンバーを 2 つの方法 (静的または動的) で定義します。
静的グループ: メンバーオブジェクトを明示的に列挙します。
動的グループ: メンバーを列挙するのではなく、グループメンバーに対してのみ一致する LDAP URL を定義します。動的グループでは、メンバーは共通の属性または
memberURL
フィルタで定義された属性のセットを共有します。
ユーザーが LDAP 認証を使用するデータベースに接続すると、サーバーはそのユーザーのロールを確認するために、そのユーザーが所属するグループを取得します。
デフォルトでは、Virtual DataPort は静的グループのみをサポートします。このセクションでは、LDAP 動的グループと連携できるように Virtual DataPort を構成する方法を説明します。
LDAP 認証を使用するすべてのデータベースを動的グループと連携させるか、一部のデータベースのみを連携させるかによって、いくつかの異なる方法で構成することができます。LDAP で認証されたデータベースは、静的グループまたは動的グループのいずれかと連携できます。両方のグループと連携することはできません。
オプション 1: LDAP 認証されたすべてのデータベースが、静的グループではなく動的グループと連携します 。
Administration Tool の VQL シェルで以下のステートメントを実行します。
SET 'com.denodo.vdb.security.LDAPUserGroupRetriever.instanceClassName'
= 'com.denodo.vdb.security.DynamicLDAPUserGroupRetriever';
SET 'com.denodo.vdb.security.DynamicLDAPUserGroupRetriever.memberURL'
= '<member URL>';
SET 'com.denodo.vdb.security.DynamicLDAPUserGroupRetriever.userMatchPattern'
= '<LDAP filter>';
2 番目のステートメントの <memberURL>
は、ユーザーの動的グループの取得に使用される LDAP URL を含む属性です。
3 番目のステートメントの <LDAP filter>
は、LDAP ユーザーが Virtual DataPort に接続しようとしているユーザーと同じ場合に一致するフィルタです (このプロパティには通常、 @{USERLOGIN}
変数と @{USERDN}
変数が含まれます)。
<member URL> の例: memberURL
<LDAP filter> の例: &(uid=@{USERLOGIN})
オプション 2: LDAP 認証されたすべてのデータベースが、1 つを除く動的グループと連携します 。
VQL シェルで以下のステートメントを実行します。
# This statement makes the database <databaseName> work with static
# groups.
SET 'com.denodo.vdb.security.LDAPUserGroupRetriever.instanceClassName[.<databaseName>]' =
'DefaultLDAPUserGroupRetriever';
SET 'com.denodo.vdb.security.LDAPUserGroupRetriever.instanceClassName'
= 'com.denodo.vdb.security.DynamicLDAPUserGroupRetriever';
SET 'com.denodo.vdb.security.DynamicLDAPUserGroupRetriever.memberURL'
= '<member URL>';
SET 'com.denodo.vdb.security.DynamicLDAPUserGroupRetriever.userMatchPattern'
= '<LDAP filter>';
最初のステートメント <databasename>
は、静的グループに属するユーザーを認証する LDAP 認証されたデータベースの名前です。他のデータベースは動的グループのユーザーを認証します。
オプション 3: 1 つ以上の LDAP 認証されたデータベースが、動的グループと連携します。他の LDAP 認証されたデータベースは静的グループと連携します 。
VQL シェルで以下のステートメントを実行します。動的グループを使用するデータベースごとに、これらのステートメントを実行します。
SET 'com.denodo.vdb.security.LDAPUserGroupRetriever.instanceClassName[.<databaseName>]'
= 'DynamicLDAPUserGroupRetriever';
SET 'com.denodo.vdb.security.DynamicLDAPUserGroupRetriever.<databaseName>.memberURL'
= '<member URL>';
SET 'com.denodo.vdb.security.DynamicLDAPUserGroupRetriever.<databaseName>.userMatchPattern'
= '<LDAP filter>';
ユーザーが LDAP 認証されたデータベースに接続するたびに、サーバーは LDAP クエリを実行して、ユーザーが所属するグループを取得します。データベースが動的グループと連携するように構成されている場合、サーバーは静的グループと連携している場合よりも多くの LDAP 検索を実行します。これは、動的グループと連携する場合、サーバーはグループごとに追加の LDAP 検索を開始するためです。多くのグループがあると、サーバーはユーザーがそのデータベースに接続するたびに多くの LDAP 検索を実行します。
動的グループの設定例
以下の手順に従い、動的グループを使用してユーザーを認証する、「dynamicdb」というデータベースを作成します。
VQL シェルで以下のステートメントを実行します。
SET 'com.denodo.vdb.security.LDAPUserGroupRetriever.instanceClassName' = 'com.denodo.vdb.security.DefaultLDAPUserGroupRetriever'; SET 'com.denodo.vdb.security.LDAPUserGroupRetriever.instanceClassName.dynamicdb' = 'com.denodo.vdb.security.DynamicLDAPUserGroupRetriever'; SET 'com.denodo.vdb.security.DynamicLDAPUserGroupRetriever.dynamicdb.memberURL' = 'memberURL'; SET 'com.denodo.vdb.security.DynamicLDAPUserGroupRetriever.dynamicdb.userMatchPattern' = '(&(uid=@{USERLOGIN}))';
サーバーを再起動し、以下のステートメントを使用してデータベースを作成します。
CREATE OR REPLACE DATABASE dynamicdb 'Description: LDAP-Authenticated database (dynamic groups)' AUTHENTICATION LDAP admin.ldapds_bertone USERBASE = 'ou=users,dc=denodo,dc=com' USERATTRIBUTENAME = 'uid' USERSEARCH = '(objectClass=person)' ROLEBASE = 'dc=denodo,dc=com' ROLEATTRIBUTENAME = 'cn' ROLESEARCH = '(objectClass=groupOfURLs)';
LDAP ロールキャッシュを有効化¶
「LDAP ロールキャッシュ」を有効にした場合、Virtual DataPort は、Virtual DataPort にログインした各ユーザーのロールを LDAP サーバー (Active Directory など) から取得した場合、そのロールを限られた期間だけメモリ内に保存します。これには、Kerberos 認証、OAuth、および SAML を使用して LDAP サーバーからロールを取得するオプションを選択しているユーザー、またはユーザーとパスワードを使用して LDAP サーバーからロールを取得するユーザーが該当します。Virtual DataPort が LDAP サーバー (Active Directory など) からロールを取得する必要があるのはユーザーが最初にログインしたときのみなので、同じユーザーが次回ログインするときのコネクション時間が短くなります。この機能が無効な場合、Virtual DataPort はログインが試行されるたびに LDAP サーバーにクエリします。
この機能は、デフォルトで無効になっています。これを有効にするには、管理者アカウントでログインして、次のコマンドを実行します。
SET 'com.denodo.vdb.security.LDAPRolesCache.UseCache' = 'true';
この変更を適用するために Virtual DataPort を再起動する必要はありません。この機能を無効にするには、上記のコマンドを、プロパティを「false」に設定して、実行します。
ユーザーのロールは一定期間 (デフォルトは 10 分) メモリに保存されます。メモリに保存されてから 10 分が経過すると、このユーザーのロールは削除されます。次にこのユーザーがコネクションを開いたときは、再びこのユーザーのロールを LDAP サーバーから取得してメモリに保存します。
LDAP ロールキャッシュの設定を変更するには、VQL シェルで次のステートメントを実行します。
-- To modify for how long the roles of a user are stored in memory.
-- Default value: 10 minutes
SET 'com.denodo.vdb.security.LDAPRolesCache.ExpirationTimeMinutes' = '5';
-- To modify the time, in milliseconds, how often the tasks that removes the expired entries from this cache runs.
-- Default value: 60000 (1 minute)
SET 'com.denodo.vdb.security.LDAPRolesCache.CacheMaintenancePeriodMilliseconds' = '120000';