機密データ検出
¶
API Discoveryは、お客様のAPIによって消費および転送される機密データを検出し、強調表示します。これにより、暗号化、トークナイゼーション、その他のセキュリティ制御を適用してデータ漏洩や安全でないチャネル、不正なシステムへの機密データ送信を防止することが可能です。本記事では、この機能の使用方法と設定方法について説明します。
Wallarmの機密データ検出は、包括的なデフォルト設定により、すぐにご利用いただけます。また、非常にカスタマイズ性に優れており、既存の検出プロセスを微調整したり、お客様独自のデータタイプを追加して検出することが可能です。
デフォルトでの検出¶
デフォルトでは、API Discoveryは以下の種類の機密データを検出します:
-
IPアドレスやMACアドレスなどの技術データ
-
シークレットキーやパスワードなどのログイン認証情報
-
銀行カード番号などの金融データ
-
医療ライセンス番号などの医療データ
-
フルネーム、パスポート番号、SSNなどの個人を特定できる情報(PII)
Wallarm Console内で、API Discovery → Configure API Discovery → Sensitive dataに移動して、各種類に対して提供されるデフォルトのsensitive data patternsのリストをご確認ください。
機密データ検出のカスタマイズ¶
企業固有のニーズやGDPR、HIPAA、PCI DSSなどの業界特有の規制に完全に準拠するために、API Discoveryは検出プロセスの微調整機能を提供します(ただし、NGINX Node 5.0.3またはNative Node 0.7.0以上が必要です)。
カスタマイズにより、企業固有のデータ保護義務に対応することが可能です。さらに、独自または特殊な機密データ要素がデータフロー内に存在する場合、これらを正確に識別するためのカスタム正規表現を定義でき、大いに役立ちます。
機密データ検出は一連のsensitive data patternsを用いて設定されます。各パターンは、特定の機密データとその検出設定を定義します。API Discoveryにはデフォルトのパターンが用意されていますが、Wallarm Console内のAPI Discovery → Configure API Discovery → Sensitive dataにて、デフォルトのパターンを変更したり、お客様独自のパターンを追加することが可能です。
デフォルト(初期設定)のパターンは変更または無効化でき、必要に応じて迅速に初期設定へ復元することが可能です。また、お客様独自のパターンは作成、変更、無効化、削除をいつでも行うことができます。
信頼スコア
パターンとコンテキストワードを利用して機密データ検出を設定できます。パターンやコンテキストワードに対して0.1
から1.0
の間の信頼スコアを選択し、この表現との一致または機密データの隣にある文字列や単語の存在が実際に機密データの存在を意味するかの確信度を指定します。より実際のエンティティを検出し、誤検知を減らすために、適切なスコアを使用してください。
信頼スコアが0.3
に達するか、それ以上の場合、機密データが検出されます。具体的には、コンテキストワードのスコアが合算され、パターンからは最大のスコアが採用されます。詳しくは下記の例をご参照ください。
実際のトラフィックデータに適用した後、信頼スコアを調整することを推奨します。
パターンベースの検出
PCRE形式の正規表現を使用して、想定される機密データ値に一致させます。正規表現を使用することで、検出の精度が大幅に向上します。異なる信頼スコアを持つ複数のパターンを使用することができ、いずれかに一致した場合、機密データが検出されます。
パターンは固定長のトークン、ID、およびURIに適しています。
Context words
Wallarmは、パターンに一致する疑わしい機密データの周囲の単語を確認します。コンテキストワードが見つかると、結果の信頼スコアが向上します。コンテキストは、URLパス、クエリパラメータ名、JSONキー、その他の隣接パラメータから取得されます。
例えば、上記の画像では、以下の場合に機密データが検出されます:
-
JWT
またはAWS access key ID
のパターンに一致すれば、即座に検出されます。 -
AWS key (weak)
に一致した場合、それ単体では「はい」と判定されません(スコアが0.1
で、閾値0.3
に満たないためです)。 -
しかし、コンテキストワード
access
(0.1
)とapi
(0.1
)が加わると、合計が0.3
となり、機密データが検出されます。 -
auth
を必須としてマークした場合、状況が変わり、auth
が存在しない場合、提示されたaccess
とapi
のスコアは無視され、パターンのスコアを向上させることができなくなります。
コンテキストワードのみベースの検出
パターンなしでコンテキストワードのみを指定した場合、Wallarmはこれらの単語の存在に基づいて機密データの有無を判定します。信頼スコアの合計が大きいほど、そのパラメータが記述された機密データを含む可能性が高まります。
一部のコンテキストのみでの検索では、いくつかの単語をmandatory(必須)として宣言する必要があります。必須の単語が値のコンテキストに存在しない場合、そのパラメータは機密データを含みません。
例: personal_name
コンテキストワード:
-
name
-
first
-
middle
「middle_name」と一致させる必要がありますが、「name」や「middle」だけでは一致しません。そのため、name
には0.1
のスコアを設定し、単体での一致を防ぎます。しかし、middle
には「middle_name」が強い組み合わせであるため、大きなスコア0.5
を設定する必要があります。
「name」なしでmiddle
のみが検出されるのを防ぐため、name
をエンティティの必須項目としてマークします。name
が見つからない場合、機密データは検出されません。