https://aws.amazon.com/jp/blogs/news/aws-waf-log-analysis-considerations/
AWS WAFのCOUNTは他のルールにもマッチしているか評価するモードなのだが、生ログだと notTerminatingMatchingRulesカラムに保存される。しかし、Security LakeのGlue/Athenaで保存されるログにはnonTerminatingMatchingRulesカラムが見つからない。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
> DESCRIBE amazon_security_lake_table_hoge; # Table schema: # col_name data_type comment metadata struct<product: struct<version: string, name: string, vendor_name: string, feature: struct<name: string>>, event_code: string, uid: string, profiles: array<string>, version: string> time bigint time_dt timestamp cloud struct<region: string, provider: string> api struct<response: struct<error: string, message: string, data: string>, operation: string, version: string, service: struct<name: string>, request: struct<data: string, uid: string>> dst_endpoint struct<svc_name: string> actor struct<user: struct<type: string, name: string, uid_alt: string, uid: string, account: struct<uid: string>, credential_uid: string>, session: struct<created_time_dt: timestamp, is_mfa: boolean, issuer: string>, invoked_by: string, idp: struct<name: string>> http_request struct<user_agent: string> src_endpoint struct<uid: string, ip: string, domain: string> session struct<uid: string, uid_alt: string, credential_uid: string, issuer: string> policy struct<uid: string> resources array<struct<uid: string, owner: struct<account: struct<uid: string>>, type: string>> class_name string class_uid int category_name string category_uid int severity_id int severity string user struct<uid_alt: string, uid: string, name: string> activity_name string activity_id int type_uid bigint type_name string status string is_mfa boolean unmapped map<string, string> accountid string region string asl_version string observables array<struct<name: string, value: string, type: string, type_id: int>> # Partition spec: # field_name field_transform column_name asl_version identity asl_version region identity region accountid identity accountid time_dt_day day time_dt |
https://schema.ocsf.io/classes/security_finding?extensions=
Security LakeではOpen Cybersecurity Schema Framework (OCSF) を採用しており、このスキーマにマッピングされないデータがunmapped カラムに格納されるとのこと。以下のようにCOUNTが入っていることを確認できるので盲点であるが、詳しいドキュメントがない。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
> SELECT DISTINCT map_keys(unmapped) FROM amazon_security_lake_table_hoge LIMIT 10; {ja4Fingerprint=********, ruleGroupList[].ruleGroupId=AWS#AWSManagedRulesCommonRuleSet,AWS#AWSManagedRulesBotControlRuleSet,AWS#AWSManagedRulesKnownBadInputsRuleSet,AWS#AWSManagedRulesAmazonIpReputationList,AWS#AWSManagedRulesAnonymousIpList, ruleGroupList[].terminatingRule.action=BLOCK, nonTerminatingMatchingRules[].ruleId=AWSManagedRulesBotControlRuleSet, requestBodySizeInspectedByWAF=****, nonTerminatingMatchingRules[].action=COUNT, ja3Fingerprint=********, ruleGroupList[].terminatingRule.ruleId=********, requestBodySize=****} > SELECT unmapped['nonTerminatingMatchingRules[].ruleId'] , count(unmapped['nonTerminatingMatchingRules[].ruleId']) FROM amazon_security_lake_table_hoge WHERE unmapped['nonTerminatingMatchingRules[].action'] = 'COUNT' GROUP BY unmapped['nonTerminatingMatchingRules[].ruleId'] |
Was this helpful?
0 / 0
1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。