Azure Application Gateway のログを収集する
以下でサポートされています。
Google SecOps
SIEM
このドキュメントでは、Google Security Operations フィードを設定して Azure Application Gateway ログを収集する方法について説明します。このパーサーは、単一レコードと複数レコードの両方の JSON 構造を処理し、「records」配列からフィールドを抽出し、データ型の変換を行い、フィールドを UDM にマッピングして、ネットワーク接続タイプなどのメタデータと派生フィールドでデータを拡充します。また、さまざまな operationName
値の特定のロジックを処理し、関連する IP アドレス、サブネット、その他の構成の詳細を抽出します。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス
- Azure サブスクリプションへの特権アクセス
- Azure の Azure アプリケーション ゲートウェイ環境(テナント)
Azure Storage アカウントを構成する
- Azure コンソールで、[ストレージ アカウント] を検索します。
- [作成] をクリックします。
- 次の入力パラメータの値を指定します。
- Subscription: サブスクリプションを選択します。
- リソース グループ: リソース グループを選択します。
- Region: リージョンを選択します。
- パフォーマンス: パフォーマンスを選択します(標準が推奨)。
- 冗長性: 冗長性(GRS または LRS を推奨)を選択します。
- ストレージ アカウント名: 新しいストレージ アカウントの名前を入力します。
- [Review + create] をクリックします。
- アカウントの概要を確認して、[作成] をクリックします。
- [ストレージ アカウントの概要] ページで、[セキュリティとネットワーキング] のサブメニュー [アクセスキー] を選択します。
- [key1] または [key2] の横にある [Show] をクリックします。
- [クリップボードにコピー] をクリックして、キーをコピーします。
- キーは後で使用できるように安全な場所に保存します。
- [ストレージ アカウントの概要] ページで、[設定] のサブメニュー [エンドポイント] を選択します。
- [クリップボードにコピー] をクリックして、Blob サービス エンドポイント URL をコピーします。(例:
https://<storageaccountname>.blob.core.windows.net
)。 - エンドポイント URL は、後で使用できるように安全な場所に保存します。
Azure Application Gateway を構成する方法
- Azure ポータルにログインします。
- 目的のリソース グループに移動します。
- [アプリケーション ゲートウェイ] を選択します([アプリケーション ゲートウェイ] ウィンドウが表示されます)。
- [モニタリング] セクションで、[診断設定] > [診断を有効にする] を選択します。
- [診断設定を追加] を選択します([診断設定] ウィンドウに診断ログの設定が表示されます)。
- [log] セクションで、次の操作を行います。
- [ApplicationGatewayAccessLog] チェックボックスをオンにします。
- [ApplicationGatewayFirewallLog] チェックボックスをオンにします。
- ログをストレージ アカウントに保存する手順は次のとおりです。
- [ストレージ アカウントにアーカイブする] チェックボックスをオンにします。
- [サブスクリプション] リストで、既存のサブスクリプションを選択します。
- [ストレージ アカウント] リストで、既存のストレージ アカウントを選択します。
フィードを設定する
Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。
- [SIEM 設定] > [フィード]
- [Content Hub] > [Content Packs]
[SIEM 設定] > [フィード] でフィードを設定する
このプロダクト ファミリー内で異なるログタイプに対して複数のフィードを構成するには、プロダクトごとにフィードを構成するをご覧ください。
1 つのフィードを設定する手順は次のとおりです。
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- 次のページで、[単一フィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Azure Application Gateway Logs)。
- [ソースタイプ] で [Microsoft Azure Blob Storage] を選択します。
- [ログタイプ] として [Azure Application Gateway] を選択します。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
- Azure uri: Blob エンドポイント URL。
ENDPOINT_URL/BLOB_NAME
- 次のように置き換えます。
ENDPOINT_URL
: BLOB エンドポイントの URL。(https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
: blob の名前。(insights-logs-<logname>
など)
- 次のように置き換えます。
- URI is a: ログストリームの構成([単一ファイル] | [ディレクトリ] | [サブディレクトリを含むディレクトリ])に応じて URI タイプを選択します。
- Source deletion options: 取り込みの設定に応じて削除オプションを選択します。
- 共有キー: Azure Blob Storage のアクセスキー。
- アセットの名前空間: アセットの名前空間。
- Ingestion labels: このフィードのイベントに適用されるラベル。
- Azure uri: Blob エンドポイント URL。
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
コンテンツ ハブからフィードを設定する
次のフィールドに値を指定します。
- Azure URI: BLOB エンドポイント URL。
ENDPOINT_URL/BLOB_NAME
- 次のように置き換えます。
ENDPOINT_URL
: BLOB エンドポイント URL(https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
: blob の名前(insights-logs-<logname>
など)
- 次のように置き換えます。
- URI is a: ログストリームの構成([単一ファイル] | [ディレクトリ] | [サブディレクトリを含むディレクトリ])に応じて URI タイプを選択します。
- Source deletion options: 取り込みの設定に応じて削除オプションを選択します。
- 共有キー: Azure Blob Storage のアクセスキー。
詳細オプション
- フィード名: フィードを識別する事前入力された値。
- ソースタイプ: Google SecOps にログを収集するために使用される方法。
- Asset Namespace: フィードに関連付けられた名前空間。
- Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。
UDM マッピング テーブル
ログフィールド | UDM マッピング | 論理 |
---|---|---|
Category |
metadata.product_event_type |
Category フィールドから直接マッピングされます。 |
ClientOperationId |
additional.fields[].key:"ClientOperationId", value.string_value |
ClientOperationId フィールドから直接マッピングされます。 |
CorrelationRequestId |
additional.fields[].key:"CorrelationRequestId", value.string_value |
CorrelationRequestId フィールドから直接マッピングされます。 |
GatewayManagerVersion |
additional.fields[].key:"GatewayManagerVersion", value.string_value |
GatewayManagerVersion フィールドから直接マッピングされます。 |
category |
metadata.product_event_type |
category フィールドから直接マッピングされます。 |
level |
security_result.severity |
level フィールドから直接マッピングされ、大文字に変換されます。値が「WARNING」の場合、重大度は「HIGH」に設定され、security_result.severity_details は元の値に設定されます。 |
properties.clientIP |
principal.ip 、principal.asset.ip |
properties.clientIP フィールドから直接マッピングされます。 |
properties.clientPort |
principal.port |
properties.clientPort フィールドから直接マッピングされ、整数に変換されます。 |
properties.clientResponseTime |
additional.fields[].key:"clientResponseTime", value.string_value |
properties.clientResponseTime フィールドから直接マッピングされます。 |
properties.configuration.BgpConfiguration.GatewayConfig.Asn |
security_result.detection_fields[].key:"ASN", value |
operationName が「SetGatewayConfiguration」の場合、properties.configuration.BgpConfiguration.GatewayConfig.Asn フィールドから直接マッピングされます。 |
properties.configuration.BgpConfiguration.GatewayConfig.PeerAddress |
target.ip 、target.asset.ip |
operationName が「SetGatewayConfiguration」の場合、properties.configuration.BgpConfiguration.GatewayConfig.PeerAddress フィールドから直接マッピングされます。 |
properties.configuration.BgpConfiguration.GatewayConfig.PeerType |
security_result.detection_fields[].key:"PeerType", value |
operationName が「SetGatewayConfiguration」の場合、properties.configuration.BgpConfiguration.GatewayConfig.PeerType フィールドから直接マッピングされます。 |
properties.configuration.IkeVersion |
principal.resource.attribute.labels[].key:"ike_version", value |
operationName が「SetConnectionConfiguration」の場合、properties.configuration.IkeVersion フィールドから直接マッピングされます。 |
properties.configuration.LocalSubnets |
principal.resource.attribute.labels[].key:"local subnets", value |
operationName が「SetConnectionConfiguration」の場合の properties.configuration.LocalSubnets 配列の IP アドレスの連結文字列。 |
properties.configuration.LocalTunnelEndpoint |
principal.ip 、principal.asset.ip |
operationName が「SetConnectionConfiguration」の場合、properties.configuration.LocalTunnelEndpoint フィールドから直接マッピングされます。 |
properties.configuration.Name |
principal.hostname 、principal.asset.hostname |
properties.configuration.Name フィールドから直接マッピングされます。空の場合、値は properties.instance から取得されます。 |
properties.configuration.RemoteSite |
target.hostname 、target.asset.hostname |
properties.configuration.RemoteSite フィールドから直接マッピングされます。 |
properties.configuration.RemoteSubnets |
principal.resource.attribute.labels[].key:"remote subnets", value |
operationName が「SetConnectionConfiguration」の場合の properties.configuration.RemoteSubnets 配列の IP アドレスの連結文字列。 |
properties.configuration.RemoteTunnelEndpoint |
target.ip 、target.asset.ip |
operationName が「SetConnectionConfiguration」の場合、properties.configuration.RemoteTunnelEndpoint フィールドから直接マッピングされます。 |
properties.configuration.VIPAddress |
principal.ip 、principal.asset.ip |
operationName が「SetGatewayConfiguration」の場合、properties.configuration.VIPAddress フィールドから直接マッピングされます。 |
properties.configuration.VirtualNetworkRanges |
principal.resource.attribute.labels[].key:"virutal network ranges", value |
operationName が「SetGatewayConfiguration」の場合の properties.configuration.VirtualNetworkRanges 配列の IP アドレスの連結文字列。 |
properties.configuration.VirtualNetworkSubnets |
principal.resource.attribute.labels[].key:"virtual network subnets", value |
operationName が「SetGatewayConfiguration」の場合の properties.configuration.VirtualNetworkSubnets 配列の IP アドレスの連結文字列。 |
properties.error_info |
additional.fields[].key:"error_info", value.string_value |
properties.error_info フィールドから直接マッピングされます。 |
properties.host |
principal.hostname 、principal.asset.hostname |
properties.originalHost が空の場合、properties.host フィールドから直接マッピングされます。 |
properties.httpMethod |
network.http.method |
properties.httpMethod フィールドから直接マッピングされます。 |
properties.httpStatus |
network.http.response_code |
properties.httpStatus フィールドから直接マッピングされ、整数に変換されます。 |
properties.httpVersion |
network.application_protocol |
properties.httpVersion フィールドに「HTTP」が含まれている場合は、「HTTP」に設定されます。 |
properties.instance |
principal.hostname 、principal.asset.hostname |
properties.configuration.Name が空の場合、principal.hostname の値として使用されます。 |
properties.message |
metadata.description |
properties.message フィールドから直接マッピングされます。 |
properties.operationName |
additional.fields[].key:"operationName", value.string_value |
properties.operationName フィールドから直接マッピングされます。 |
properties.operationStatus |
security_result.category_details |
properties.operationStatus フィールドから直接マッピングされます。値が「Success」または「InProgress」の場合、security_result.action は「ALLOW」に設定されます。 |
properties.originalHost |
principal.hostname 、principal.asset.hostname |
properties.originalHost フィールドから直接マッピングされます。 |
properties.originalRequestUriWithArgs |
additional.fields[].key:"originalRequestUriWithArgs", value.string_value |
properties.originalRequestUriWithArgs フィールドから直接マッピングされます。 |
properties.receivedBytes |
network.received_bytes |
properties.receivedBytes フィールドから直接マッピングされ、符号なし整数に変換されます。 |
properties.requestQuery |
additional.fields[].key:"requestQuery", value.string_value |
properties.requestQuery フィールドから直接マッピングされます。 |
properties.requestUri |
target.url |
properties.requestUri フィールドから直接マッピングされます。 |
properties.sentBytes |
network.sent_bytes |
properties.sentBytes フィールドから直接マッピングされ、符号なし整数に変換されます。 |
properties.serverResponseLatency |
additional.fields[].key:"Server Response Latency", value.string_value |
properties.serverResponseLatency フィールドから直接マッピングされます。 |
properties.serverRouted |
target.ip 、target.asset.ip 、target.port |
IP とポートは、正規表現を使用して properties.serverRouted フィールドから抽出されます。 |
properties.sslCipher |
network.tls.cipher |
properties.sslCipher フィールドから直接マッピングされます。 |
properties.sslClientCertificateIssuerName |
network.tls.server.certificate.issuer |
properties.sslClientCertificateIssuerName フィールドから直接マッピングされます。 |
properties.sslProtocol |
network.tls.version |
properties.sslProtocol フィールドから直接マッピングされます。 |
properties.timeTaken |
additional.fields[].key:"timeTaken", value.string_value |
properties.timeTaken フィールドから直接マッピングされます。 |
properties.transactionId |
network.session_id |
properties.transactionId フィールドから直接マッピングされます。 |
properties.userAgent |
network.http.user_agent 、network.http.parsed_user_agent |
properties.userAgent フィールドから直接マッピングされます。また、このフィールドは解析されたユーザー エージェントに変換され、network.http.parsed_user_agent にマッピングされます。 |
properties.WAFEvaluationTime |
additional.fields[].key:"WAFEvaluationTime", value.string_value |
properties.WAFEvaluationTime フィールドから直接マッピングされます。 |
properties.WAFMode |
additional.fields[].key:"WAFMode", value.string_value |
properties.WAFMode フィールドから直接マッピングされます。 |
resourceId |
target.resource.id |
resourceId フィールドから直接マッピングされます。 |
resourceid |
target.resource.product_object_id |
resourceid フィールドから直接マッピングされます。 |
ruleName |
security_result.rule_name |
ruleName フィールドから直接マッピングされます。 |
time / timeStamp |
metadata.event_timestamp 、timestamp |
RFC 3339 形式または ISO8601 形式を使用してタイムスタンプとして解析されます。timeStamp が推奨されますが、timeStamp が存在しない場合は time が使用されます。 |
(パーサー ロジック) | metadata.event_type |
プリンシパルとターゲットの両方が存在する場合は「NETWORK_CONNECTION」に設定します。プリンシパルのみが存在する場合は「STATUS_UPDATE」に設定します。それ以外の場合は「GENERIC_EVENT」に設定します。 |
(パーサー ロジック) | metadata.product_name |
「Azure Gateway」に設定します。 |
(パーサー ロジック) | metadata.vendor_name |
「Microsoft」に設定します。 |
(パーサー ロジック) | has_principal |
ブール値のフラグ。プリンシパル情報(ホスト名、IP、ポート)が抽出された場合は「true」、それ以外の場合は「false」に設定されます。 |
(パーサー ロジック) | has_target |
ブール値のフラグ。ターゲット情報(ホスト名、IP、ポート、リソース ID、URL)が抽出された場合は「true」、それ以外の場合は「false」に設定されます。 |
(パーサー ロジック) | disambiguation_key |
1 つのログエントリから複数のイベントが抽出された場合に追加されます。 |