NSX Advanced Load Balancer は、パフォーマンスまたは停止に関するさまざまな問題、エンドユーザー エクスペリエンス、およびアプリケーションの成功をトラブルシューティングするために、さまざまなタイプのログを収集します。NSX Advanced Load Balancer Controller は、受信クライアント要求とバックエンド サーバ間の接続を確立するときに、HTTP 要求ヘッダーと応答ヘッダー情報を収集します。
NSX Advanced Load Balancer では、アプリケーション ログ内の HTTP 要求ヘッダーおよび応答ヘッダー フィールドの個人を識別可能な情報 (PII) を削除またはマスキングできます。必要な HTTP ヘッダー フィールドの実際の値を削除するか、X にマスキングすることができます。次のタイプの要求では、HTTP 要求ヘッダーがマスキングされます。
クライアントから受信した HTTP ヘッダー。
バックエンド サーバに送信された HTTP ヘッダー。
次のタイプの要求は、NSX Advanced Load Balancer の HTTP 応答ヘッダーと見なされます。
バックエンド サーバからの応答
クライアントに送信された応答ヘッダー
NSX Advanced Load Balancer のアプリケーション ログ内の任意の HTTP ヘッダーは、マスキングまたは削除できます。この機能は、ヘッダーをマスキングするだけでなく、ヘッダー名と対応する値もアプリケーション ログから削除します。
使用事例
HTTP Cookie や認可情報など、ユーザー関連の機密情報の公開が回避されます。ユーザーまたはサーバ関連情報の公開が原因で発生する可能性のあるセキュリティ上の脅威も回避されます。
CLI を使用した情報ログ内の PII の非表示
要件に基づいて、NSX Advanced Load Balancer の仮想サービス ログ内の HTTP 要求ヘッダーと応答ヘッダーをすべてマスキングまたは削除できます。
次に示す構成スニペットでは、match_str: "HTTP-Header-name" コマンドを使用して HTTP ヘッダーを選択し、仮想サービスの分析プロファイル構成で LOG_FIELD_MASKOFF コマンドを使用して対応するアクション(元の値をマスキングする)を設定します。
参考として、次の構成スニペットを参照してください。
analyticsprofile_object { uuid: "l7-analytics-profile-3" name: "l7-analytics-profile-3" tenant_uuid: "admin" sensitive_log_profile { header_field_rules { index: 1 name: "hdr_rule_1" enabled: true match { match_criteria: EQUALS string_group_uuids: "stringgroup-2" } action: LOG_FIELD_MASKOFF } header_field_rules { index: 2 name: "hdr_rule_2" enabled: true match { match_criteria: CONTAINS match_str: "X-Forwarded-For" } action: LOG_FIELD_MASKOFF } } } stringgroup_object { uuid: "stringgroup-2" name: "stringgroup-2" kv { key: "Authorization" } kv { key: "Cookie" } kv { key: "Set-Cookie" } tenant_uuid: "admin" }
HTTP 要求と HTTP 応答ヘッダーの変更
次のスクリーンショットは、NSX Advanced Load Balancer のログ内のさまざまな HTTP ヘッダーのマスキングされた値を示しています。
HTTP 要求ヘッダーの変更:
分析プロファイルの変更前の HTTP 要求ヘッダーの詳細:
分析プロファイルの変更後の HTTP 要求ヘッダーの詳細:
上記の例では、次の HTTP 要求ヘッダーの値が X にマスキングされます。
X-Forwarded-For
認可 HTTP ヘッダー
Cookie フィールド
HTTP 応答ヘッダーの変更:
分析プロファイルの変更前のアプリケーション ログ内の HTTP 応答ヘッダーの詳細:
分析プロファイルの変更後のアプリケーション ログ内の HTTP 応答ヘッダーの詳細:
上記の例では、アプリケーション ログ内の HTTP 応答ヘッダーの値である [Set-Cookie] が X にマスキングされています。
NSX Advanced Load Balancer ユーザー インターフェイスを使用した情報ログ内の PII の非表示
NSX Advanced Load Balancer ユーザー インターフェイスで使用できる [機密ログ プロファイル] オプションは、選択した仮想サービスのアプリケーション ログ内の機密情報を非表示にするために使用されます。
機密ログ プロファイルに使用されるルールでは、正規表現 (Regex) がサポートされていません。
新しい機密ログ プロファイルを追加するか、既存のプロファイルを編集する手順は次のとおりです。
[編集] アイコンをクリックします。
の順に移動し、目的の仮想サービスを選択し、[分析] タブに移動し、[分析プロファイル] の編集オプションをクリックします。
[機密ログ情報] セクションまでスクロールダウンして、選択した仮想サービスのログをキャプチャするための新しいルールを追加するか、既存のルールを編集します。
新しいルールを追加するには、[作成] オプション([+] 記号)をクリックします。
既存のルールを編集するには、次に示すように編集オプションをクリックします。
目的の名前、一致するルール、および一致に必要なアクションを指定します。
[アクションを有効化] では、次のアクションを使用できます。
[削除] を選択して、ログから一致するフィールドを削除します。
[マスキング] を選択して、ログから一致するフィールドをマスキングします。
URI のマスキング
uri_query_field_rules
フィールドを使用して、ログ内の URI クエリ パラメータをマスキングできます。match_str[1]
のキーが定義された match_criteria
と一致する場合、値はマスキングされます。
サンプル構成を次に示します。
[admin]: > configure analyticsprofile example_profile [admin]: analyticsprofile> sensitive_log_profile [admin]: analyticsprofile:sensitive_log_profile> uri_query_field_rules [admin]: analyticsprofile:sensitive_log_profile:uri_query_field_rules> enabled [admin]: analyticsprofile:sensitive_log_profile:uri_query_field_rules> name "example_mask_rule" [admin]: analyticsprofile:sensitive_log_profile:uri_query_field_rules> action log_field_maskoff [admin]: analyticsprofile:sensitive_log_profile:uri_query_field_rules> match [admin]: analyticsprofile:sensitive_log_profile:uri_query_field_rules:match> match_str "password" [admin]: analyticsprofile:sensitive_log_profile:uri_query_field_rules:match> match_criteria contains
この構成では、一致ルールに一致するクエリ パラメータを含む要求を仮想サービスに送信すると、次に示すように、アプリケーション ログ内の URI(例:curl "VIP/?passwordfield=somepassword"
)がマスキングされます。
WAF ルールのマスキング
コア ルール セット (CRS) が REQUEST_COOKIES
と一致する場合は、CRS を [機密ログ プロファイル]([テンプレート] > [プロファイル] > [分析])の waf_field_rules
の一致要素として指定できます。
たとえば、Cookie、Args:Password などの機密性の高い一致を非表示にするルールを含むすべての WAF 仮想サービスに対して共通の分析プロファイルを維持できます。
CLI を使用したマスキングの構成
WAF ルールをマスキングするための分析プロファイルの構成は次のとおりです。
configure analyticsprofile 'some-common-analytics-profile' sensitive_log_profile name mask-waf-match-cookies match match_criteria equals match_str REQUEST_COOKIES action log_field_maskoff enabled true
sensitive_log_profile
は次のように表示されます。
+---------------------------------------+--------------------------------------------+ | Field | Value | +---------------------------------------+--------------------------------------------+ |sensitive_log_profile | | |header_field_rules[1] | | |name |1 | |enabled |True | |match | | |match_criteria |Equals | |string_group_refs[1] |cookie-group | |action |LOG_FIELD_MASKOFF | |waf_field_rules[1] | | |name |mask-waf-match-cookies | |enabled |True | |match | | |match_criteria |CONTAINS | |match_str[1] |REQUEST_Cookies | |action |LOG_FIELD_MASKOFF | +---------------------------------------+--------------------------------------------+
プロファイルはアプリケーション ログ(非 WAF)のヘッダーと WAF 一致をマスキングしています。
WAF 仮想サービスと非 WAF 仮想サービスをマスキングするには、異なるルール セットを定義する必要があります。
ポリシーの適用前後のテスト要求とアプリケーション ログは次のとおりです。
curl -vvv -k -H 'Host: foobar' -H 'Cookie: k=*script*alert(42);*script*' VIP
機密ポリシーを適用する前に、Cookie が WAF 一致とアプリケーション ログ ヘッダーに表示されます。
機密ポリシーを適用すると、WAF ログとアプリケーション ログ ヘッダーの両方で Cookie がマスキングされます。