Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JAWS-UG千葉支部 #19 AWS Security Hubのダッシュボードがイケてないの...

JAWS-UG千葉支部 #19 AWS Security HubのダッシュボードがイケてないのでAWS Security Lakeを試してみた

2022/12/27 JAWS-UG千葉支部オンライン#19 re:Invent 2022 re:Cap
AWS Security HubがイケてないのでAWS Security Lakeを試してみた

Avatar for Takashi Yamaguchi

Takashi Yamaguchi

December 27, 2022
Tweet

More Decks by Takashi Yamaguchi

Other Decks in Technology

Transcript

  1. 株式会社 Gunosy Gunosy 技術戦略室 SRE 山口 隆史 <YAMAGUCHI Takashi> 2022年12月27日(火)

    AWS Security Hubのダッシュボードがイケてないので AWS Security Lakeを試してみた JAWS-UG千葉支部オンライン# 19
  2. (C) Gunosy Inc. All Rights Reserved. PAGE | 2 自己紹介

    氏名:山口隆史(やまぐちたかし) 所属:株式会社Gunosy 技術戦略室 SRE 業務:Pure SREとしての活動 略歴:フリーランス、SIer等を渡り歩く→現職(2022/01〜) 自称:プリセールスから運用までこなすフルスタックエンジニア 好きなAWSサービス:AWS WAF、CloudShell、サポート
  3. (C) Gunosy Inc. All Rights Reserved. PAGE | 3 株式会社Gunosy

    ギリシャ語で「知識」を意味する「Gnosis(グノーシス)」+「u(“you”)」 「”Gnosis” for “you”」あなたのための知識  =情報を届けるサービスを提供し続ける、という意味 ▪ 2012年11月創業 ▪ 2015年4月東証マザーズ上場 ▪ 2017年12月東証第一部に市場変更 ▪ 従業員数 258名 (2022年5月末現在 連結ベース) ▪ 事業内容 – 情報キュレーションサービスその他メディアの開発及び 運営 ▪ 提供サービス  グノシー、ニュースパス、 auサービスToday 企業理念「情報を世界中の人に最適に届ける」
  4. (C) Gunosy Inc. All Rights Reserved. PAGE | 4 アジェンダ

    話すこと - AWS Security Hubの運用の課題 - AWS Security Lakeを触ってみました
  5. (C) Gunosy Inc. All Rights Reserved. PAGE | 6 Security

    Hub運用上の課題 委任アカウントを指定した運用の場合に、ダッシュボードが使いにくい - アカウント別にCRITICAL何件、HIGH何件が検知されたという表示がない - kube-bench、Trivy等で検知した情報を集約した場合に、それをアカウント別・製品別・ Severity 別に抽出するのが困難 - 委任アカウント側で、リソース抑制しても伝搬しない
  6. (C) Gunosy Inc. All Rights Reserved. PAGE | 7 今まで検討したこと

    ▪ 検知ツールの情報をS3に出 力してダッシュボードを作る ▪ 検知ツールのダッシュボード に寄せる ▪ Security Hubの情報がシュッと 定期的に出力できなかった ▪ SIEM系、Prismaは料金が… ▪ 検知ツールだと網羅性が足りな かったり – Snyk、Armo等々
  7. (C) Gunosy Inc. All Rights Reserved. PAGE | 8 Security

    Lakeに期待していること ▪ 検知ツールの情報をS3に出 力してダッシュボードを作る ▪ 検知ツールのダッシュボード に寄せる ▪ 設定で定期的に出力してくれる ▪ Security Hubに集約して、 Athenaでクエリー書けばなんと かなりそう ▪ QuickSightも使えばドリルダウン できるかも
  8. (C) Gunosy Inc. All Rights Reserved. PAGE | 9 Security

    Lakeに期待していること Security Hubのダッシュボードの代替 - SREが実施しているふりかえりの時に - アカウント別にCRITICAL何件、HIGH何件が検知という情報をもとにトリアージしたい - ドリルダウンして検知したリソース名、内容を確認したい - kube-bench、Trivy等で検知した情報を集約して、見やすい形でダッシュボード表示したい - Security Hubには集約できるが、Security Hubが見やすくないので このような形式で、アカ ウント別、検知ツール別 に表示したい Snykの画面サンプル
  9. (C) Gunosy Inc. All Rights Reserved. PAGE | 11 Security

    Hubとは AWS Security Hub は、セキュリティのベストプラクティスのチェックを行い、アラートを集約 し、自動修復を可能にするクラウドセキュリティ体制管理サービスです。
  10. (C) Gunosy Inc. All Rights Reserved. PAGE | 12 Security

    Lakeとは Amazon Security Lake は、クラウド、オンプレミス、およびカスタムソースからのセキュリティデータを、アカウントに 保存されている専用のデータレイクに自動的に一元化します。 Security Lake は、オープンスタンダードである Open Cybersecurity Schema Framework (OCSF) を採用しています。
  11. (C) Gunosy Inc. All Rights Reserved. PAGE | 15 Security

    Lakeを有効化 OrganizationのOU構成 Root - プロダクションOU - プロダクション1本番 - プロダクション1非本番 - ・・・ - SandboxOU - Sandboxアカウント - SecurityOU - Log用アカウント - SecurityGuardRail用アカウント (委任アカウント) ▪ 委任しているので、委任アカウン ト側で有効化が必要でした – 委任アカウントのS3に全アカ ウント分出力される感じです
  12. (C) Gunosy Inc. All Rights Reserved. PAGE | 16 Security

    Lake有効化した後の作業 S3のオブジェクト所有者のACLの無効化をしておく - 無効化しておかないと別アカウントから Readできない - ACL 無効 (推奨)となっているが、ACL 有効がデフォルト
  13. (C) Gunosy Inc. All Rights Reserved. PAGE | 17 Security

    Lakeで出力されるS3の状態 S3の名前 - aws-security-data-lake-{region}-{ランダム値} - みたいなバケット名が自動で生成された S3のフォルダ構成 - CloudTrail等とは違ってApache HiveのPartition形式になっている aws/ CLOUD_TRAIL/ ROUTE53/ SH_FINDINGS/ VPC_FLOW/ region={リージョン名}/ accountId={アカウントID}/ eventHour={yyyy}{mm}{dd}{hh}/
  14. (C) Gunosy Inc. All Rights Reserved. PAGE | 18 Security

    Lakeで出力されるスキーマ Security Hubのスキーマ - OCSFのSecurity Findingと思われる - https://schema.ocsf.io/classes/security_finding?extensions= - 全体 - https://schema.ocsf.io/
  15. (C) Gunosy Inc. All Rights Reserved. PAGE | 19 Security

    Lakeで出力されるスキーマ Security Hubのスキーマ - OCSFのSecurity Findingと思われる - https://schema.ocsf.io/classes/security_finding?extensions= - 全体 - https://schema.ocsf.io/
  16. (C) Gunosy Inc. All Rights Reserved. PAGE | 20 Security

    Lakeで出力されるスキーマ Security Hubのスキーマ - Optional項目が大量にあり、出力データにもあったりなかったりですが、スキーマとして全て指 定しておかないとAthenaでエラーになります - org.apache.parquet.io.PrimitiveColumnIO cannot be cast to org.apache.parquet.io.GroupColumnIO
  17. (C) Gunosy Inc. All Rights Reserved. PAGE | 21 出力されたデータ(1/3)

    { "metadata": { "product": { "version": "2018-10-08", "feature": { "uid": "aws-foundational-security-best-practices/v/1.0.0/EC2.24", "name": "Security Hub" }, "uid": "arn:aws:securityhub:ap-northeast-1::product/aws/securityhub", "vendor_name": "AWS", "name": "Security Hub" }, "version": "0.32.0" }, "time": 1671951903000, "severity": "INFORMATIONAL", "state": "RESOLVED", "cloud": { "account_uid": "xxxxxxxxxxx", "region": "ap-northeast-1", "provider": "AWS" },
  18. (C) Gunosy Inc. All Rights Reserved. PAGE | 22 出力されたデータ(2/3)

    "resources": { "array": [ { "type": "AwsEc2Instance", "uid": "arn:aws:ec2:ap-northeast-1:xxxxxxxxx:instance/i-xxxxxxxx", "cloud_partition": "aws", "region": "ap-northeast-1", "details": "{\"AwsEc2Instance\":{\"VpcId\":\<省略>" } ] }, "finding": { "created_time": 1671951903000, "uid": "arn:aws:securityhub:ap-northeast-1:xxxxxxxxxx:subscription/aws-foundational-security-best-practices/v/1.0.0/EC2.24/finding/xxxxxxxxxxx", "desc": "This control checks whether the virtualization type of an EC2 instance is paravirtual. The control fails for an EC2 instance if ‘virtualizationType’ is set to ‘paravirtual’.", "title": "EC2.24 EC2 paravirtual instance types should not be used", "modified_time": 1671957019000, "first_seen_time": 1671951903000, "last_seen_time": 1671957382000, "types": { "array": [ "Software and Configuration Checks/Industry and Regulatory Standards/AWS-Foundational-Security-Best-Practices" ] },
  19. (C) Gunosy Inc. All Rights Reserved. PAGE | 23 出力されたデータ(3/3)

    "compliance": { "status": "PASSED" }, "process": { "file": { "type_id": 0, "name": "''" }, "parent_process": {} }, "class_name": "Security Finding", "class_uid": 2001, "category_name": "Findings", "category_uid": 2, "activity_id": 0, "activity_name": "Unknown", "type_name": "Security Finding: Unknown", "type_uid": 200100, "state_id": 4, "severity_id": 1, "unmapped": {<省略> }
  20. (C) Gunosy Inc. All Rights Reserved. PAGE | 24 Athenaでクエリーしてみた

    構成 - 社内の分析基盤(Lake Formation、Glue)を使用して、 クエリーしました - アクセス許可、スキーマ設定をすればクエリー発行自体 は簡単
  21. (C) Gunosy Inc. All Rights Reserved. PAGE | 25 イケてるところ(少し触ってわかった範囲)

    抑制リソースを取得するのが簡単 - Athenaでクエリーすればシュッと取得できる アカウント別にSeverityのカウントができそう - 課題(後述)はあるけどクエリー書けばできそう ドリルダウンもゴリゴリやればできそう - クエリー書けばいけそう 一手間かければ 夢がありそうな感 触
  22. (C) Gunosy Inc. All Rights Reserved. PAGE | 26 わかった課題(少し触ってわかった範囲)

    現在の状態を取得するのが難しいかも - すでに存在しない情報がファイルに存在している - 削除済みのリソース - すでに無いコントロール - 無効化したコントロール - なのでfinding ID+リソースで、最新の状態を取得する必要がある - どこまでの範囲をクエリー対象にしたらいいのかはテストして確認が必要
  23. (C) Gunosy Inc. All Rights Reserved. PAGE | 27 今後の予定

    クールなダッシュボードを作っていきます! - 作ったら発表するので乞うご期待!