API セキュリティ設定では、[セッション識別子]、[スキーマ検証設定]、および [トークン設定] を一元管理できます。
セッション識別子の追加
セッション識別子は、個々の API セッションを識別するために使用されます。ESA は、タグ付けされた API のトラフィックを収集および分析し、レート制限の提案を生成して、サービスの動的な調整を支援します。
ESA コンソールで、サイト管理 を選択します。サイト 列で、対象のウェブサイトをクリックします。
左側のナビゲーションウィンドウで、 を選択します。
[API セキュリティ] ページで、[設定] タブをクリックします。[セッション識別子] セクションで、[追加] をクリックします。

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

スキーマ検証の設定
API スキーマをアップロードすると、ESA はスキーマに準拠する管理対象 API と自動的に照合します。ESA は、受信リクエストのコンプライアンスを検証し、設定されたアクションに従って処理します。
ESA コンソールで、サイト管理 を選択します。サイト 列で、対象のサイトをクリックします。
左側のナビゲーションウィンドウで、 を選択します。
[API セキュリティ] ページで、[設定] タブをクリックします。[スキーマ検証設定] セクションで、[設定] をクリックします。

必要に応じて設定を行い、[OK] をクリックします。
ステータス: スキーマ検証機能を有効または無効にします。
デフォルトのアクション: スキーマに準拠しないリクエストに対して実行するデフォルトのアクションを選択します。利用可能なアクションは次のとおりです:
アップロードされたスキーマ: アップロードされたスキーマファイルです。ESA はこれらのファイルを自動的に解析し、API コンプライアンス検証ルールとして使用します。詳細については、「スキーマファイルの仕様」をご参照ください。

トークンの追加
[トークン設定] セクションに JSON Web トークン (JWT) 情報を追加します。この情報は、訪問者の ID 検証のために API ルール で参照できます。
ESA コンソールで、サイト管理 を選択します。サイト 列で、対象のウェブサイトをクリックします。
左側のナビゲーションウィンドウで、 を選択します。
[API セキュリティ] ページで、[設定] タブをクリックします。[トークン設定] セクションで、[追加] をクリックします。

必要に応じてトークンパラメーターを設定し、[OK] をクリックします:
名前: トークンのカスタム名 (例:
JWT-Demo) を入力します。トークンの場所: リクエスト内のトークンの場所を選択します。[ヘッダー] または [Cookie] を選択し、キーを入力します。
説明異なる場所でトークンをチェックするには、[または] をクリックして論理
OR条件を作成できます。最大 4 つのトークンの場所を同時にチェックできます。トークンキー: トークンキーを手動で入力するか、JSON ファイルをアップロードします。キーの要件の詳細については、「トークンの詳細」をご参照ください。
説明複数のキーを設定した場合、ESA は
kidフィールドを使用して検証用のキーを選択します。いずれか 1 つのキーで検証された場合、リクエストは有効と見なされます。

スキーマの仕様
ファイル形式とサイズ
フォーマット: スキーマファイルは
.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-typeがapplication/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"
}