Microsoft Sentinelをアマゾン ウェブ サービスに接続して AWS EKS ログを取り込む

Amazon Web Services (AWS) S3 ベースの Elastic Kubernetes Service (EKS) コネクタを使用して、AWS S3 バケットで収集された AWS EKS 監査ログをMicrosoft Sentinelに取り込みます。 AWS EKS 監査ログは、API サーバーの要求、認証の決定、Kubernetes クラスター内のクラスターアクティビティの詳細なレコードです。 これらのレコードには、要求が受信された時刻、要求の詳細、要求を行うユーザー、実行されたアクションなどの情報が含まれます。 このログ分析は、EKS クラスターで実行されているコンテナー化されたアプリケーションのセキュリティとコンプライアンスを維持するために不可欠です。

このコネクタは、 AWS CloudFormation ベースのオンボード スクリプトを備え、コネクタで使用される AWS リソースの作成を合理化します。

重要

概要

Amazon Web Services S3 EKS データ コネクタは、次のユース ケースを提供します。

  • Kubernetes のセキュリティ監視と脅威の検出: AWS EKS 監査ログを分析して、Kubernetes クラスター内の不正アクセス、特権エスカレーション、疑わしい API 呼び出しなどのセキュリティの脅威を特定して対応します。 これらのログをMicrosoft Sentinelに取り込むことで、高度な分析と脅威インテリジェンスを使用して、コンテナー化されたワークロードを対象とする悪意のあるアクティビティを検出して調査できます。

  • コンテナー化された環境のコンプライアンスと監査: AWS EKS 監査ログには、コンテナー化された環境でのコンプライアンスレポートと監査の目的で重要なすべての API サーバーの相互作用の詳細な記録が用意されています。 コネクタにより、これらの監査ログがMicrosoft Sentinel内で使用できるようになり、アクセスと分析が容易になり、コンテナーのセキュリティに関する規制要件を満たすことができます。

  • DevSecOps とクラスター ガバナンス: 開発者アクティビティ、リソース アクセス パターン、EKS クラスター内の構成の変更を監視して、DevSecOps ワークフローで適切なガバナンスとセキュリティプラクティスを確保します。

この記事では、Amazon Web Services S3 EKS コネクタを構成する方法について説明します。 設定のプロセスには、AWS 側とMicrosoft Sentinel側の 2 つの部分があります。 各側のプロセスは、反対側で使用される情報を生成します。 この双方向認証により、セキュリティで保護された通信が作成されます。

前提条件

  • Microsoft Sentinel ワークスペースに対する書き込みアクセス許可が必要です。

  • Microsoft Sentinelの Content Hub から Amazon Web Services ソリューションをインストールします。 以前のバージョンのソリューションを既にインストールしている場合は、コンテンツ ハブ内のソリューションを更新して、このコネクタを含む最新バージョンがあることを確認します。 詳細については、「すぐに使用Microsoft Sentinelコンテンツを検出して管理する」を参照してください。

  • 監査ログが有効になっている既存の AWS EKS クラスター、またはセットアップ プロセス中に EKS クラスターで監査ログを有効にする機能が必要です。

  • 次の目的で適切な AWS IAM アクセス許可が必要です。

    • IAM ロールとポリシーを作成する
    • S3 バケットを作成し、バケット ポリシーを構成する
    • SQS キューを作成し、キュー ポリシーを構成する
    • CloudFormation スタックを作成する
    • EKS クラスターのログ記録設定を構成する
    • Kinesis Data Firehose 配信ストリームを作成する
    • Lambda 関数を作成する

Amazon Web Services S3 EKS コネクタを有効にして構成する

コネクタを有効にして構成するには、次のタスクを実行します。

  • AWS 環境では、次の手順を実行します。

    Microsoft Sentinelの Amazon Web Services S3 EKS コネクタ ページには、次の AWS タスクを自動化するダウンロード可能な AWS CloudFormation スタック テンプレートが用意されています。

    • 監査ログを CloudWatch ログに送信するように AWS EKS クラスターを構成します。

    • CloudWatch から S3 にログを変換して 配信する Kinesis Data Firehose 配信ストリーム を作成します。

    • 処理された監査ログを格納する S3 バケット を作成します。

    • S3 で新しいログ ファイルが作成されたときに通知を提供する 簡易キュー サービス (SQS) キュー を作成します。

    • OpenID Connect (OIDC) を使用して AWS に対してユーザーを認証する Web ID プロバイダー を作成します。

    • OIDC Web ID プロバイダーによって認証されたユーザーに AWS リソースにアクセスするためのアクセス許可を付与する 、想定ロール を作成します。

    • 適切な IAM アクセス許可ポリシーを アタッチして、想定されたロールに適切なリソース (S3 バケット、SQS) へのアクセス権を付与します。

    • EKS 監査ログを、Microsoft Sentinelで想定される形式に変換する Lambda 関数を作成します。

  • Microsoft Sentinel:

    • SQS キューをポーリングし、S3 バケットからログ データを取得するログ コレクターを追加して、Microsoft Sentinel ポータルで Amazon Web Services S3 EKS コネクタを構成します。 以下の手順を参照してください

AWS 環境を設定する

オンボード プロセスを簡略化するために、Microsoft Sentinelの Amazon Web Services S3 EKS コネクタ ページには、AWS CloudFormation サービスで使用するためのダウンロード可能なテンプレートが用意されています。 CloudFormation サービスでは、これらのテンプレートを使用して AWS でリソース スタックを自動的に作成します。 これらのスタックには、この記事で説明されているリソースと、資格情報、アクセス許可、ポリシーが含まれます。

注:

自動セットアップ プロセスを使用します。 特別なケースについては、 手動のセットアップ手順に関するページを参照してください。

テンプレート ファイルを準備する

AWS 環境を設定するスクリプトを実行するには、次の手順を使用します。

  1. Azure portalで、[Microsoft Sentinel] ナビゲーション メニューから [構成] を展開し、[データ コネクタ] を選択します。

    Defender ポータルのサイド リンク バー メニューから [Microsoft Sentinel >構成] を展開し、[データ コネクタ] を選択します。

  2. データ コネクタの一覧から [ Amazon Web Services S3 EKS ] を選択します。

    コネクタが表示されない場合は、Microsoft Sentinelの [コンテンツ管理] の下にある Content ハブから Amazon Web Services ソリューションをインストールするか、ソリューションを最新バージョンに更新します。

  3. コネクタの詳細ウィンドウで、[コネクタ ページを 開く] を選択します。

    AWS S3 EKS コネクタを示すデータ コネクタ ギャラリーのスクリーンショット。

  4. [ 構成 ] セクションの [1] の下 。AWS CloudFormation Deployment でAWS CloudFormation Stacks リンクを 選択します。 このアクションにより、AWS コンソールが新しいブラウザー タブで開きます。

  5. ポータルのタブに戻り、開Microsoft Sentinel。 [テンプレート 1: OpenID Connect 認証デプロイ] で [ダウンロード] を選択して、OIDC Web ID プロバイダーを作成するテンプレートをダウンロードします。 テンプレートは、指定されたダウンロード フォルダーに JSON ファイルとしてダウンロードされます。

    注:

    以前の AWS コネクタのセットアップから OIDC Web ID プロバイダーが既にある場合は、この手順をスキップします。

  6. [テンプレート 2: AWS EKS リソースデプロイ] で [ダウンロード] を選択して、他の AWS リソースを作成するテンプレートをダウンロードします。 テンプレートは、指定されたダウンロード フォルダーに JSON ファイルとしてダウンロードされます。

    AWS S3 EKS コネクタの構成ページのスクリーンショット。

AWS CloudFormation スタックを作成する

[AWS Console ブラウザー] タブに戻り、スタックを作成するための AWS CloudFormation ページが開きます。

AWS にまだサインインしていない場合は、今すぐサインインします。 AWS CloudFormation ページにリダイレクトされます。

OIDC Web ID プロバイダーを作成する

重要

以前の AWS コネクタのセットアップから OIDC Web ID プロバイダーが既にある場合は、この手順をスキップして、 残りの AWS リソースの作成に進みます。
Microsoft Defender for Cloud 用に OIDC Connect プロバイダーを既に設定している場合は、既存のプロバイダー (商用: api://1462b192-27f7-4cb9-8523-0f4ecb54b47e、Government:api://d4230588-5f84-4281-a9c7-2c15194b28f7) に対象ユーザーとしてMicrosoft Sentinelを追加します。 Microsoft Sentinel用の新しい OIDC プロバイダーを作成しないでください。

新しいスタックを作成するには、AWS Console ページの手順に従います。

  1. テンプレートを指定し、テンプレート ファイルをアップロードします。

  2. [ ファイルの選択] を選択 し、 ダウンロードしたテンプレート 1: OpenID connect 認証deployment.json ファイルを探します。

  3. スタックの名前を選択します。

  4. プロセスの残りの部分を進め、スタックを作成します。

残りの AWS リソースを作成する

  1. AWS CloudFormation スタック ページに戻り、新しいスタックを作成します。

  2. [ ファイルの選択] を選択 し、 ダウンロードしたファイルdeployment.jsonテンプレート 2: AWS EKS リソース を探します。

  3. スタックの名前を選択します。

  4. メッセージが表示されたら、次のパラメーターを入力します。

    • EKSClusterName: 既存の EKS クラスターの名前を入力します。
    • ワークスペース ID をMicrosoft Sentinelする: ワークスペース ID を見つけるには:
      • Azure portalの [Microsoft Sentinel] ナビゲーション メニューで、[構成] を展開し、[設定] を選択します。 [ ワークスペースの設定 ] タブを選択し、[Log Analytics ワークスペース] ページで [ワークスペース ID] を見つけます。
      • Defender ポータルのサイド リンク バー メニューで、[ システム ] を展開し、[ 設定] を選択します。 [Microsoft Sentinel] を選択し、[[WORKSPACE_NAME]の設定] で [Log Analytics の設定] を選択します。 [Log Analytics ワークスペース] ページでワークスペース ID を見つけ、新しいブラウザー タブで開きます。
    • BucketName: EKS 監査ログが格納される S3 バケットの一意の名前を入力します。
    • SentinelSQSQueueName: SQS キューの名前を入力します (既定: MicrosoftSentinelEKSSqs)。
    • AwsRoleName: IAM ロールの名前を入力します ("OIDC_" で始まる必要があります(既定値: OIDC_MicrosoftSentinelRoleEKS)。
  5. プロセスの残りの部分を進め、スタックを作成します。

  6. スタックの作成が完了したら、CloudFormation スタックの [出力 ] セクションに移動し、次の値をメモします。

    • SentinelRoleArn: Microsoft Sentinel アクセス用に作成された IAM ロールの ARN。
    • SentinelSQSQueueURL: SQS キューの URL。
    • Step1EnableEKSAuditLogging: EKS 監査ログを有効にする AWS CLI コマンド。
    • Step2CreateSubscriptionFilter: AWS CLI コマンドを使用して CloudWatch Logs サブスクリプション フィルターを作成します。

EKS 監査ログを有効にし、ログ ストリーミングを構成する

CloudFormation スタックを作成した後、EKS クラスターで監査ログを有効にし、ログ ストリーミングを構成します。

  1. EKS クラスターで監査ログがまだ有効になっていない場合は、CloudFormation スタックからの Step1EnableEKSAuditLogging 出力で指定されたコマンドを実行します。

  2. CloudWatch ログに監査ログが表示されるまで約 5 分待ちます。

  3. Step2CreateSubscriptionFilter 出力で指定されたコマンドを実行して、CloudWatch から Kinesis Data Firehose 配信ストリームに監査ログをストリーミングするサブスクリプション フィルターを作成します。

  4. Lambda 関数は、EKS 監査ログをMicrosoft Sentinelが想定する形式に自動的に変換し、それらを S3 に配信し、そこでインジェスト用の SQS 通知をトリガーします。

ログ コレクターを追加する

リソース スタックを作成し、EKS 監査ログを構成する場合は、Microsoft Sentinelのデータ コネクタ ページに開いているブラウザー タブに戻り、構成プロセスの 2 番目の部分を開始します。

  1. [ 構成 ] セクションの [2] の下にあります。新しいコレクターを接続し、[ 新しいコレクターの追加] を選択します。

    AWS EKS コネクタ構成の第 2 部のスクリーンショット。

  2. 作成した IAM ロールのロール ARN を入力します。 CloudFormation スタックの SentinelRoleArn 出力の値を使用します (たとえば、 arn:aws:iam::{AWS_ACCOUNT_ID}:role/OIDC_MicrosoftSentinelRoleEKS)。

  3. 作成した SQS キュー URL を入力します。 CloudFormation スタックの SentinelSQSQueueURL 出力の値 (たとえば、 https://sqs.{AWS_REGION}.amazonaws.com/{AWS_ACCOUNT_ID}/MicrosoftSentinelEKSSqs) を使用します。

  4. [ 接続 ] を選択してコレクターを追加します。 このアクションにより、Azure Monitor エージェントのデータ収集ルールが作成され、ログが取得され、Log Analytics ワークスペース内の専用のAWSEKSLogs_CL テーブルに取り込まれます。

    EKS ログの新しいコレクターの追加のスクリーンショット。

データ インジェストを確認する

  1. コネクタを設定したら、[ ログ ] ページ (または Defender ポータルの [高度なハンティング ] ページ) に移動し、次のクエリを実行します。 結果が得られると、コネクタは正常に動作しています。

    AWSEKSLogs_CL
    | take 10
    
  2. さらに具体的なクエリを実行して、EKS 監査データを調べることができます。

    // View recent EKS audit events by verb (API action)
    AWSEKSLogs_CL
    | where TimeGenerated > ago(1h)
    | summarize count() by Verb
    | order by count_ desc
    
    // Monitor authentication decisions
    AWSEKSLogs_CL
    | where TimeGenerated > ago(24h)
    | where AuthDecision != ""
    | summarize count() by AuthDecision, User
    | order by count_ desc
    
    // Track failed requests (non-200 response codes)
    AWSEKSLogs_CL
    | where TimeGenerated > ago(24h)
    | where ResponseCode != 200
    | project TimeGenerated, User, Verb, ObjectRef, ResponseCode, SourceIPs
    | order by TimeGenerated desc
    

スキーマ リファレンス

EKS 監査ログは、次のスキーマを 使用してAWSEKSLogs_CL テーブルに取り込まれます。

種類 説明
TimeGenerated 日付型 監査イベントが生成された時刻
AwsAccountId string EKS クラスターがある AWS アカウント ID
Region string EKS クラスターがある AWS リージョン
ClusterName string EKS クラスターの名前
動詞 string API 要求に関連付けられている HTTP 動詞 (GET、POST、PUT、DELETE など)
User string 要求を行うユーザーに関する情報
SourceIP 動的 要求の送信元のソース IP アドレスの配列
UserAgent string 要求を行うクライアントのユーザー エージェント文字列
ObjectRef string アクセスされる Kubernetes オブジェクトへの参照
ResponseCode int API 要求の HTTP 応答コード
ステージ string 要求処理のステージ (RequestReceived、ResponseStarted、ResponseComplete、Panic)
AuthDecision string API サーバーによる承認の決定
RawEvent 動的 高度な分析のために生の監査イベント データを完了する

トラブルシューティング

共通の問題と解決策

  • テーブルにデータAWSEKSLogs_CL表示されません。

    • クラスターで EKS 監査ログが有効になっていることを確認します。
    • CloudWatch Logs サブスクリプション フィルターが正しく構成されていることを確認します。
    • Lambda 関数がエラーなしでログを処理することを確認します。 Lambda 関数ログの CloudWatch ログを確認します。
    • SQS メッセージをトリガーするように S3 バケット通知が正しく構成されていることを確認します。
  • CloudFormation スタックの作成が失敗します。

    • 必要なすべてのリソースを作成するための十分な IAM アクセス許可があることを確認します。
    • 指定した EKS クラスター名がアカウントに存在することを確認します。
    • S3 バケット名がグローバルに一意であることを確認します。
  • 認証エラー:

    • OIDC Web ID プロバイダーが正しく構成されていることを確認します。
    • S3 および SQS リソースにアクセスするための IAM ロールのアクセス許可が十分であることを確認します。
    • CloudFormation テンプレートで使用されているワークスペース ID が、Microsoft Sentinel ワークスペースと一致することを確認します。

高度な監視

まだ行っていない場合は、データ コネクタの正常性監視を実装して、コネクタがデータを受信していない場合や他の問題が発生している場合を把握できるようにします。 詳細については、「 データ コネクタの正常性の監視」を参照してください

次の手順

このドキュメントでは、包括的な Kubernetes セキュリティ監視のために AWS EKS 監査ログをMicrosoft Sentinelに接続する方法について説明しました。 Microsoft Sentinelの詳細については、次の記事を参照してください。