Resource Manager: ルールの評価に使用できるフィールド¶
ここでは、Resources Manager のルールの条件で使用できる属性のリストを示します。以下のフィールドに加えて、認証構成で定義した任意のセッション属性を使用できます。
access_interface
: サーバーに接続しているクライアントのタイプ。表「 「access interface」属性の取り得る値 」に、この属性の想定される値のリストを示します。Data Catalog のユーザーにのみ適用されるルールを作成するには、
access_interface in ('Data-Catalog', 'JDBC')
という条件を指定してルールを作成します。Data Catalog は、一部のリクエストを実行する際に、独自のアクセスインターフェイスや標準 JDBC アプリケーションなどのアクセスインターフェイスを使用するので、「JDBC」も指定する必要があります。これは、Scheduler、Diagnostic & Monitoring Tool、および Solution Manager にも適用されます。
admin_user
: ユーザーが管理者ユーザーの場合またはユーザーのロールがserveradmin
の場合はtrue
、そうでない場合はfalse
。client_ip
: クライアントの IP アドレス。Data Catalog、Design Studio、Web サービスのクライアントの場合、これは最終クライアント、つまり HTTP リクエストを送信したクライアントの IP アドレスです。connection_start_time
: コネクションが開かれた日時。これは、1 日の特定の時間帯に新しいコネクションを開くことを禁止する場合に役に立ちます。注釈
サーバーがクエリを受信した日時に基づくルールを作成するには、「connection_start_time」の代わりに、「CURRENT_TIMESTAMP」関数を使用します。
1 日または 1 週間の特定の時間帯にクエリを禁止する方法の例については、以下のサブセクションで説明します。
database_name
: ユーザーが接続しているデータベース。intermediate_client_IP
(Data Catalog、Design Studio、SOAP、REST、およびグローバル RESTful のいずれかの Web サービスの場合のみ): サービスが動作している IP アドレス。Denodo に組み込まれている Web コンテナーにサービスがデプロイされている場合は、Virtual DataPort サーバーの IP と同じ IP になります。それ以外の場合は、サービスがデプロイされている JEE コンテナーの IP アドレスになります。
JMS_queue_name
(JMS コネクションの場合のみ): クエリ送信元の JMS キューの名前。last_executed_query
: このユーザーが最後に実行したクエリ。query_running
: ユーザーが現在実行中で、まだ完了していないクエリ。アクティブなクエリが存在しない場合は空です。query_running_queued
: ユーザーがすでにクエリを実行済みで、サーバーが [Max concurrent requests] の制限に達しているのでクエリが待機中の場合、true
です。この制限の詳細、および制限の値を増やす方法については、「 同時リクエスト数の制限 」を参照してください。(roles).value
: Virtual DataPort へのコネクションを開いているユーザーに割り当てられているロールに対して条件を作成するための属性。例: ルールの条件が次のようなものであるとします。
(roles).value = 'developer' or (roles).value = 'tester'
この場合、ユーザーに付与されているロールの少なくとも 1 つが developer または tester であるときにプランが適用されます。
user_agent
: コネクションを開いているアプリケーションの名前。アプリケーションでユーザーエージェントを設定すると、各コネクションを開いたアプリケーションを把握するのに役立ちます。この設定方法については、「 アプリケーションのユーザーエージェントの設定 」を参照してください。user_authentication_type
: クライアントで使用された認証のタイプ。想定される値は LOCAL、LDAP、または KERBEROS です。user_name
: コネクションを開いたユーザーのログイン名。web_service_name
(SOAP または REST のいずれかの Web サービスの場合のみ): Web サービスの名前。
Resource Manager のルールの例¶
例 1
週末のクエリ実行を禁止するには、以下の手順に従って実施してください。
「Stop query always」制限を使用するプランを作成します。
次の条件を指定したルールを作成します。
(getdayofweek(current_date) = 7 OR getdayofweek(current_date) = 1)
クエリを実行すると、Resource Manager は、実際に実行を開始する前にこの条件をチェックします。この条件が true の場合、ただちにクエリを停止します。
GETDAYOFWEEK の結果は、サーバーのロケールに依存します。この例では、サーバーのロケールが「us_pst」、つまり土曜日が 7、日曜日が 1 であることを前提としています。ロケールが「es_euro」 (スペイン) の場合は、土曜日は 6、日曜日は 7 です。
例 2
午後 6 時から午前 7 時までクエリを禁止するには、以下を行います。
「Stop query always」制限を使用するプランを作成します。
次の条件を指定したルールを作成します。
(gethour(CURRENT_TIMESTAMP) >= 18 OR gethour(CURRENT_TIMESTAMP) < 7)
例 3
コネクションが午後 6 時から午前 7 時までに開かれた場合にクエリの実行を禁止するには、以下を行います。
「Stop query always」制限を使用するプランを作成します。
次の条件を指定したルールを作成します。
(gethour(connection_start_time) >= 18 OR gethour(connection_start_time) < 7)
コネクションが午後 6 時より前に確立されていた場合、クエリは実行されます。これは、クエリが午後 6 時以降に実行された場合にも当てはまります。「connection_start_time」の代わりに「CURRENT_TIMESTAMP」を使用した場合、このクエリは停止します。