ポリシー拡張

ポリシー拡張機能を使用すると、組み込みのポリシータイプの拡張機能を記述できます。拡張機能は、組み込み関数と同様に、ポリシー式で使用できます。これらは、対応するポリシー式が評価されるときに実行されます。この機能は次の場合に役立ちます。

  • カスタマイズした機能を既存のポリシーに追加する。
  • 複雑な顧客要件のための論理構造の実装。

ポリシー拡張機能は、組み込みのポリシータイプの拡張機能をユーザが記述できるようにすることで、これらの制限に対処します。拡張機能は、組み込み関数と同様に、ポリシー式で使用できます。これらは、対応するポリシー式が評価されるときに実行されます。

次の表は、拡張機能の記述時に使用できるポリシータイプと、関連するマッピングの一覧です。

ポリシーの種類 マッピングされたポリシータイプ 出力
TEXT_T NSTEXT 文字列
BOOL_AT NSBOOL ブーリアン型
NUM_AT NSNUM 数値 (倍精度浮動小数点)
DOUBLE_AT NSDOUBLE 数値 (倍精度浮動小数点)

ポリシー拡張を使用するための前提条件

インポートされた関数は、既存のポリシー標準に準拠している必要があります。したがって、次のようになります。

  • 関数名は文字で始まり、数字またはアンダースコアを含むことができます。
  • Citrix ADCポリシーでは、関数名の大文字と小文字は区別されません。
  • 拡張言語が複数の値を返す場合でも、関数は 1 つの値を返す必要があります。
  • 可変数の引数を持つ関数はサポートされていません。

ポリシー拡張機能の仕組み

Citrix ADCアプライアンスの既存のポリシーは、インタープリタを使用して機能を評価します。これらの機能は、ポリシー拡張ファイルにインポートされます。ユーザーがポリシー拡張ファイルに新しい関数をインポートすると、次のようになります。

  1. 拡張子ファイルは、構文やその他の条件について検証されます。
  2. 検証が失敗した場合、エラーはユーザーに報告されます。
  3. 検証に成功すると、拡張ファイルはCitrix ADCアプライアンスにインポートされ、その内容は組み込みのポリシー機能と同様に、ポリシー式で使用できます。
    1. ポリシー式の評価が実行中にエラーを返した場合、その評価は undef イベントとして報告され、関連するエラーカウンタが増分されます。

      注: policy undef イベントが発生し、ポリシー規則に 1 つ以上のポリシー拡張機能が含まれている場合、show ns extension <name> コマンドはそれらのポリシー拡張に適用されると、undef ヒットを表示します。拡張機能が中断されると、中止カウンタの値が増加します。

    2. ポリシー式の評価が成功すると、式全体が評価されるまで、またはエラーのために中止されるまで、式の評価が再開されます。

拡張関数の実行に時間がかかりすぎると中止され、その拡張関数に関連するエラーカウンタが増加します。拡張関数はサンドボックス化され、次のことを防ぎます。

  • Citrix ADCアプライアンスで過剰なCPU使用率。
  • Citrix ADCアプライアンスのメモリ使用量が多すぎます。
  • 有害な組み込みライブラリまたはサードパーティのライブラリまたはバイナリの使用。
  • Citrix ADCアプライアンスが再起動する可能性がある長時間実行されるスクリプト。

ポリシー拡張