Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

(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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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