高度なAccess Gatewayポリシーを開発する

高度なポリシーは、1つ以上のステートメントで構成されます。ポリシーステートメントは:

  • 指定した順序で実行します。
  • セミコロンで終わります。
  • 変数を定義できます。
  • Access GatewayとHTTPセッション変数の参照と更新ができます。
  • if/then形式の条件構文をサポートします。
  • ステートメントをブロックにグループ化することをサポートします。
  • 短絡をサポートし、その時点で実行を停止させます。
  • HTTPステータスコードの変更および返しをサポートします。
  • URLの書き換えをサポートします。

高度なポリシーを作成する

  1. Access Gateway管理者UIコンソールにサインインします。
  2. アプリケーションタブをクリックします。
  3. [Edit(編集)]をクリックします。
  4. [Policies(ポリシー)]をクリックします。
  5. [Edit(編集)]をクリックします。
  6. [Advanced(詳細設定)]オプションを展開します。
  7. [Custom Configuration(カスタム構成)]ボックスに高度なポリシーを入力します。例:set $TEST "some value"; proxy_set_header header_test $TEST;
  8. [Not Validated(未検証)]をクリックしてカスタム構成の構文を検証します。検証が問題なく終了すると、ボタンは[Validated(検証済み)]に変わります。変わらない場合、構文エラーを修正して再検証します。

    以前に有効であったポリシーカスタム構成の構文エラーが検出されない場合があります。ポリシーコードの検証のみに使用される新規ポリシーを使って更新済みの構成ステートメントを検証します。検証後、このポリシーを直ちに破棄してください。

  9. [Okay(OK)]をクリックしてカスタム構成を保存します。
  10. [Done(完了)]をクリックしてアプリケーション編集セッションを完了します。

カスタム構成

カスタム構成は、コメント、ステートメント、セッションデータ、テスト、テストのフォローアップアクションから構成されます。カスタム構成は次の構成をサポートします。

コメント

コメントを作成するには、ステートメントの冒頭に番号記号(#)を入力します。

#これはコメントです。 #空白文字が先行するコメント。 set $TEST "some value"; #これも有効なコメントです。

埋め込み変数または事前定義変数

埋め込み変数には、すべてのHTTPセッション、クッキー、クエリ、リクエストヘッダーフィールド、50を超える名前付き変数が含まれます。これらの変数に名前を付けてアクセスする場合は、プレフィックスを使用するのが一般的です。次の手順を参照してください: 埋め込み変数」を参照してください。一般的なプレフィックスには次の内容が含まれます。

プレフィックス

用途

[arg_]

クエリ引数へのアクセス

arg_name、nameはクエリ変数を表します。
[cookie_] cookieフィールドへのアクセス cookie_name、nameは任意のcookieフィールドを表します。
[http_] 任意のヘッダーフィールドへのアクセス http_email、emailはヘッダー内のフィールドを表します。
[sent_http_] レスポンスヘッダーフィールド sent_http_email、emailはレスポンスヘッダー内のフィールドを表します。

ユーザー変数

カスタム構成に変数を定義して、割り当てや条件ステートメントで使用できます。

形式:

set $variablename value;

例:

#create a variable TEST, containing the value "test value" set $TEST "test value";

条件

条件ステートメントでは、変数の状態に応じてコードを実行するかどうかを選択できます。ifステートメントに関する詳細については、「ifステートメント」を参照してください。

形式:

if (condition) { statement1; statement2; . . . statementn; }

条件の例には次の項目が含まれます:

  • 変数名。空または[0](ゼロ)の場合はfalse、それ以外の場合はtrueとして評価されます。
  • 等式(=)演算子と不等式(!=)演算子を使った2つの変数の比較。
  • 正規表現に対する変数の照合。

例:

# If the query parameter 'test' contains the value 'demo' # then no authorization required. if ($arg_test = "demo") { set $policy_type "NO_AUTH";}

さらに、breakディレクティブは追加のステートメントの実行を停止します。この例は、breakディレクティブの使用方法を示しています。

if ($arg_test = "demo") { set $policy_type "NO_AUTH"; break; } #Statements after break aren't executed if the condition is true

リターンコード

このコマンドは処理を停止し、指定したコードをクライアントに返します。

形式:

return numericReturnCode [optional url];

例:

#Stop executing and return a 404 return 404;

ディレクティブ

このコマンドは、プログラミング言語の関数呼び出しと同様に、カスタム構成からディレクティブを呼び出せます。ディレクティブはパラメーターの場合があります。次の手順を参照してください: すべてのNGNIXディレクティブのアルファベット順のリスト

形式:

directive_name [parameter1 [parameter2 [parametern]]];

カスタム構成はロケーションコンテキストを指定するディレクティブのみをサポートします。

ロケーションをサポートするディレクティブの例。

例:

ディレクティブ

説明

形式

プロキシ非表示ヘッダー デフォルトでは、特定のヘッダーフィールドは非表示です。proxy_hide_headerフィールドディレクティブを使用して、他のヘッダーを非表示にすることができます。値には、テキスト、変数、それらの組み合わせが含まれます。 proxy_hide_header field; proxy_hide_header secondaryEmailAddress;
プロキシ設定ヘッダー ディレクティブを使用することで、リクエストヘッダーにフィールドを再定義または追加できます。 proxy_set_header field value; proxy_set_header Host $proxy_host;
プロキシリダイレクト 変更する値をプロキシサーバーレスポンスのLocation(ロケーション)およびRefresh(更新)ヘッダーフィールドに指定します。 proxy_redirect redirect replacement; proxy_redirect http://general.domain.tbd/abc http://abc.domain.tld;

次の手順

アプリケーションの基本情報

アプリケーションポリシー

Access Gatewayがサポートするアプリケーション

汎用ヘッダーアプリケーションを追加する

サンプルポリシーアプリケーションを追加する

高度なAccess Gatewayポリシー

アプリケーション動作

アプリケーション基本情報を管理する

アクセス制御アプリケーションポリシーを管理する

アプリケーションのトラブルシューティング