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

API Gateway:ログマスキングプラグイン (専用インスタンスのみ)

最終更新日:Jul 31, 2024

API Gatewayは、ストレージのためにデータをSimple log Serviceに送信する前に、HTTP要求および応答の機密情報をマスクするログマスキングプラグインを提供します。 独自のマスキングルールを設定して、リクエストとレスポンスのヘッダー、クエリ、トークン、本文など、さまざまな場所のデータをマスクできます。

1. 前提条件

  1. 専用インスタンスが使用されます。

  2. API GatewayはSimple Log Serviceと統合されており、必要なログストレージリソースはSimple log Serviceで作成されます。

  3. ログマスキングプラグインをバインドするAPIが存在するAPIグループに対して、HTTPリクエストとレスポンスのロギングが有効になっています。 詳細については、「」をご参照ください。

2. 概要

ログマスキングプラグインの一連のマスキングルールを設定して、データをマスクする方法を定義できます。 次に、API Gatewayは、データをSimple Log Serviceに配信する前に、設定されたルールに基づいてデータをマスクします。 データマスキングルールには、次の属性が含まれます。

  • 名前: ルールの名前。 ルールはその名前によって区別されます。 この属性は必須です。

  • ポリシー: マスキングモード。完全マスキングまたは部分マスキングです。 この属性を使用して、さまざまなデータ型を処理できます。 この属性は必須です。

  • Location: Header、Query、Token、Bodyなど、マスクするパラメーターの場所。 この属性は必須です。

  • パラメータ: マスクするパラメータ。 この属性は、Location値がHeader、Query、またはTokenの場合に必要です。

  • MatchMode: 機密情報の照合に使用される正規表現。 この属性は、Location値がBodyの場合に必要です。この場合、Parameters属性を指定する必要はありません。 この属性を使用して、特定の長さの番号、電子メールアドレス、およびID番号を照合できます。

3。 設定

マスキングルールを設定するときに、名前とパラメーターのカスタム値を設定できます。 ただし、他の属性にはプリセット値を使用する必要があります。 それ以外の場合、ルールは有効になりません。 このセクションでは、各属性について詳しく説明します。

Policy属性には、次のオプションがあります。

  • ALL (デフォルト): すべての文字がマスクされます。 たとえば、123456は ****** としてマスクされます。

  • KEEP_LEFT: 左端のN文字を除くすべての文字がマスクされます。 このオプションを使用する場合は、整数パラメーターを設定してNを指定する必要があります。たとえば、KEEP_LEFT:3を設定した場合、文字列123456は123 *** としてマスクされます。

  • KEEP_RIGHT: 最も右のN文字を除くすべての文字がマスクされます。 このオプションを使用する場合は、整数パラメーターを設定してNを指定する必要があります。たとえば、KEEP_RIGHT:3を設定した場合、文字列123456は *** 456としてマスクされます。

  • KEEP_CENTER: 左端のN文字の後のM文字を除いて、すべての文字がマスクされます。 このオプションを使用する場合は、2つの整数パラメーターを設定してMとNを指定する必要があります。たとえば、KEEP_CENTER:2,2を設定した場合、文字列123456は **34 *** としてマスクされます。

Location属性には、次のオプションがあります。

  • REQUEST_HEADER: リクエストヘッダー。 この属性はパラメータと共に使用されます。

  • REQUEST_QUERY: リクエストクエリ。 この属性はパラメータと共に使用されます。

  • REQUEST_TOKEN: 要求トークンまたはJason Webトークン (JWT) のクレーム。 この属性はパラメータと共に使用されます。

  • REQUEST_BODY: リクエストボディ。 この属性はMatchModeと共に使用されます。

  • RESPONSE_HEADER: 応答ヘッダー。 この属性はパラメータと共に使用されます。

  • RESPONSE_BODY: 応答本文。 この属性はMatchModeと共に使用されます。

MatchMode属性には、次のオプションがあります。

  • D: 10進数に一致します。 このオプションを使用する場合は、一致する文字数を指定する整数パラメーターを設定する必要があります。 たとえば、D:11を設定すると、11桁の10進数が一致します。

  • HEX: 16進数に一致します。 手紙は大文字と小文字を区別しません。 このオプションを使用する場合は、一致する文字数を指定する整数パラメーターを設定する必要があります。 たとえば、HEX:16を設定すると、16桁の16進数が一致します。

  • C: すべての文字列に一致します。 手紙は大文字と小文字を区別しません。 このオプションを使用する場合は、一致する文字数を指定する整数パラメーターを設定する必要があります。 たとえば、C:18を設定すると、18文字の文字列が一致します。

  • DC: 文字と数字の混合文字列に一致します。 手紙は大文字と小文字を区別しません。 このオプションを使用する場合は、一致する文字数を指定する整数パラメーターを設定する必要があります。 たとえば、DC:15を指定した場合、文字と数字の混合文字列の長さが15文字であれば一致します。

  • 電子メール: メールアドレスを一致させます。

  • IDCARD: IDカード番号が一致します。

4。 設定例

ログマスキングプラグインをJSONまたはYAML形式で設定できます。 2つの形式は同じスキーマを持ち、変換ツールを使用して互いに変換できます。 次のコードは、YAML形式のテンプレートを提供し。

---
rules:
  -name: maskRequestQuery        # The rule name.
    location: "REQUEST_QUERY"     # The location of the parameters to be masked.
    parameters:                   # The parameters to be masked.
     - userid
     - name
    policy: "KEEP_LEFT:4"         # The masking policy. All characters are masked except the four left-most characters.
  - name: maskRequestHeader       # The rule name.
    location: "REQUEST_HEADER"    # The location of the parameters to be masked.
    parameters:                   # The parameters to be masked.
     - userid
     - name
    policy: "KEEP_CENTER:4,5"     # The masking policy. All characters are masked except for the five characters after the four left-most characters.
  - name: maskRequestBody         # The rule name.
    location: "REQUEST_BODY"      # The location to be masked.
    matchMode: HEX:10             # The matching mode. 10-character hexadecimal strings are matched.
    policy: "ALL"                 # The masking policy. All characters are masked.
  - name: maskResponseBody        # The rule name.
    location: "RESPONSE_BODY"     # The location to be masked.
    matchMode: EMAIL              # The matching mode. Email addresses are matched.
    policy: "KEEP_RIGHT:7"        # The masking policy. All characters except for the seven right-most characters are masked.

次の項目は、上記の例で設定されたルールについて説明します。

  • maskRequestQuery: リクエストのQueryセクションのuseridパラメーターとnameパラメーターの値をマスクします。 文字列の左端の4文字を除くすべての文字がマスクされます。

  • maskRequestHeader: リクエストのHeaderセクションのuseridパラメーターとnameパラメーターの値をマスクします。 文字列の左端の4文字の後の5文字を除くすべての文字がマスクされます。

  • maskRequestBody: リクエストボディの長さが10文字の16進数をすべてマスクします。 数字のすべての文字はマスクされます。

  • maskResponseBody: 応答本文のすべての電子メールアドレスをマスクします。 右端の7文字を除くすべての文字は、電子メールアドレスでマスクされます。

重要

設定された2つのルールが互いに競合する場合、API Gatewayは、ルールリスト内の順序に基づいて両方のルールを適用します。

5。 サンプルシナリオ

次のコードスニペットは、HTTPリクエストのサンプルを示しています。

POST /sls?name=test HTTP/1.1
Accept-Encoding: gzip,deflate
X-Ca-Stage: RELEASE
X-Ca-Timestamp: 1713423308449
User-Agent: Apache-HttpClient/4.5.6 (Java/1.8.0_172)
Content-MD5: 9QxBgTbb7psVMovQUjXXXXX
X-Ca-Real-IP: 101.37.XX.XX
eagleeye-rpcid: 0.1
Authorization: sdhfcvisdhjnvkdf
X-Forwarded-Proto: http
x-ca-nonce: cb5e4526-b4e9-42f3-a365-a095f5c22ff9
Content-Length: 31
Content-Type: application/json
Host: eaa961f4c0184712bce440XXXX-cn-beijing.alicloudapi.com

{
	"Body":"{"idcard":"11000019900702XXXX"}"
        "userid":"3628756075"
}

次のコードスニペットは、上記のリクエストに対するサンプルのHTTPレスポンス (idcardはID番号を示します) を示しています。

Response:
200
Date: Thu, 18 Apr 2024 06:55:08 GMT
Content-Type: application/oct-stream
Content-Length: 854
Connection: keep-alive
X-Ca-Request-Id: 5FF51156-536B-4541-BED0-46A0C4D6929B
Content-Disposition: attachment; filename=ApiResponseForInnerDomain

{
	"Body":"{"idcard":"11000019900702XXXX"}"
        "userid":"3628756075"
}

5.1 要求と応答のヘッダーとクエリセクションのマスクパラメーター

  • リクエストのHeaderセクションのAuthorization値をマスクします。 左端の4文字の後の5文字を除くすべての文字をマスクします。

  • リクエストの [クエリ] セクションの名前の値をマスクします。 一番左の2文字を除くすべての文字をマスクします。

---
rules:
  - name: request_query           # The rule name.
    location: "REQUEST_QUERY"     # The location of the parameters to be masked.
    parameters:                   # The parameters to be masked.
     - name
    policy: "KEEP_LEFT:2"         # The masking policy. All characters except for the two left-most characters are masked.
  - name: request_header          # The rule name.
    location: "REQUEST_HEADER"    # The location of the parameters to be masked.
    parameters:                   # The parameters to be masked.
     - Authorization
    policy: "KEEP_CENTER:4,5"     # The masking policy. All characters except for the five characters after the four left-most characters are masked.

ルールがログで有効になるかどうかを確認します。

image

image

5.2 リクエスト本文とレスポンス本文のマスク情報

  • リクエストボディとレスポンスボディのマスクID番号。 すべての文字がマスクされます。

  • 10文字の長さの10進数をマスクします。 右端の3文字を除くすべての文字がマスクされます。

---
rules:
  - name: request_body_IDCARD      # The rule name.
    location: "REQUEST_BODY"      # The location of the information to be masked. ID numbers are masked in request bodies.
    matchMode: IDCARD              # The matching mode. ID numbers are matched.
    policy: "ALL"                 # The masking policy. All characters are masked.  
  - name: request_body_D       # The rule name.
    location: "REQUEST_BODY"      # The location to be masked.
    matchMode: D:10             # The matching mode. 10-character decimal strings are matched.
    policy: "KEEP_RIGHT:3"        # The masking policy. All characters except for the three right-most characters are masked.    
  - name: response_body_IDCARD      # The rule name.
    location: "RESPONSE_BODY"      # The location of the information to be masked. ID numbers are masked in response bodies.
    matchMode: IDCARD              # The matching mode. ID numbers are matched.
    policy: "ALL"                 # The masking policy. All characters are masked.

ルールがログで有効になるかどうかを確認します。

image

image

6. 制限

ログマスキングプラグインは、専用インスタンスに対してのみ提供されます。

単一のプラグインのメタデータのサイズは50 KBを超えることはできません。

2024、4月2日より前に購入した専用インスタンスでログマスキングプラグインが有効にならない場合は、インスタンスをアップグレードするためのチケットを起票してください。