Aqua Security のログを収集する
概要
このパーサーは、Aqua Security ログからフィールドを抽出し、Unified Data Model(UDM)に変換します。message
フィールドを JSON として解析し、ユーザー、送信元 IP、その他の関連フィールドを抽出して UDM フィールドにマッピングし、action
フィールドに基づいてイベントを分類します。また、ルール名、説明、CVE の詳細などのセキュリティ コンテキストでデータを拡充します。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス。
- Aqua Security 管理コンソールへの特権アクセス。
フィードを設定する
Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。
- [SIEM 設定] > [フィード]
- [Content Hub] > [Content Packs]
[SIEM 設定] > [フィード] でフィードを設定する
フィードを構成する手順は次のとおりです。
- [SIEM Settings] > [Feeds] に移動します。
- [Add New Feed] をクリックします。
- 次のページで [単一のフィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Aqua Security Logs)。
- [Source type] として [Webhook] を選択します。
- [ログタイプ] として [Aqua Security] を選択します。
- [次へ] をクリックします。
- 省略可: 次の入力パラメータの値を指定します。
- Split delimiter: ログ行を区切るために使用される区切り文字(
\n
など)。 - Asset namespace: アセットの名前空間。
- Ingestion labels: このフィードのイベントに適用されるラベル。
- Split delimiter: ログ行を区切るために使用される区切り文字(
- [次へ] をクリックします。
- [Finalize] 画面でフィードの設定を確認し、[Submit] をクリックします。
- [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
- 秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、その場合以前の秘密鍵は無効になります。
- [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。 このエンドポイント URL をクライアント アプリケーション内で指定する必要があります。
- [完了] をクリックします。
コンテンツ ハブからフィードを設定する
次のフィールドに値を指定します。
- Split delimiter: ログ行を区切るために使用される区切り文字(
\n
など)。
詳細オプション
- フィード名: フィードを識別する事前入力された値。
- ソースタイプ: Google SecOps にログを収集するために使用される方法。
- アセットの名前空間: フィードに関連付けられた名前空間。
Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。
[秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、その場合以前の秘密鍵は無効になります。
[詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。 このエンドポイント URL をクライアント アプリケーション内で指定する必要があります。
Webhook フィード用の API キーを作成する
Google Cloud コンソール > [認証情報] に移動します。
[認証情報を作成] をクリックして [API キー] を選択します。
API キーのアクセスを Chronicle API に制限します。
エンドポイント URL を指定する
- クライアント アプリケーション内で、Webhook フィードで提供される HTTPS エンドポイント URL を指定します。
次の形式でカスタム ヘッダーの一部として API キーと秘密鍵を指定して、認証を有効にします。
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
推奨事項: API キーは URL 内で指定するのではなくヘッダーとして指定してください。
Webhook クライアントがカスタム ヘッダーをサポートしていない場合は、次の形式のクエリ パラメータを使用して API キーと秘密鍵を指定できます。
ENDPOINT_URL?key=API_KEY&secret=SECRET
以下を置き換えます。
ENDPOINT_URL
: フィード エンドポイントの URL。API_KEY
: Google SecOps に対する認証に使用する API キー。SECRET
: フィードの認証用に生成した秘密鍵。
Google SecOps 用に Aqua Security で Webhook を作成する
- Aqua Security コンソールにログインします。
- [設定] > [イメージ スキャン結果の Webhook] に移動します。
- [画像スキャン結果の送信を有効にする] チェックボックスをオンにします。
<ENDPOINT_URL>
、<API_KEY>
、<SECRET>
の順に入力します。- [保存] をクリックします。
UDM マッピング テーブル
ログフィールド(昇順) | UDM マッピング | 論理 |
---|---|---|
jsonPayload.action | metadata.event_type | 「jsonPayload.action」の値に基づいてマッピングされます。特定のマッピングについては、パーサーコードをご覧ください。 |
jsonPayload.action | security_result.summary | 直接マッピングされます。 |
jsonPayload.adjective | target.file.full_path | 'jsonPayload.container' が空の場合、直接マッピングされます。 |
jsonPayload.category | target.asset.category | 直接マッピングされます。 |
jsonPayload.cfappname | target.application | 直接マッピングされます。 |
jsonPayload.cfspace | principal.user.userid | jsonPayload.user が空の場合、直接マッピングされます。 |
jsonPayload.command | principal.ip | Grok パターン「user %{GREEDYDATA:user_id} \(%{IP:src_ip}\)」を使用して抽出されます。 |
jsonPayload.command | principal.user.userid | Grok パターン「user %{GREEDYDATA:user_id} \(%{IP:src_ip}\)」を使用して抽出されます。 |
jsonPayload.container | target.asset.product_object_id | 直接マッピングされます。 |
jsonPayload.data | security_result.detection_fields | Key-Value ペアとして解析され、security_result.detection_fields 内の個々のフィールドにマッピングされます。 |
jsonPayload.description | security_result.description | 「jsonPayload.reason」が空の場合、直接マッピングされます。 |
jsonPayload.host | principal.hostname | 直接マッピングされます。 |
jsonPayload.hostgroup | target.group.group_display_name | 直接マッピングされます。 |
jsonPayload.hostid | target.asset_id | 「ホスト ID: %{jsonPayload.hostid}」としてマッピングしました。 |
jsonPayload.hostip | target.ip | 直接マッピングされます。 |
jsonPayload.image | target.file.full_path | 直接マッピングされます。 |
jsonPayload.level | security_result.action | jsonPayload.level が「success」の場合は「ALLOW」に設定します。 |
jsonPayload.reason | security_result.description | 直接マッピングされます。 |
jsonPayload.rule | security_result.rule_name | 直接マッピングされます。 |
jsonPayload.user | principal.user.userid | 直接マッピングされます。 |
jsonPayload.vm_location | target.asset.location.name | 直接マッピングされます。 |
jsonPayload.vm_name | target.resource.name | 直接マッピングされます。 |
resource.labels.instance_id | target.resource.id | 直接マッピングされます。 |
resource.labels.project_id | target.asset.attribute.cloud.project.id | 直接マッピングされます。 |
resource.labels.zone | target.asset.attribute.cloud.availability_zone | 直接マッピングされます。 |
timestamp | metadata.event_timestamp | ISO8601 形式に変換された後、直接マッピングされます。 |
extensions.auth.type | 「jsonPayload.description」に「SAML」が含まれている場合は「SSO」に設定します。それ以外の場合で、「jsonPayload.action」が「login」または「Login」の場合は、「AUTHTYPE_UNSPECIFIED」に設定します。 | |
metadata.log_type | 「AQUA_SECURITY」に設定します。 | |
metadata.product_name | 「AQUA_SECURITY」に設定します。 | |
metadata.vendor_name | 「AQUA_SECURITY」に設定します。 | |
target.asset.attribute.cloud.environment | 「GOOGLE_CLOUD_PLATFORM」に設定します。 | |
target.resource.type | 「VIRTUAL_MACHINE」に設定します。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。