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

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

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を試してみた

Takashi Yamaguchi

December 27, 2022
Tweet

More Decks by Takashi Yamaguchi

Other Decks in Technology

Transcript

  1. 株式会社 Gunosy
    Gunosy 技術戦略室 SRE
    山口 隆史
    2022年12月27日(火)
    AWS Security Hubのダッシュボードがイケてないので
    AWS Security Lakeを試してみた
    JAWS-UG千葉支部オンライン# 19

    View full-size slide

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

    View full-size slide

  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
    企業理念「情報を世界中の人に最適に届ける」

    View full-size slide

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

    View full-size slide

  5. (C) Gunosy Inc. All Rights Reserved.
    1. Security Hub運用上の課題

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  10. (C) Gunosy Inc. All Rights Reserved.
    2. Security Lakeを触ってみました

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  13. (C) Gunosy Inc. All Rights Reserved. PAGE | 13
    Security Lakeとは
    ここが欲し
    かった

    View full-size slide

  14. (C) Gunosy Inc. All Rights Reserved. PAGE | 14
    GunosyのAWS環境の全体像
    AWS環境のイメージ

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  17. (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}/

    View full-size slide

  18. (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/

    View full-size slide

  19. (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/

    View full-size slide

  20. (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

    View full-size slide

  21. (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"
    },

    View full-size slide

  22. (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" ]
    },

    View full-size slide

  23. (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": {<省略>
    }

    View full-size slide

  24. (C) Gunosy Inc. All Rights Reserved. PAGE | 24
    Athenaでクエリーしてみた
    構成
    - 社内の分析基盤(Lake Formation、Glue)を使用して、
    クエリーしました
    - アクセス許可、スキーマ設定をすればクエリー発行自体
    は簡単

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  27. (C) Gunosy Inc. All Rights Reserved. PAGE | 27
    今後の予定
    クールなダッシュボードを作っていきます!
    - 作ったら発表するので乞うご期待!

    View full-size slide

  28. 情報を世界中の人に最適に届ける

    View full-size slide