こんにちは。技術本部の技術戦略推進部に所属している髙橋 洋樹です。AWSのセキュリティをテーマにAmazon GuardDutyについて紹介している本ブログシリーズ。前回はサービス概要やその必要性などを説明しました。まだお読みでない方は、ぜひ「脅威検出の味方! Amazon GuardDutyとは」からご覧ください。
今回は前回の基礎情報を踏まえて、Amazon GuardDutyをより使いこなすためのアドバイスを5つご紹介したいと思います。私自身がプロジェクトを推進する中で経験したことなども併せてご紹介していきますので、ご参考になれば幸いです。
まず、Amazon GuardDutyは、AWSの全リージョンで有効化することをお勧めします。全リージョンとは、普段使用するリージョンに加えてDR(災害対策用バックアップサイト)環境、未使用環境まですべてを含みます。一見すると有効化の範囲は、普段使用する環境とDR環境側のリージョンで十分と思えるかもしれませんが、近年の攻撃者は、攻撃の発覚を遅らせようとリソースを使っていないような未使用リージョンを好んで狙ってくる傾向があります。よって、未使用リージョンも含めた全リージョンで漏れなくAmazon GuardDutyを有効化することが、脅威検出の遅延リスクを軽減するために非常に重要です。
全リージョンで有効化した場合コストが気になるところですが、Amazon GuardDutyはリージョン内の分析したログの量に応じて課金する料金体系を取っています。そのため、分析対象であるCloudTrailやVPC、DNSのログがほとんど発生しない未使用リージョンに対して有効化してもコストはほとんどかかりません。さらに、各リージョンで30日間の無料試用期間があるため、本格的な導入前にコストを把握することも可能です。
なお、Amazon GuardDutyはリージョン別のサービスであり、全リージョンで有効化する場合は個別に設定する必要がありますが、マネジメントコンソールで手動設定していくと作業時間がかかります。時間短縮のために自動化するのが良いでしょう。自動化の方法はいくつかありますが、ここではCloudFormation StackSetsを利用する方法をお勧めします。StackSetsを利用するとCloudFormationのIaCテンプレートを複数のリージョンにデプロイすることが可能なため、効率的にAWS環境全体のセキュリティを強化できます。
注意してほしいのですが、Amazon GuardDutyは脅威を検出した際の通知機能を備えていません!そのため、脅威にタイムリーに対応できるように別途通知の仕組みを構成しましょう。通知方法はいくつかありますが、AWS Security Hubを全リージョンで使用している場合、Security Hubのリージョン集約機能の活用をおすすめします。Security Hubのリージョン集約機能とは、他リージョンのセキュリティイベントを1つのリージョンに集約するものです。Amazon GuardDutyはSecurity Hubと統合されているため、Security HubでもAmazon GuardDutyの検出結果を確認することができます。これを利用して集約リージョンのSecurity Hubに通知設定を入れることで、全リージョンの通知を構成できます。
また、AWS User Notificationsを利用する方法もあります。AWS User Notificationによって、複数リージョンにまたがる通知を一か所で管理することができます。
複数のAWSのアカウントを利用している環境では、Amazon GuardDutyの検出結果を一つのAWSアカウントに集約することが可能です。これにより環境全体のセキュリティ状態を一元的に確認できます。CCoEなどクラウドの利活用を推進している部門が集約アカウントを確認し、各アカウントの管理者に対応を促すことで、組織全体のセキュリティの底上げが期待できます。
Amazon GuardDutyを利用するAWSアカウント数が多くなると、管理者が受け取る通知量は増加しますが、その中には誤検出も多く含まれます。効果的な通知システムを実現するためには、単純に全てを通知するのではなく、実際に対応が必要なケースに限定して通知範囲を絞り込むことで、対応精度を効率的に上げていく仕組みを作ることが重要です。
Amazon GuardDutyのアラートを制限する主な方法は二つ存在します。1つ目は抑制ルールを利用して、設定条件に合致する検出結果を自動的にアーカイブでるようにすることです。設定条件には、Amazon GuardDutyの検出結果タイプ、AWSリソースID、アクセス元のIPアドレスなど、複数の要素を組み合わせて指定することができます。抑制ルールの例として、様々な作業を試行錯誤する開発環境上では「普段とは異なる挙動」に該当する検出結果タイプをそもそも生成しないルールを生成することがあります。
2つ目はイベントルールを適切に設定することです。Amazon GuardDutyでは、下表の通り、各検出結果の重要度(severity)を数値で評価した上で、High/Medium/Lowの3レベルで分類しています。この分類を活用し、例えばHighのみを特定のチャネルに通知するようなルール設定をすることで、対応が必要な重要な通知を優先的に管理者に通知できるようになります。
表1. Amazon GuardDutyにおけるSeverity(重要度)について
脅威を検出した際には、とにかく迅速に対応を開始する必要があります。対応方針の検討で手間取ってはせっかくの脅威検出の仕組みが十分な効力を発揮できず、被害拡大を招きかねません。AWS上でのインシデント対応を適切に実施するために考えるべきことが、AWS Well-Architected Frameworkのセキュリティの柱で述べられているので事前の確認をお勧めします。
ここでは、セキュリティの柱の中で特に確認いただきたい「インシデント対応プレイブック」の整備についてご紹介しておきます。プレイブックはこれまでのインシデント対応手順書とは異なり、発生しうるインシデントシナリオに沿って、その状況毎に何を行い、どのように判断するかをまとめた詳細な手順書です。Amazon GuardDutyから受けとる通知毎に、対応するプレイブックをあらかじめ整備しておくことで、迅速かつ確実な対応が期待できます。GuardDutyのインシデント対応プレイブックのサンプルはAWSから公開されていますので良ければ参考にしてみてください。
今回はAmazon GuardDutyをより高度に活用していくための方法についてご紹介しました。 当社ではAWS包括的技術支援サービスを提供しているので、もしAWSのセキュリティに関して何かお困りのことがございましたらこちらからお気軽にお問い合わせください。それではまた次回のブログでお会いしましょう!