Microsoft 365 Defender (Microsoft Defender for Cloud Apps) に AWS アカウントを接続してセキュリティ監査機能を使ってみた

2023.02.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

マルチクラウドのパターンの一つとして、あるサービスで Azure や AWS、その他 SaaS など幅広いアカウントを統一して管理する場合があります。

以前は Azure Security Center という機能に AWS Security Hub を統合することで、Security Hub が出力した結果を Azure 上へ表示することが出来ました。

今は Azure Security Center は名称や機能が変わって Microsoft Defender for Cloud になっています。
Microsoft Defender for Cloud では AWS アカウントを接続するためにネイティブコネクターとクラシックコネクターの 2 つのモードが用意されています。

クラシックコネクターについては、以前の Azure Security Center で利用していたものと似ています。
AWS 上で Security Hub を有効化し、AWSSecurityHubReadOnlyAccess や SecurityAudit などのマネージドポリシーがアタッチされた IAM ユーザーを使って AWS 上のセキュリティ管理を行うことが出来ます。

一方でネイティブコネクターは予め用意された CloudFormation テンプレートをデプロイすることで、Azure AD トークンを使って OIDC 経由で AWS 側へ Assume Role します。
そして、ネイティブコネクターの場合はどうやら Security Hub などに頼るのではなく、各リソースに対して直接 API を実行してリソース検出を行っているようです。
ネイティブコネクターに必要な IAM ポリシーに関する情報は以下をご確認ください。

AWS アカウントを Microsoft Defender for Cloud に接続する | Microsoft Learn

また、実際にやってみた記事がありますのでこちらもご覧ください。

そして、Security Hub を基準に使いたい場合はクラシックコネクターを選択する必要があると思うのですが、このクラシックコネクターは過去にクラシックコネクターを作成したことのある環境以外では利用出来ないようです。
また、現在はネイティブコネクターの利用が推奨されており、ネイティブコネクターを有効化してクラシックコネクターは削除する手順が案内されています。

他に Security Hub を使って外部で統制する方法が何かないか探してみたところ、Microsoft 365 Defender でもどうやら AWS アカウントを接続して統制管理することが出来るようです。
Microsoft 365 E5 ライセンスを持っていたので、今回は Microsoft 365 Defender に AWS アカウントを接続して何が出来るのかを簡単に確認してみました。

Microsoft 365 Defender に AWS アカウントを接続

Microsoft 365 Defender の中には複数のソリューションがあり、その中のひとつに Microsoft Defender for Cloud Apps (旧称 Microsoft Cloud App Security) があります。
以前は独立した製品でしたが今は Microsoft 365 Defender の一部になっています。

AWS アカウントを接続する場合は、公式ドキュメントによると「セキュリティ監査」のための接続と、「セキュリティ構成」のための接続の 2 つがあるようです。
前者は主にユーザーとアクティビティの管理とデータ保護関係をサポートするもので、後者が Security Hub を使ったものになっています。
本当は後者の Security Hub 統合を試したかったのですが、設定方法を少し迷ってしまったので今回は前者の「セキュリティ監査」を試しています。
後者は次回もう一度設定方法を確認の上試してみます。

アカウント接続の流れとしては IAM ユーザーを作成し、アクセスキーとシークレットを Microsoft 365 Defender 上へ登録します。

IAM ユーザー作成

IAM ユーザーは以下のポリシーが必要です。

{
  "Version" : "2012-10-17",
  "Statement" : [{
      "Action" : [
        "cloudtrail:DescribeTrails",
        "cloudtrail:LookupEvents",
        "cloudtrail:GetTrailStatus",
        "cloudwatch:Describe*",
        "cloudwatch:Get*",
        "cloudwatch:List*",
        "iam:List*",
        "iam:Get*",
        "s3:ListAllMyBuckets",
        "s3:PutBucketAcl",
        "s3:GetBucketAcl",
        "s3:GetBucketLocation"
      ],
      "Effect" : "Allow",
      "Resource" : "*"
    }
  ]
 }

作成後、IAM ユーザーのアクセスキーとシークレットを取得しておきます。

アプリコネクタで追加

Microsoft 365 Defender 側で AWS への接続情報を登録します。

設定画面の「クラウドアプリ」で、Microsoft 365 Defender のクラウドアプリ機能に関する設定を行うことが出来ます。

その中の「アプリコネクタ」で様々なサードパーティークラウドサービスへの接続情報が管理されています。
「アプリを接続」ボタンから「Amazon Web Services」を選択します。

AWS への接続であることがわかるように識別出来る適当なインスタンス名を指定します。

「セキュリティ監査」のチェックを ON にします。
インスタンスの種類はリージョンにあわせて選択しますが、ほとんどの方は「商用」になるかと思います。

セキュリティ監査画面で IAM ユーザーのアクセスキーとシークレットキーを入力します。

入力すると接続検証が行われ、問題なければ完了画面に遷移します。
接続はこれだけです。簡単ですね。

Microsoft 365 Defender から AWS アカウント上のアクティビティログなどを確認する

接続まで行ったので今回は簡単にどういう情報が取得出来ているのかを確認します。
接続アプリを開くとダッシュボードやユーザー一覧、アクティビティやアラートなどを確認することが出来ます。

ダッシュボード

ダッシュボードでは取り込んだアクティビティログの位置情報などを元にマップやグラフでの可視化を行ってくれます。
取り込みを行うと一週間前までのデータが取り込まれるそうです。

アクティブユーザーがかなり多いですが、IAM ロールなども含まれています。

アカウント

アカウントタブではロールを使ったものを含む全ユーザーやセッションを一覧表示しています。
EC2 などのインスタンスプロファイルなどなども含んでいたのでフィルター使いこなさないとかなりつらい感じがしました。

アクティビティログ

アクティビティログは CloudTrail に似ているので直感的に利用することが出来ました。
ただやはりここでもフィルターの使い勝手に慣れていなかったので閲覧に少し苦労しました。

どのユーザーがどの API をいつコールしたのかなどが確認出来ています。

アラート

ここのアラートはポリシーに基づくアラートを管理することが出来るようです。

Microsoft 365 Defender のポリシー機能を使うことで、例えば AWS アカウント上で特定のセキュリティ条件に該当する変更が発生した際にアラートを発生させることが出来るようです。

いくつか AWS 向けのテンプレートも提供されていて、例えば S3 バケットがパブリックアクセス出来る状態になった場合も検知が出来るようです。

試しに設定して適当なバケットをパブリックにしてみたのですがすぐに検知メールは発生しませんでした。
何か条件があるのかもしれないです。

さいごに

本日は Microsoft 365 Defender (Microsoft Defender for Cloud Apps) に AWS アカウントを接続してセキュリティ監査機能を使ってみました。

マルチクラウドの一元的な管理はたしかに出来そうです。
ただし AWS の運用に慣れていると、必要な機能がフルに使えない印象をどうしても受けてしまいますね。
これは接続サービスごとにサポートされている範囲がバラバラなので、事前に利用するサービスがどこまでサポートされているのかを以下などで確認しておくと良さそうです。Box や Salesforce は幅広くサポートされているように見えました。AWS は限定的な印象です。

次回は Security Hub を統合するために「セキュリティ監査機能」ではなく「セキュリティ構成機能」を使えないかトライしてみます。