すべてのプロダクト
Search
ドキュメントセンター

Edge Security Acceleration:API セキュリティ設定

最終更新日:Oct 31, 2025

API セキュリティ設定では、[セッション識別子][スキーマ検証設定]、および [トークン設定] を一元管理できます。

セッション識別子の追加

セッション識別子は、個々の API セッションを識別するために使用されます。ESA は、タグ付けされた API のトラフィックを収集および分析し、レート制限の提案を生成して、サービスの動的な調整を支援します。

  1. ESA コンソールで、サイト管理 を選択します。サイト 列で、対象のウェブサイトをクリックします。

  2. 左側のナビゲーションウィンドウで、セキュリティ保護 > [API セキュリティ] を選択します。

  3. [API セキュリティ] ページで、[設定] タブをクリックします。[セッション識別子] セクションで、[追加] をクリックします。image

  4. 識別子タイプとして [ヘッダー][Cookie]、または [JWT クレーム] (既存または新規のクレームが必要) を選択し、対応する名前を入力します。image

スキーマ検証の設定

API スキーマをアップロードすると、ESA はスキーマに準拠する管理対象 API と自動的に照合します。ESA は、受信リクエストのコンプライアンスを検証し、設定されたアクションに従って処理します。

  1. ESA コンソールで、サイト管理 を選択します。サイト 列で、対象のサイトをクリックします。

  2. 左側のナビゲーションウィンドウで、セキュリティ保護 > [API セキュリティ] を選択します。

  3. [API セキュリティ] ページで、[設定] タブをクリックします。[スキーマ検証設定] セクションで、[設定] をクリックします。image

  4. 必要に応じて設定を行い、[OK] をクリックします。

    • ステータス: スキーマ検証機能を有効または無効にします。

    • デフォルトのアクション: スキーマに準拠しないリクエストに対して実行するデフォルトのアクションを選択します。利用可能なアクションは次のとおりです:

      • ブロック: 準拠していないリクエストをブロックし、ブロックログを記録します。詳細については、「イベント」をご参照ください。

      • 監視: 準拠していないリクエストを許可し、ログを記録します。詳細については、「イベント」をご参照ください。

      • なし: アクションを実行せず、ログも記録しません。

    • アップロードされたスキーマ: アップロードされたスキーマファイルです。ESA はこれらのファイルを自動的に解析し、API コンプライアンス検証ルールとして使用します。詳細については、「スキーマファイルの仕様」をご参照ください。

    image

トークンの追加

[トークン設定] セクションに JSON Web トークン (JWT) 情報を追加します。この情報は、訪問者の ID 検証のために API ルール で参照できます。

  1. ESA コンソールで、サイト管理 を選択します。サイト 列で、対象のウェブサイトをクリックします。

  2. 左側のナビゲーションウィンドウで、セキュリティ保護 > [API セキュリティ] を選択します。

  3. [API セキュリティ] ページで、[設定] タブをクリックします。[トークン設定] セクションで、[追加] をクリックします。image

  4. 必要に応じてトークンパラメーターを設定し、[OK] をクリックします:

    • 名前: トークンのカスタム名 (例: JWT-Demo) を入力します。

    • トークンの場所: リクエスト内のトークンの場所を選択します。[ヘッダー] または [Cookie] を選択し、キーを入力します。

      説明

      異なる場所でトークンをチェックするには、[または] をクリックして論理 OR 条件を作成できます。最大 4 つのトークンの場所を同時にチェックできます。

    • トークンキー: トークンキーを手動で入力するか、JSON ファイルをアップロードします。キーの要件の詳細については、「トークンの詳細」をご参照ください。

      説明

      複数のキーを設定した場合、ESA は kid フィールドを使用して検証用のキーを選択します。いずれか 1 つのキーで検証された場合、リクエストは有効と見なされます。

    image

スキーマの仕様

ファイル形式とサイズ

  • フォーマット: スキーマファイルは .yml、 .yaml、または .json 形式である必要があります。

  • サイズ: 最大ファイルサイズは 58 KB です。より大きなスキーマの場合は、 .json 形式を使用し、アップロードする前に圧縮してください。

スキーマのコンテンツ

バージョン

ESA API セキュリティアーキテクチャの検証では、現在 OpenAPI Specification (OAS) v3.0.x のみをサポートしています。

フィールド

必須フィールド

  • openapi: OAS のバージョン文字列 (例: 3.0.0)。

  • info: API に関するメタデータ。version (例: 1.0.0) を含みます。

  • paths: API が提供されるホスト情報。

  • servers: API が提供されるホスト情報:

    • url: https://api.example.com などの絶対 URL のみがサポートされます。

    • variables: サーバー変数はサポートされておらず、解析中に無視されます。

オプションフィールド

  • schema: データ構造の定義。次のタイプがサポートされています:

    • int32

    • uint32

    • int64

    • uint64

    • float

    • double

    • boolean

    • email

  • reference: $ref を使用して事前定義されたオブジェクトを指します。外部参照および相対参照はサポートされていません。

  • requestbody: リクエスト本文を定義します。content-typeapplication/json のデータのみがサポートされます。

以下は、.json スキーマファイルの例です。
{
    "openapi": "3.0.0",
    "info": {
        "title": "example",
        "description": "example",
        "version": "1.0"
    },
    "servers": [
    {
      "url": "https://example1.aliyun.com",
      "description": "example1 url"
    },
    {
      "url": "https://example2.aliyun.com",
      "description": "example2 url"
    }
    ],
    "components": {
        "schemas": {
            "ParamsObject": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "value": {
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "value"
                ]
            }
        }
    },
    "paths": {
        "/example/{param1}": {
            "get": {
                "operationId": "getexampleById",
                "parameters": [
                    {
                        "name": "param1",
                        "in": "path",
                        "required": true,
                        "description": "id",
                        "schema": {
                            "type": "integer",
                            "format": "int32"
                        }
                    }
                ]
            }
        },
        "/api1": {
            "post": {
                "operationId": "post_api1",
                "summary": "post api1 request",
                "parameters": [],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ParamsObject"
                            }
                        }
                    }
                }
            },
            "get" :{
                "operationId": "get_api1",
                "summary": "get api1 request",
                "parameters": [
                    {
                        "name": "id",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "format": "int32"
                        }
                    },
                    {
                        "name": "name",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ]
            }
        }
    }
}

トークンの詳細

トークン検証は現在 JWT のみで利用可能です。

フィールドの説明

公開鍵は JSON Web Key (JWK) 形式である必要があります。JWK 公開鍵には kid および alg フィールドが含まれている必要があります。各フィールドの説明は次のとおりです:

  • kty: キータイプ。例: Elliptic Curve の場合は EC

  • use: 公開鍵の用途。例: デジタル署名の場合は sig

  • crv: 楕円曲線のタイプ。例: NIST 標準の P-256 曲線の場合は P-256

  • kid: カスタムキー識別子。例: esa。キー選択を有効にするには、JWK に kid フィールドを含める必要があります。リクエスト内の JWT クレームにも kid フィールドを含める必要があります。このフィールドは、トークンキーのローテーションに使用されます。

  • x: 楕円曲線公開鍵の x 座標。

  • y: 楕円曲線公開鍵の y 座標。

  • alg: アルゴリズム識別子。現在サポートされているのは、SHA-256 を使用した ECDSA 署名アルゴリズムである ES256 のみです。

{
  "kty": "EC",
  "use": "sig",
  "crv": "P-256",
  "kid": "esa",
  "x": "QG3VFVwUX4IatQvBy7sqBvvmticCZ-eX5-nbtGKBOfI",
  "y": "A3PXCshn7XcG7Ivvd2K_DerW4LHAlIVKdqhrUnczTD0",
  "alg": "ES256"
}