[入門]社内勉強会で AWS Security Hubの話をしました

社内勉強会で AWS Security Hub の話をしました。内容をブログにまとめます。
2020.08.18

大阪オフィスの川原です。

社内勉強会で AWS Security Hub の話をしました。 内容をブログにまとめます。

目次

  1. とりあえず始めてみよう
  2. Security Hub とは?
  3. セキュリティ標準
  4. 検出結果, ASFF
  5. ASFF属性ピックアップ
  6. Tips
  7. スライド
  8. 参考

とりあえず始めてみよう

Security Hub の細かい説明をする前に、 とりあえず有効化して AWS環境のセキュリティチェックを始めてみましょう。

まず、Security Hub を有効化するリージョンの AWS Config を事前に有効化 します。

Security Hub の画面に行きましょう。 ここから 数クリックで始めることができます。

img

セキュリティ標準「AWS基礎セキュリティのベストプラクティス」 は AWSの基本的なサービスをカバーできるためオススメです

有効化したらしばらく待ちましょう。 全体スコアや各チェック項目の結果を確認できるようになります。

img

数クリックで AWS環境のセキュリティチェック環境ができました!

Security Hub とは?

改めて Security Hub の概要説明します。

Q: AWS Security Hub とは何ですか?

AWS Security Hub は、 AWS 内のセキュリティの状態と、セキュリティ標準およびベストプラクティスに準拠しているかどうかを、包括的に把握 できるようにします。 Security Hub は、AWS のアカウント、サービス、サポート対象のサードパーティーパートナーの全体にわたって セキュリティの検出結果を一元化および優先順位を設定 することで、セキュリティの傾向を分析し、最も重要なセキュリティの問題を特定します。

– 引用: https://aws.amazon.com/jp/security-hub/faqs/

Security Hub は以下を実施できるサービスです。

  • セキュリティサービスの検出結果を一元管理
  • AWS内のセキュリティの状態を把握・評価

Security Hub は多くの AWSサービスと連携しています。図で表すと以下になります。

img

GuardDutyの脅威検知の結果や、Config ルールの準拠/非準拠の情報を 検出結果(Findings)という「統一されたフォーマットのデータ」に集約 します。 検出結果を Security Hub コンソールで確認できます。

セキュリティ標準

Security Hub の主要な機能である「セキュリティ標準」について説明します。

セキュリティ標準とは

ベストプラクティスや業界標準に基づいた、継続的なAWS環境の自動チェック ができます。

img

Security Hub の 1機能ですが、これをメインに利用されている方が多いと思います。

有効化したセキュリティ標準で AWS環境を継続的にチェックします。 コンソールで総合的なスコアや、各セキュリティチェック結果を確認できます。

セキュリティ標準/コントロール

Security Hub では現在(2020/08/20) 以下の セキュリティ標準( Standards ) が用意されています。

  • CIS AWS Foundations
  • Payment Card Industry Data Security Standard (PCI DSS)
  • AWS の基本的なセキュリティのベストプラクティス

これらセキュリティ標準を有効化することで、 コントロール ( Control )というセキュリティチェック項目が生成されます。

img

※ コントロールの多くは、内部的に AWS Configのマネージドルール を活用しています。 各セキュリティ標準を有効化すると、それに対応する Configマネージドルールが 自動的に生成されます。Configマネージドルールによるチェック結果が 検出結果として保存されます。

スコアを上げよう

生成されたコントロールによるチェックに どれだけ合格したか、スコアとして確認できます。

img

有効化したあとは結果を確認、セキュリティ対応(=スコア上げ)しましょう。
対応していく際に役立つ Tipsを説明していきます。

スコアを上げよう #修復

コントロールから 修復手順 の情報が載ったページを見ることができます。

img

スコアを上げよう #重要度(Severity)

各コントロールには 重要度(Severity) 属性が付与されています。以下 5つのいずれかです。

  • INFORMATIONAL – 問題は見つかりませんでした。
  • LOW – この問題は単独で対処する必要はありません。
  • MEDIUM – この問題は対処する必要がありますが、緊急ではありません。
  • HIGH – この問題は優先事項として対処する必要があります。
  • CRITICAL – この問題は悪化しないようにすぐに修正する必要があります。

引用: AWS Security Finding 形式 #Severity | AWSドキュメント

セキュリティ標準のコントロール一覧画面でフィルタできます。

img

CRITICAL/HIGH など高い重要度のコントロールから順番に解決していくと良いです。

スコアを上げよう #無効化

▼ コントロール単位の無効化

コントロールの [無効化] を選択することで、コントロールを無効にできます。 無効化したコントロールはチェックの対象外になります。(関連して生成している Configルールも削除)

img

一部のコントロールは要求されるレベルが高かったりします。 そこまで対応はしなくても良いかな、というコントロールは無効化すると良いと思います。

弊社ブログにもいくつか Security Hub のチューニング案があるので参考ください。

▼ リソース単位の無効化

リソース単位の無効化 も可能です。 ワークフローステータスの SUPPRESSED(抑制済み) を使用します。

img

SUPPRESSED(抑制済み) にした検出結果は 無視 されます。

「コントロールは有効化しておきたいが、リソースの例外を登録したい」、 もしくは「何らかの理由で正常なチェックが出来ていない( ステータス:不明 になる ※)」 場合などに 利用を検討すると良いです。

ステータス:不明 になる原因はコントロール内に WARNINGNOT_AVAILABLE の検出結果があるためです。 これらの状態になる原因を探すときは、以下ドキュメントが参考になります。

img

検出結果, ASFF

Security Hub は多くのAWSサービスと連携していて、 各サービスの情報を 検出結果として集約 しています。 もちろん前述の「セキュリティ標準」も実体は 検出結果の集合 です。

この検出結果のフォーマットを AWS Security Finding 形式(ASFF) と言います。 様々なセキュリティサービスの結果を ASFFという統一のフォーマットに収めることで、 データ変換の作業が不要になるメリットがあります。

ASFFの理解は Security Hub活用の助けになります。

AWS Security Finding 形式(ASFF)

以下 公式ドキュメント(ASFF)は Security Hub活用で何度も読むことになります。

ASFF は JSONの構文です。属性の一部を挙げます。

  • 取得/更新日時
  • 検出元のサービス名
  • 詳細情報(脅威に関する情報、セキュリティチェック結果など)
  • 重要度

また、ASFFの属性はアップデートでどんどん追加されています。 最近のアップデートで追加された属性を以下ピックアップします。

  • (2020/04/16) Workflow.Status :: 検出結果の調査ステータス
  • (2020/05/20) Compliance.StatusReasons :: コントロールステータスの理由
  • (2020/07/01) Vulnerabilities :: 関連する脆弱性の情報

参考: Security Hub Console #What's new

※次章 ASFF属性ピックアップ でよく使いそうなものをピックアップしています。

検出結果の検索

[検出結果(Findings)] から 検出結果を検索できます。 フィルター・グループ化ができます。

img

英語で見ることをオススメします。 日本語(訳)だと、フィルタ項目に対応する ASFFの属性名が分かりにくいためです。

はじめはフィルタに何を入力すれば良いか分からないかも知れませんが、 実際の検出結果を眺めて、対応するフィルタ項目が分かればそこまで難しくありません。

以下はマルチアカウント環境で「セキュリティチェックに失敗した検出結果を AWSアカウントごとに集計」した例です。

img

インサイト

インサイトは関連する検出結果の集合です。 ざっくりいうと 「検出結果の検索」のプリセット集 みたいなものです。 該当する検出結果の推移など確認できます。 セキュリティの問題を継続的に追跡したいときに役立ちます。

img

デフォルトで組み込みの マネージドインサイト がいくつか提供されています。

  • 1.ほとんどの検出結果を含む AWS リソース
  • 2.パブリック書き込みまたは読み取りアクセス許可を含む S3 バケット
  • 3.最も多くの結果を生成している AMI
  • .etc

また、自前でインサイトを作成する カスタムインサイト があります。 フィルタする項目、グループ化する項目を定めて作成します。

ASFF属性ピックアップ

いくつか、ASFF属性をピックアップしてみます。 検出結果の検索や、Events 周りで使えそうな項目を主観で並べてみました。

基本情報

  • AwsAccountId :: 結果条件が適用される AWS アカウントID
  • CreatedAt :: 作成された日時
  • UpdateAt :: 最後に更新した日時
  • Title :: 検出結果のタイトル
  • Description :: 説明

▼ Title, Description の例

  • セキュリティ標準 コントロールからの検出結果
    • Title :: S3.4 S3 buckets should have server-side encryption enabled
    • Description :: This AWS control checks that your Amazon S3 bucket either has Amazon S3 default encryption enabled or that the S3 bucket policy explicitly denies put-object requests without server side encryption.
  • GuardDuty からの検出結果
    • Title :: Credentials for instance role banking-WAF-Role-xyz used from external IP address.
    • Description :: Credentials created exclusively for an EC2 instance using instance role banking-WAF-Role-xyz have been used from external IP address A.B.C.D.

識別子

  • ProductArn :: Security Hub によって生成された ARN。
  • Types :: ASFFのタイプ分類 (名前空間/カテゴリ/分類子)
  • GeneratorId :: 識別子
  • Id :: 検出結果の製品固有の識別子。AWSサービスの場合 ARN

サービス単位のフィルタリングや、特定の検出結果の調査を行うときに利用できます。

▼ 例

  • セキュリティ標準 コントロールからの検出結果
    • ProductArn :: arn:aws:securityhub:ap-northeast-1::product/aws/securityhub
    • Types :: Software and Configuration Checks/Industry and Regulatory Standards/AWS-Foundational-Security-Best-Practices
    • GeneratorId :: aws-foundational-security-best-practices/v/1.0.0/S3.4
    • Id :: arn:aws:securityhub:ap-northeast-1:XXXXXXXXXXXX:subscription/aws-foundational-security-best-practices/v/1.0.0/S3.4/finding/ebfa3e8c-aaaa-bbbb-cccc-abcdefg
  • GuardDuty からの検出結果
    • ProductArn :: arn:aws:securityhub:ap-northeast-1::product/aws/guardduty
    • Types :: Effects/Data Exfiltration/UnauthorizedAccess:IAMUser-InstanceCredentialExfiltration
    • GeneratorId :: arn:aws:guardduty:ap-northeast-1:XXXXXXXXXXXX:detector/02abcdefg1234567890sample
    • Id :: arn:aws:guardduty:ap-northeast-1:XXXXXXXXXXXX:detector/02abcdefg1234567890sample/finding/9eb9ab2abcdefg

リソース情報

  • Resources :: リソースの情報

リソースの詳細情報です。 通知や修復の仕組みを作るときに活用できます。

▼ 例

# セキュリティ標準 コントロールからの検出結果
"Resources": [
  {
    "Type": "AwsS3Bucket",
    "Id": "arn:aws:s3:::example-bucket",
    "Partition": "aws",
    "Region": "ap-northeast-1",
    "Details": {
      "AwsS3Bucket": {
        "OwnerId": "b488649bacxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
]

# GuardDuty からの検出結果
"Resources": [
 {
   "Type": "AwsIamAccessKey",
   "Id": "AWS::IAM::AccessKey:ASIAXXXXXXXXXXXXXXXX",
   "Partition": "aws",
   "Region": "ap-northeast-1",
   "Details": {
     "AwsIamAccessKey": {
       "UserName": "banking-WAF-Role-xyz"
     }
   }
 }
]

重要度

  • Severity :: 重要度

Severity.Label などを通知のフィルタリングなどに利用できます。

▼ 例

# セキュリティ標準 コントロールからの検出結果
"Severity":{
   "Product": 40,
   "Label": "MEDIUM",
   "Normalized": 40,
   "Original": "MEDIUM"
}

# GuardDuty からの検出結果
"Severity":{
   "Product": 8,
   "Label": "HIGH",
   "Normalized": 75
}

ステータス

  • RecordState :: 検出結果の記録状態 ( ACTIVE|ARCHIVED )
  • Workflow :: 検出結果の調査ステータス
  • Compliance :: コントロールに関連する検出結果の詳細

アーカイブされた検出結果(RecordState = ARCHIVED )はデフォルトで非表示になります。 すぐに削除はされず、検索して見ることができます。

Workflow.Status は検出結果の調査ステータスです。 検出結果に対して、「レビューを行ったか」「修正され、解決済みになったか」などのステータスを設定できます。 Compliance.Status にはセキュリティチェックの結果が入ります。

セキュリティ標準におけるコントロールの結果( 成功/失敗/不明 ) は Workflowと Compliance の値によって決まります。(詳細は下記参照)

Tips

カスタムアクション

カスタムアクションを作成して、実行することで CloudWatch イベントを飛ばすことができます。

img

特定コントロール用のカスタムアクションと、そのイベントをトリガーに実行される Lambda関数 など 修復の仕組みを構築できます。

以下、セキュリティグループの修復にカスタムアクションを利用したブログです。

通知設定(Chatbot)

Security Hub 検出結果のイベントを メールや Slackに通知できます。

img

利用できるイベントは以下の 3つです。

  • Security Hub Findings - Imported :: すべての検出結果
  • Security Hub Findings - Custom Action :: カスタムアクションに関連付けられた結果
  • Security Hub Insight Results :: インサイトに関連付けられた結果

Security Hubの新規検出結果を通知する場合は Security Hub Findings - Imported を利用します。

業務で Slackを利用している場合は、ぜひ Chatbotを活用ください。重要度ごとに色分けしてくれます。

img

※フィルタをしないと大量の通知が来ます。 失敗したセキュリティチェック・重要度の高いセキュリティチェックなど、適宜フィルタリングしましょう。

統合

サードパーティのセキュリティサービスの結果を Security Hubの検出結果に取り込むことができます。

img

以下、Dome9 の結果を連携したブログです。統合の一例として参考ください。

Detective 連携

Amazon Detective はセキュリティイベントの検知後の分析や調査に役立つサービスです。 Detective の詳細は下記参照ください。

Security Hub の GuardDuty 検出結果 から Detectiveによる調査をスムーズに実行できます。

img

マルチアカウント利用

マスターアカウント/メンバーアカウントの関係を作ることで、マスターアカウントの Security Hub 上で メンバーアカウント分の検出結果を確認・操作できます。

img

※ マルチアカウント構成(マスターアカウント/メンバーアカウント) は 他のセキュリティサービス: GuardDutyや Detective でも構成できます。 GuardDuty/Security Hub/Detective を活用する場合、これらサービスの マスターアカウント/メンバーアカウントは 同じ構成にしましょう。(Detectiveの連携がスムーズにいきます)

ほか AWSセキュリティチェックサービスとの比較

AWS環境のセキュリティチェックとして見たときに、他にも似たようなAWSサービスがあります。 主に以下の 2つです。

  • Trusted Advisor :: 「コスト最適化」、「パフォーマンス」、 「セキュリティ」 、「フォールトトレランス」、「サービスの制限」 の観点から、AWS環境を自動チェック。
  • Config (適合パック) :: AWSリソースの構成・設定履歴を管理。 Configルール、Config 適合パックを使ったコンプライアンスチェック 。

Trusted Advisor の「セキュリティ」項目で 最低限のセキュリティチェックを行えます。

Config 適合パックの実体は Configルール(+修復アクション)の集合です。 Security Hub セキュリティ標準も内部的には Configルールを利用しているということもあり、 使い分けに迷うことがあります。

以下ブログに使い分けをまとめています。

スライド

参考