API展開にポリシーを追加する
APIトラフィックに対してさまざまなセキュリティポリシーを設定できます。この設定では、トラフィック選択基準とポリシーに必要なパラメータを指定する必要があります。API定義にポリシーを追加するには、次の手順を実行します。
-
Security > API Security > Policies に移動します。
-
Add をクリックします。
-
ポリシーグループの名前を指定します。
-
リストからDeployment を選択します。
-
ポリシーを設定するUpstream Service をリストから選択します。
-
トラフィックセレクターとポリシータイプを選択するには、Add をクリックします。Traffic selector - トラフィック選択基準には、APIリソースパスまたはパスプレフィックス、メソッド、およびポリシーが含まれます。トラフィック選択基準を指定するには、次のいずれかのオプションを使用できます。
-
API Resources – ポリシーを適用するAPIリソースとそのメソッドを選択します。キーワードでAPIリソースとメソッドを検索できます。Traffic selector の画像(/en-us/netscaler-console-service/media/create-policy-api-definition.png)この例では、
POSTメソッドを持つ/userのAPIリソースが一覧表示されます。 -
Custom Rule – このタブでは、カスタムパスプレフィックスと複数のメソッドを指定できます。設定されたポリシーは、APIトラフィック選択のカスタムルールに一致する受信APIリクエストに適用されます。
この例では、No-Auth ポリシーは、/billプレフィックスとGETメソッドを持つ API リソースに適用されます。
ポリシーで、選択したAPIリソースとメソッドに適用するポリシーをリストから選択します。各ポリシーの詳細については、ポリシーの種類を参照してください。 -
-
オプションで、ポリシーの種類を移動して優先順位を設定できます。優先順位が高いポリシーの種類が最初に適用されます。
-
ポリシーを追加するには、保存をクリックします。ポリシーをすぐに適用する場合は、保存して適用をクリックします。
ポリシーの種類
APIポリシーを設定する際に、APIリソースとメソッドに適用する以下のポリシーを選択できます。
注:
APIを使用してAPIセキュリティを管理するには、APIを使用してAPIセキュリティを管理するを参照してください。
認証と認可
APIリソースは、アプリケーションまたはAPIサーバーでホストされます。このようなAPIリソースにアクセス制限を適用したい場合は、認証および認可ポリシーを使用できます。これらのポリシーは、受信APIリクエストがリソースにアクセスするために必要な権限を持っているかどうかを検証します。
選択したAPIリソースの認証と認可を定義するには、次のポリシーを使用します。
No-Auth
選択したトラフィックの認証をスキップするには、このポリシーを使用します。
Auth-Basic
このポリシーは、HTTP基本認証スキームで使用されるローカル認証を指定します。ローカル認証を使用するには、NetScalerでユーザーアカウントを作成する必要があります。
OAuth
OAuthでは、oAuth2を使用してクライアントを認証し、アクセストークンを発行するために外部IDプロバイダーが必要です。クライアントがこのトークンをAPIゲートウェイへのアクセス資格情報として提供すると、設定された値に基づいてトークンが検証されます。
-
JWKS URI - JWT (JSON Web Token)検証用のJWK (JSON Web Key)を持つエンドポイントのURL
-
Issuer - 認証サーバーのID (通常はURL)。
-
Audience - トークンが適用されるサービスまたはアプリケーションのID。
-
Claims to save - アクセス権限は、一連のクレームと期待値として表されます。クレーム値をCSV形式で指定します。
-
Introspect URI - 認証サーバーのイントロスペクションエンドポイントURLです。このURLは、不透明なアクセストークンを検証するために使用されます。これらのトークンの詳細については、「不透明なアクセストークンのOAuth設定」(/ja-jp/citrix-adc/current-release/aaa-tm/authentication-methods/oauth-authentication/api-authentication-with-adc.html#oauth-configuration-for-opaque-access-tokens)を参照してください。Introspect URI を指定した後、認証サーバーにアクセスするための Client Id と Client Secret を指定します。
-
Allowed algorithms - このオプションを使用すると、受信トークン内の特定のアルゴリズムを制限できます。デフォルトでは、サポートされているすべてのメソッドが許可されています。ただし、選択したトラフィックに必要なアルゴリズムを確認できます。
検証が成功すると、API Securityはクライアントへのアクセスを許可します。
重要:
選択したAPIリソースに対してOAuthまたはAuth-Basicポリシーを構成する場合、残りのAPIリソースに対してはNo Authポリシーを構成します。この構成は、残りのリソースの認証をスキップしたいことを明示的に示します。
承認
このポリシーは、APIリソースにアクセスするために必要な権限を検証します。アクセス権限は、一連のクレームと期待値として表されます。このポリシーを構成するには、「Add a new Claim」を選択し、以下を指定します。
-
クレーム名
-
クレーム値
重要:
API Securityは、APIトラフィックに対して認証ポリシーと承認ポリシーの両方を必要とします。したがって、認証ポリシーとともに承認ポリシーを構成する必要があります。認証ポリシーはOAuthまたは
Auth-Basicのいずれかです。
承認チェックがない場合でも、空のクレームを持つ承認ポリシーを作成する必要があります。そうしないと、リクエストは403エラーで拒否されます。
レート制限
選択したAPIリソースに与えられる最大負荷を指定します。このポリシーを使用すると、APIトラフィックレートを監視し、予防措置を講じることができます。このポリシーを構成するには、以下を指定します。
-
HTTP ヘッダー名 - API リクエストを識別するためにトラフィックをフィルタリングするトラフィックセレクターキーです。レート制限ポリシーは、このような API リクエストにのみ適用され、監視します。
-
ヘッダー値 - これらのヘッダー値は、指定されたヘッダー名に対してカンマで区切られます。
-
しきい値 - 指定された間隔で許可されるリクエストの最大数です。ヘッダー値を指定した場合、このしきい値は各ヘッダー値に適用されます。例-1:ヘッダー名
x-api-keyにヘッダー値 ("key1","key2","key3") を指定し、しきい値を80に設定すると、設定されたしきい値は各ヘッダー値に適用されます。例-2:各ヘッダー値に異なるしきい値を指定したい場合は、同じ HTTP ヘッダー名を使用して個別のレート制限ポリシーを作成します。-
ポリシー-1:ヘッダー名
x-api-keyにヘッダー値 ("key1","key2") を指定し、しきい値を80に設定します。 -
ポリシー-2:ヘッダー名
x-api-keyにヘッダー値 ("key3") を指定し、しきい値を30に設定します。
ヘッダー値を指定しない場合、しきい値は指定された HTTP ヘッダー名に適用されます。 -
-
タイムスライス - マイクロ秒で指定される間隔です。この間隔中、リクエストは設定された制限に対して監視されます。デフォルトでは、1000マイクロ秒 (1ミリ秒) に設定されています。
-
制限タイプ - レート制限ポリシーを適用する方法のモードです。バーストまたはスムーズ制限タイプを選択できます。
-
アクション - しきい値を超過したトラフィックに対して実行するアクションを定義します。次のいずれかのアクションを指定できます。
-
DROP:設定されたトラフィック制限を超過したリクエストを破棄します。
-
RESET:リクエストの接続をリセットします。
-
REDIRECT: トラフィックを設定されたredirect_urlにリダイレクトします。
-
RESPOND: 標準応答(
429 Too many requests)で応答します。
-
WAF
このポリシーは、機密性の高いビジネス情報や顧客情報にアクセスするウェブサイトに対するセキュリティ侵害、データ損失、および不正な変更の可能性を防止します。
WAFポリシーを設定する前に、StyleBooksを使用してNetScaler ConsoleでWAFプロファイルを作成します。
WAFプロファイル名で、作成したWAFプロファイルを選択または指定します。
ボット
このポリシーは、不正なボットを識別し、高度なセキュリティ攻撃からアプライアンスを保護します。
BOTポリシーを設定する前に、StyleBooksを使用してNetScaler ConsoleでBOTプロファイルを作成します。
ボットプロファイル名で、作成したBOTプロファイルを指定します。
ヘッダー書き換え
このポリシーは、APIリクエストとレスポンスのヘッダーを変更するのに役立ちます。HTTPヘッダーの値を置き換えたい場合は、以下を指定します。
-
HTTPヘッダー名: リクエストヘッダーで変更したいフィールド名。例:
Host -
ヘッダー値: オプション。指定されたヘッダー名で変更したい値の文字列。例:
sample.com -
ヘッダーの新しい値: 指定されたヘッダー値を置き換える新しい値です。ヘッダー値が指定されていない場合、受信した値をHTTPヘッダー名に指定された値で置き換えます。例:
example.com
この例では、ヘッダー書き換えポリシーは、APIリクエストの
Hostフィールドでsample.comをexample.comに置き換えます。
URIパスの書き換え
このポリシーは、APIリクエストとレスポンスのURIパスを変更するのに役立ちます。URIパス内のセグメントを置き換えたい場合は、次のいずれかのルールを追加します。
-
パスセグメントの置き換え – このアクションタイプを選択すると、以下を指定します。
-
現在のパスセグメント – 置き換えたいパスセグメントです。
-
新しいパスセグメント – 現在のパスセグメントのみを置き換える新しいパスセグメントです。
たとえば、URIパスのロケールを英語から中国語に変更するには、現在のパスセグメントに/ja-jp/を指定します。そして、新しいパスセグメントに/zh-zhを指定します。これにより、パスセグメントのみが置き換えられ、残りのURIパスは保持されます。 -
-
フルパスの置き換え – このアクションタイプは、APIリクエストとレスポンスのURIパスを指定されたパスで完全に置き換えます。新しいパスセグメントに
/example.htmlを指定すると、APIリクエストまたはレスポンスのURIパスは指定されたパスに変更されます。 -
パスセグメントの削除 – このアクションは、指定されたセグメントをURIから削除します。たとえば、URIパスから英語ロケールを削除するには、現在のパスセグメントに
/ja-jp/を指定します。 -
パスセグメントの挿入 – このアクションは、指定されたセグメントをURIパスに挿入します。このルールを適用するには、セグメントを挿入したい位置と、挿入したいセグメントを指定します。たとえば、特定のテキストの直後にセグメントを挿入したい場合は、次の手順を実行します。
-
新しいセグメントを挿入する位置を指定します。
-
現在のパスセグメントで、新しいセグメントを追加するテキストを指定します。
-
新しいパスセグメントで、追加するセグメントを指定します。
-
拒否
このポリシーは、APIリクエストがAPIリソースに到達するのを拒否するのに役立ちます。