API デプロイへのポリシーの追加
API トラフィックに対してさまざまなセキュリティポリシーを設定できます。この設定では、ポリシーに必要なトラフィック選択基準とパラメータを指定する必要があります。API 定義にポリシーを追加するには、次の手順を実行します。
-
[セキュリティ] > [API セキュリティ] > [ポリシー] に移動します。
-
[追加] をクリックします。
-
ポリシーグループの名前を指定します。
-
リストから配置を選択します 。
-
ポリシーを設定するアップストリームサービスをリストから選択します 。
-
[ Add ] をクリックして、トラフィックセレクタとポリシータイプを選択します。
トラフィックセレクタ -トラフィック選択基準には、API リソースパスまたはパスプレフィックス、メソッド、ポリシーが含まれます。
トラフィック選択基準を指定するには、次のいずれかのオプションを使用できます。
-
「API リソース 」— ポリシーを適用する API リソースとそのメソッドを選択します。キーワードを使用して API リソースとメソッドを検索できます。
この例では、
POST
メソッドを持つ/user
のAPI リソースが一覧表示されます。 -
[カスタムルール ] — このタブでは、カスタムパスプレフィックスと複数の方法を指定できます。
設定したポリシーは、API トラフィック選択のカスタムルールに一致する着信 API リクエストに適用されます。
この例では、 認証なしポリシーは、
/bill
プレフィックスとGET
メソッドを持つ API リソースに適用されます。
[ Policy] で、選択した 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 ウェブトークン)検証用の JWK(JSON ウェブキー)を持つエンドポイントの URL
-
発行者 -認証サーバの ID(通常は URL)。
-
対象ユーザー -トークンが適用可能なサービスまたはアプリケーションの ID。
-
[ 保存する要求] : アクセス許可は、要求と期待される値のセットとして表されます。クレームの値を CSV 形式で指定します。
-
イントロスペクト URI -認証サーバーのイントロスペクションエンドポイントの URL。この URL は、不透明なアクセストークンを確認するために使用されます。これらのトークンの詳細については、「 不透明アクセストークンの OAuth 設定」を参照してください。
イントロスペクト URIを指定した後、 認証サーバにアクセスするためのクライアント IDとクライアントシークレットを指定します 。
-
許可されたアルゴリズム -このオプションを使用すると、着信トークン内の特定のアルゴリズムを制限できます。デフォルトでは、サポートされているすべてのメソッドが許可されています。ただし、選択したトラフィックに必要なアルゴリズムを確認することはできます。
検証が成功すると、API セキュリティはクライアントへのアクセスを許可します。
重要:
選択した API リソースに OAuth または Auth-Basic ポリシーを設定する場合、残りの API リソースには No Auth ポリシーを設定します。この設定は、残りのリソースの認証をスキップすることを明示的に示します。
承認
このポリシーは、API リソースにアクセスするために必要なアクセス許可を確認します。アクセス許可は、要求と期待される値のセットとして表されます。このポリシーを構成するには、[ 新しい要求の追加 ] を選択し、以下を指定します。
- クレーム名
- クレームの値
重要:
API セキュリティでは、API トラフィックの認証ポリシーと承認ポリシーの両方が必要です。したがって、認証ポリシーを使用して承認ポリシーを設定する必要があります。認証ポリシーは OAuth または
Auth-Basic
を使用できます。承認チェックがない場合でも、空の要求を持つ承認ポリシーを作成する必要があります。それ以外の場合、要求は 403 エラーで拒否されます。
レート制限
選択した API リソースに与えられる最大負荷を指定します。このポリシーを使用すると、API トラフィックレートを監視し、予防措置を講じることができます。このポリシーを構成するには、以下を指定します。
-
HTTPヘッダー名 -これは、APIリクエストを識別するためにトラフィックをフィルタリングするトラフィックセレクタキーです。また、レート制限ポリシーは、そのような API リクエストにのみ適用および監視します。
-
ヘッダー値 -これらのヘッダー値は、前述のヘッダー名のカンマで区切られています。
-
Threshold :指定された間隔で許可できる要求の最大数。 ヘッダー値を指定した場合、このしきい値は各ヘッダー値に適用されます。
例 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 ミリ秒) に設定されています。
-
Limit type :レート制限ポリシーを適用する方法を示すモード。[ バースト ] または [ スムーズ ] の制限タイプを選択できます。
-
[ Action ]:しきい値を超えるトラフィックに対して実行するアクションを定義します。次のいずれかのアクションを指定できます。
- DROP: 設定されたトラフィック制限を超えるリクエストをドロップします。
- RESET: 要求の接続をリセットします。
- REDIRECT: 設定された redirect_url にトラフィックをリダイレクトします。
-
応答: 標準応答 (
429 Too many requests
) で応答します。
WAF
このポリシーは、セキュリティ侵害、データの損失、および機密性の高いビジネス情報や顧客情報にアクセスする Web サイトへの不正変更を防止します。
WAFポリシーを構成する前に、 StyleBook を使用してNetScalerコンソールでWAFプロファイルを作成します。
[ WAF プロファイル名] で、作成した WAF プロファイルを選択または指定します。
ボット
このポリシーは、不正なボットを特定し、高度なセキュリティ攻撃からアプライアンスを保護します。
BOTポリシーを構成する前に、 StyleBook を使用してNetScalerコンソールでBOTプロファイルを作成します。
[ ボットプロファイル名] で、作成した BOT プロファイルを指定します。
ヘッダー書き換え
このポリシーは、API リクエストとレスポンスのヘッダーを変更するのに役立ちます。HTTP ヘッダーの値を置き換える場合は、次のように指定します。
-
HTTP ヘッダー名: リクエストヘッダーで変更するファイル名です。
例:
Host
-
Header value: オプション、指定したヘッダー名で変更する値文字列。
例:
sample.com
-
ヘッダー新しい値: 指定されたヘッダー値を置き換える新しい値。
Header 値が指定されていない場合は 、受信した値を指定された値に置き換えて HTTP ヘッダー名にします。
例:
example.com
この例では、API リクエストのHost
フィールドで、ヘッダー書き換えポリシーsample.com
がexample.com
に置き換わります。
URI パス書き換え
このポリシーは、API リクエストとレスポンスの URI パスを変更するのに役立ちます。URI パス内のセグメントを置き換える場合は、次のいずれかを実行するルールを追加します。
-
パスセグメントを置換 — このアクションタイプを選択するときは、以下を指定します。
- 現在のパスセグメント — 置き換えたいパスセグメント。
- 新しいパスセグメント — 現在のパスセグメントのみを置き換える新しいパスセグメント。
たとえば、URI パスのロケールを英語から中国語に変更するには、Current Path Segmentで
/en-us/
を指定します。そして、「新規パスセグメント」で/zh-zh
を指定してください。パスセグメントのみを置き換え、残りの URI パスは保持します。 -
フルパスを置換 — このアクションタイプは、API リクエストとレスポンスの URI パスを指定されたパスに完全に置き換えます。New Path Segment で
/example.html
を指定すると、API リクエストまたはレスポンスの URI パスが指定されたパスに変更されます。 -
パスセグメントを削除する — このアクションは URI から指定されたセグメントを削除します。たとえば、URI パスから英語ロケールを削除するには、「 現在のパスセグメント」 で
/en-us/
を指定します。 -
パスセグメントを挿入 — このアクションは URI パスに指定されたセグメントを挿入します。このルールを適用するには、セグメントを挿入する位置を指定します。そして、どのセグメントを挿入したいのか。
たとえば、テキストの直後にセグメントを挿入するには、次の操作を行います:
- 新しいセグメントを挿入する位置を指定します。
- 「 現在のパスセグメント」で、その後に新しいセグメントを追加するテキストを指定します。
- 「 新規パスセグメント」で、追加するセグメントを指定します。
拒否
このポリシーは、API リクエストが API リソースに到達するのを拒否するのに役立ちます。