クラウドコンピューティングは柔軟性や拡張性など多くのメリットをがあります。また一方で、設定ミスや悪意のあるアクターによる潜在的なセキュリティ問題にも対処しなければなりません。Amazon Web Services(AWS)を利用している場合、Amazon GuardDutyはこれらの問題に対処するのに役立ちます。この記事では、GuardDutyをAWS CloudTrailやNew Relic Oneと組み合わせて、クラウドサービスの脅威を監視する方法をご紹介します。
Amazon GuardDutyは、AWSアカウント、ワークロード、データを保護する脅威検知サービスで、CloudTrailは、AWSインフラ全体のアクティビティを監視し、ログを記録することができるサービスです。
それらのツールをNew Relicのオブザーバビリティ・プラットフォームと統合することで、以下のことが可能になります:
- AWSのセキュリティおよびコンプライアンスイベントを、メトリクス、イベント、ログ、トレースなど、他のテレメトリデータと関連付け
- それらのイベントをNew Relic Oneのダッシュボードやプログラム可能なアプリで可視化し、レポートや表示への利用
- 迅速なセキュリティイベントの解決のための、チームへの警告
- GuardDutyの調査結果に関連するデータを、AWSが提供するクオータを超えてNew Relicに保持
次の画像は、GuardDuty の報告されたセキュリティ問題を New Relic ダッシュボードで可視化したものです。

AWS GuardDutyの設定
New Relic Logsを使ったAWS GuardDutyをセットアップするには、まず、GuardDutyからイベントを受信するためにAmazon EventBridgeを設定します。次にEventBridgeからイベントを受信してNew Relic LogsにストリーミングするためにAmazon Kinesis Firehoseの配信ストリームを設定する必要があります。そのアーキテクチャを次の図に示します。

EventBridgeとKinesis Firehoseの配信ストリームを介して、GuardDutyからアラートを送信する準備をする時が来ました。手順は次のとおりです:
- AWSからNew Relicにログを送るために、Kinesis Firehoseの配信ストリームを作成します。
- 監視対象のAWSアカウントのGuardDutyを有効にします。
- EventBridgeでルールを作成します。次の画像で示すように、各設定項目を以下のように設定してください。
設定項目名 | 設定値 |
---|---|
設定項目名Event matching pattern | 設定値Pre-defined pattern by service |
設定項目名Service provider | 設定値AWS |
設定項目名Service name | 設定値GuardDuty |
設定項目名Event type | 設定値All Events |

- Select targetsの項目では、Firehose delivery streamを選択し、ステップ1で作成したFirehoseの配信ストリームを選択してください。

- New Relic Oneで、Query your dataボタンをクリックし、以下のNRQLクエリを入力します。
FROM Log SELECT * WHERE detail.service.serviceName = 'guardduty'
データが表示されない場合は、GuardDuty コンソールで GuardDuty がすでに何かの発見を報告しているかどうかを確認します。各発見事項は、New Relic One の1つのログエントリになります。
CloudTrailの設定
New Relic One は、API ポーリングを使用してイベントを取り込む CloudTrail の統合を提供しています。このガイドを参考に、APIポーリング方式でAWSアカウントとNew Relic Oneを接続し、New Relic OneアカウントでCloudTrailイベントの取り込みを開始してください。
すでにCloudWatch Metric Streamsを使用してAmazon CloudWatchからメトリックデータを受信している場合でも、CloudTrailイベントを受信するためのAPIポーリング統合を設定する必要があります(これらはメトリックではなくイベントなので)。また、APIポーリング・インテグレーションを作成する際には、メトリクスの重複を防ぐためにCloudTrailのチェックボックスのみをチェックするようにしてください。

ダッシュボード・ビジュアライゼーションの追加
これらの調査結果をレポートするためには、QuickstartsダッシュボードライブラリからAWS Security & Complianceをインストールする必要があります。
New Relic Oneで、トップナビゲーションメニューのAppsの右にある虫眼鏡を選択し、Quickstartsを検索します。Quickstarts を使用したことがない場合は、Quickstarts を有効にするためのオプションが表示されます。

- AWS Securityを検索してダッシュボードにインポートしてください。
続いて、セットアップ手順を完了した後の、この統合の使用例を紹介します。
SSHブルートフォースアタック
FROM Log SELECT * WHERE detail.type = 'UnauthorizedAccess:EC2/SSHBruteForce' SINCE 7 days ago
GuardDutyは、SSHブルートフォースアタックを検出します。ブルートフォースアタックは、攻撃者が潜在的なパスワードの辞書を使用してパスワードを推測し、SSH経由でAmazon EC2インスタンスへのアクセスを試みるものです。

このような攻撃を軽減する方法のひとつとして、鍵ベースのSSH認証を設定するか、Bastionホストなどの既知のIPアドレスからのSSH接続のみを許可するセキュリティグループを使用することが挙げられます。
S3バケットに許可された公開または匿名アクセス
FROM Log SELECT * WHERE detail.type = 'Policy:S3/BucketAnonymousAccessGranted' SINCE 7 days ago
一般に公開されているS3バケットは、多くの有名なデータ漏洩やセキュリティインシデントの原因となっています。攻撃者は、安全でないS3バケットに保存された機密データにアクセスできる可能性があります。GuardDutyは、S3バケットの設定の変更を検知し、問題を引き起こす可能性のある設定ミスをハイライトします。
GuardDutyの調査結果に基づく警告
NRQL アラートを使用すると、GuardDuty がこれらの調査結果のいずれかを表面化したときに通知を受け取ることができます。上記の例を参考に、アラートに使用するクエリを以下に示します。
S3バケットに許可された公開または匿名アクセス
FROM Log SELECT count(*) WHERE detail.type = 'Policy:S3/BucketAnonymousAccessGranted'
SSHブルートフォースアタック
FROM Log SELECT count(*) WHERE detail.type = 'UnauthorizedAccess:EC2/SSHBruteForce'
次の図に示すように、GuardDuty がセキュリティイベントを検出するたびに通知されるように、静的な閾値を 1 に設定します。

結論
AWSのセキュリティおよびコンプライアンスイベントをNew Relic Oneアカウントに統合すると、AWS環境のセキュリティ問題を可視化することができます。また、適切なチームメンバーにアラートを通知し、その他のlogsやmetricsなどのテレメトリーデータとイベントを相関させることで、修正を加速させることができます。
次のステップ
まだNew Relicをお使いでない方は、こちらからサインアップしていただくと、New Relicのすべての機能をいつまでも無料でご利用いただけます。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。