AWS S3サーバーアクセスログ インテグレーションガイド🔗
以下の手順は、AWS S3サーバーアクセスログのインテグレーションを設定し、ログをSecureworks® Taegis™ XDRに取り込むためのものです。
注意
以下の作業は、AWS S3サーバーアクセスログバケットと同じAWSリージョンで実施してください。
通常、S3バケット、CloudFormationテンプレート、およびLambdaは、すべて同じアカウントおよびリージョンでデプロイする必要があります。CloudTrailインスタンスを別のアカウントで設定し、クロスアカウントS3バケットにログを出力することも可能です。方法については、複数アカウントからCloudTrailログファイルを受信する を参照してください。
インテグレーションから提供されるデータ🔗
| 正規化されたデータ | 汎用的な検知 | ベンダー固有の検知 | |
|---|---|---|---|
| Amazon S3サーバーアクセスログ | HTTP | HTTP |
注意
XDR検知機は、データソースのログが特定の検知機に関連付けられたスキーマに正規化されていても、必ずしもトリガーされるとは限りません。ただし、カスタム検出ルールを作成することで、データソースから正規化されたデータに基づいて検出を生成することができます。
AWS S3サーバーアクセスログのセットアップ🔗
注意
XDRへのログイン権限がない場合は、権限を持つ方にアクセスが必要な手順を手伝ってもらってください。また、支援が必要な場合はSecureworks®の担当者にご連絡ください。
- Taegis Menuからインテグレーション → クラウドAPIを選択します。
-
ページ上部のインテグレーションの追加を選択します。

インテグレーションの追加 -
最適化タブからAWSを選択し、AWS Cloudtrailの下にあるセットアップを選択します。

AWS CloudTrailインテグレーションのセットアップ -
CloudFormation共有リソースのダウンロードを選択し、
taegis-cloudformation-shared-resources.yamlとして保存します。 - CloudFormation Lambdaテンプレートのダウンロードを選択し、
taegis-cloudformation-lambda-template.yamlとして保存します。 - Lambdaのダウンロードを選択し、ファイル名を
taegis-lambda-amd64.zipとします。 - 認証情報のダウンロードを選択します。
- すべてのファイルをダウンロードした後、作成を選択します。
Lambda実行ファイルおよびCloudFormationテンプレートをS3にアップロード🔗
-
対象リージョンのAWSコンソール(例:https://us-east-1.console.aws.amazon.com/cloudformation)に、ロール、Lambda、シークレット、ポリシーの作成権限を持つアカウント、またはこれらの権限を持つロールを引き受けることができるロールでログインします。
-
ストレージセクションで、S3を選択します。
-
Lambda実行ファイルおよび必要に応じてCloudFormationテンプレートを格納するための新しいバケットを作成するか、既存のバケットを探します。バケットはパブリック、バージョン管理、暗号化である必要はありません。
-
Lambdaの
taegis-lambda-amd64.zipをバケットのルートにアップロードし、バケット名を控えておきます。 -
必要に応じて、
taegis-cloudformation-shared-resources.yamlおよびtaegis-cloudformation-lambda-template.yamlも同じバケットにアップロードします。ヒント
バケット名とキー(プレフィックスを含む)を控えておいてください。これらの識別子はスタック作成時に必要となります。
Lambdaデプロイメントを含む各AWSリージョンで共有リソーススタックを作成🔗
重要
共有リソーススタック(ステップ1~11)は、AWSリージョンごとに一度だけデプロイする必要があります。
- 対象リージョンのAWSコンソール(例:https://us-east-1.console.aws.amazon.com/cloudformation)に、ロール、Lambda、シークレット、ポリシーの作成権限を持つアカウント、またはこれらの権限を持つロールを引き受けることができるロールでログインします。
- 管理とガバナンスセクションで、CloudFormationを選択します。
-
taegis-cloudformation-shared-resources.yamlテンプレートを使用して新しいスタックを作成するために、スタックの作成を選択します。注意
CloudFormationを選択した際、次の画像のようにCloudFormationスタックの一覧が表示される場合があります。その場合は、スタックの作成ドロップダウンを選択し、新しいリソース(標準)で作成を選択してください。

新しいスタックの作成 -
テンプレートの準備 セクションで、テンプレートの準備完了を選択します。
- テンプレートの指定 セクションで、Amazon S3 URLを選択するか、テンプレートファイルのアップロードを選択します。
-
Amazon S3 URLを選択した場合は、事前に取得したCloudFormationオブジェクトのURLをAmazon S3 URLフィールドに入力します。例:
https://cwl-poc.s3.amazonaws.com/taegis-cloudformation-shared-resources.yamlURLを見つけるには、S3サービスに移動し、
taegis-cloudformation-shared-resources.yamlファイルをアップロードしたS3バケットを開きます。CloudFormationテンプレートを選択し、URLのコピーをクリックします。
CloudFormation URLのコピー -
次へを選択します。
-
適切なスタック名を入力します。
注意
スタック名にはスペースを使用できません。
-
credentials.txtファイルの内容をSecretValueフィールドに入力します。 - XDRログインURLに基づいて、正しい
TaegisRegionを選択します。たとえば、https://ctpx.secureworks.com/login を使用している場合はctpx、https://foxtrot.taegis.secureworks.com/ を使用している場合はfoxtrotを選択します。 - 次へを選択します。
- スタックオプションの設定ページでは、デフォルトの選択と値をそのまま使用できます。次へを選択します。
- 確認と作成ページで、送信を選択します。
Lambdaスタックの作成🔗
ヒント
Lambdaスタック作成時、integrationTypeにはgeneric文字列を使用してください。
注意
AWS Lambda関数は、Taegis™ XDR APIと通信するために、以下の2つのシークレットトークンを使用します。
- 10時間ごとに有効期限が切れ、XDRによってローテーションされる短命トークン
- 有効期限のない長期認証情報
- ロール、Lambda、シークレット、ポリシーの作成権限を持つアカウント、またはこれらの権限を持つ別のロールを引き受けることができるロールを使用して、対象リージョンのAWSコンソール(例:https://us-east-1.console.aws.amazon.com/cloudformation)にログインします。
- 管理とガバナンスセクションで、CloudFormationを選択します。
-
スタックの作成を選択します。
注意
CloudFormationを選択した際、次の画像のようにCloudFormationスタックの一覧が表示される場合があります。その場合は、Create Stackドロップダウンを選択し、With new resources (standard)を選択してください。

Create New Stack -
テンプレートの準備 セクションで、テンプレートの準備完了を選択します。
- テンプレートの指定 セクションで、Amazon S3 URLを選択するか、テンプレートファイルのアップロードを選択します。
-
Amazon S3 URLを選択した場合は、事前に取得したCloudFormationオブジェクトのURLをAmazon S3 URLフィールドに入力します。例:
https://cwl-poc.s3.amazonaws.com/taegis-cloudformation-lambda-template.yamlURLを見つけるには、S3サービスに移動し、
taegis-cloudformation-lambda-template.yamlファイルがアップロードされたS3バケットを開きます。CloudFormationテンプレートを選択し、URLのコピーボタンをクリックします。
Copy CloudFormation URL -
次へを選択します。
-
適切なスタック名を入力します。
注意
スタック名にスペースは使用できません。
-
ドロップダウンから
IntegrationTypeを選択します。これはNotificationBucket内にあるログオブジェクトの種類を示します。複数の種類がある場合や不明な場合は、genericを選択してください。
Update Lambda Stack Integration Type -
NotificationBucketフィールドには、ログが格納されているバケット名(URLやURIではなく)を入力します。 - (オプション)今後S3通知の代わりにSNS通知を使用したい場合は、
SNSNotificationarnフィールドに適切な値を入力します。 - (オプション)
NotificationBucketCustomerManagedKMSarnに、NotificationBucket内のオブジェクトを暗号化しているKMSキーARNを追加したい場合は、適切な値を入力します。KMSキーのポリシーには「IAMユーザー権限の有効化」が必要です。そうでない場合は、Lambda ARNをKMSキーに追加できます。 TaegisLambdaS3BucketNameフィールドには、事前にアップロードしたLambdaが格納されているS3バケット名を入力します。LambdaEnvKMSarnフィールドは空のままで構いません。値を入力する場合、KMSキーには「IAMユーザー権限の有効化」が必要です。EnableObjectTaggingフィールドをtrueに設定すると、処理済みオブジェクトのタグ付けが有効になります。詳細はAWS Lambdaライフサイクルポリシー管理を参照してください。- 残りのフィールドはデフォルトのままで構いません。
- 次へを選択します。
残りのスタックオプションを完了する🔗
- スタックオプションの設定ページは任意です。
- 次へを選択します。
-
すべてのパラメータを確認します。ステップ9からステップ15で指定したすべてのフィールドに有効な値が入力されていることを確認してください。

Review Lambda Parameters -
AWS CloudFormationがIAMリソースを作成する可能性があることを承認しますのチェックボックスを選択し、送信を選択します。
- 少なくとも30秒待ってから、更新ボタンを選択します。処理が完了するまで1分以上かかる場合があります。スタックのステータスがCREATE_COMPLETEになれば処理は完了です。セットアップセクションでダウンロードした_client_id_および_client_secret_が記載された
credential.txtファイルは破棄してください。これらの値はAWS SecretsManagerに保存されました。
Lambdaトリガーの追加🔗
- AWSコンソールでLambdaサービスに切り替えます。
- 名前で新しいLambdaを探します。デフォルト名は{STACKNAME}-scwx-tdr-lambda-{INTEGRATIONTYPE}です。例:
ct-demo-scwx-tdr-lambda-awscloudtrail - Lambda名を選択します。そのLambdaの編集ページが表示されます。
- 関数の概要セクションを展開し、トリガーの追加を選択します。
- トリガー構成エディタでドロップダウンメニューからS3を選択します。オプションで、事前に作成したトピックで構成されたSNSトリガーを使用することもできます。
- バケットオプションから、ログが格納されているバケットを見つけて選択します。
- イベントタイプオプションからすべてのオブジェクト作成イベントを選択します。
- プレフィックスフィールドには、ログが格納されているバケットのプレフィックスを入力します。プレフィックスがない場合は空欄のままにします。
- サフィックスフィールドは空欄のままにします。
- Lambda関数のコスト影響を認識するためのチェックボックスをオンにします。
- 追加を選択します。そのLambdaの構成ページが再度表示されます。トリガーの追加が成功したことを示すメッセージが上部に表示されます。例:
The trigger wmikeking was successfully added to function Logs-TDR-Upload -
この関数は、トリガーからイベントを受信するようになりました。
重要
AWS Lambda同時実行ガイダンス🔗
Taegis XDR CloudFormationテンプレート(
taegis-cloudformation-lambda-template.yaml)で設定されるReserved Concurrency値は5です。Lambdaの同時実行や、お客様の環境に適した値の計算方法については、AWSドキュメントのLambda関数のスケーリングを参照してください。同時実行数の計算に使用する値については、以下のAWSドキュメントを参照してください。
AWS同時実行制限🔗
Lambda実行時にRate Exceededエラーが表示された場合は、AWSにクォータ増加をリクエストして同時実行制限を引き上げる必要があります。詳細はAWSドキュメントのLambdaクォータを参照してください。

AWS Lambda Concurrent Execution Limit Error
検証手順🔗
-
Lambdaランタイム設定を確認します。
Runtime値は Custom runtime on Amazon Linux 2 である必要があります。
Verify Lambda Runtime Settings -
AWSコンソールでテストを構成し、インテグレーション用のAWS Lambda関数が動作していることを確認するには、AWS Lambdaログのテストを参照してください。
-
AWSコンソールでインストール済みのLambda関数に移動します。エラーがある場合は、エラーの修正を選択します。

Fix Lambda Errors -
AWS Lambda関数によって生成されたログを表示し、アップロードが成功していることを確認するには、AWS Lambdaログの表示を参照してください。これは、S3バケットに新しいデータが公開されていることを前提に、トリガーが正常に動作していることを検証します。
{"level":"debug","time":"2023-11-15T19:27:19Z","message":"Uploading data to s3"}
既存インテグレーションセットアップファイルのダウンロード🔗
多くのリージョンにインテグレーションを追加する必要がある場合や、インテグレーションを完全にやり直す必要がある場合は、テンプレート、Lambda、認証情報ファイルを含む既存のインテグレーションファイル一式をいつでもダウンロードできます。
-
Taegis XDRメニューから、インテグレーション → クラウドAPI に移動します。
-
クラウドAPIインテグレーション テーブルから、やり直しまたは修正したいインテグレーションの行にあるアクション列のダウンロードアイコンをクリックします。
-
インテグレーションのダウンロード アイコンを選択します。ダウンロードパネルが表示されます。

既存のインテグレーションファイルのダウンロード -
必要なファイルをダウンロードします。
詳細検索でイベントフローを検証🔗
詳細検索を使用して、特定のインテグレーションからのイベントを検索し、セットアップが成功したかどうかを確認できます。このインテグレーションの場合、以下の検索を使用してください。
from http where sensor_type = 'Amazon S3 server access log'