メインコンテンツへスキップ

AWS リアルタイムのアノマリー検出

サポート対象サービス

DoiT は、次の AWS サービスに対してほぼリアルタイムのアノマリー検出をサポートしています。

  • Amazon Elastic Compute Cloud (EC2)

  • Amazon Relational Database Service (RDS)。プロビジョンド RDS インスタンスについては、次のコンポーネントがサポートされます。

    • DB Instance hours: 消費された DB インスタンスタイプに基づきます。

    • Storage (per GB per month): DB インスタンスにプロビジョニングしたストレージ容量に基づきます。

    • Provisioned IOPS per month: プロビジョンド済みの IOPS レートに基づき、実際の IOPS 消費量は問いません (Amazon RDS Provisioned IOPS ストレージのみ)。

    あわせて Working with storage for Amazon RDS DB instances も参照してください。

AWS CloudTrail

AWS リアルタイムのアノマリー検出を有効化するには、AWS CloudTrail が設定されており、対象の AWS アカウントでリアルタイムアノマリー機能を有効にする必要があります。

すべての AWS リージョンでイベントを記録するために、マルチリージョンの trail を作成すること を推奨します。AWS Organizations で組織を作成している場合、マルチリージョンの organization trail を作成すること により、その組織内のすべての AWS アカウントの全リージョンでイベントを記録できます。

S3 バケットのリージョン

trail を作成する際、CloudTrail のログファイルを保存するために、次のいずれかのリージョンで作成された Amazon S3 バケットを選択する必要があります。

  • us-east-1, us-east-2, us-west-2

  • eu-west-1, eu-central-1, eu-west-2, eu-west-3

  • ap-northeast-1, ap-southeast-1, ap-southeast-2

  • ca-central-1

S3 イベント通知

AWS アカウントでリアルタイムアノマリーを有効にする場合、CloudTrail バケットに対して Amazon S3 イベント通知 (イベントタイプ s3:ObjectCreated:*) を設定し、リアルタイムアノマリー用の SNS トピックを宛先として指定する必要があります。

  • IAM ロールを自動作成する場合、DoiT が S3 バケットの通知設定を構成し、リアルタイムアノマリー用 SNS トピックを宛先として設定します。

  • IAM ロールを手動で作成する場合は、Amazon S3 コンソールまたは AWS CloudShell (CLI) を使用して、通知設定を追加する 必要があります。

注意

AWS は、イベント通知タイプごとに 1 つの宛先のみをサポートします。続行する前に、CloudTrail の S3 バケットに、別の宛先向けの s3:ObjectCreated:* イベントがすでに設定されていないことを確認してください。

一部のプラットフォーム (例: Panther、Wiz、Datadog) では、自身の SNS トピックに s3:ObjectCreated:* イベントを送信する必要があり、その場合、AWS リアルタイムアノマリー検出を有効にできません。

互換性を維持するため、Amazon EventBridge などの代替取り込み方法について、プロバイダーのドキュメントを確認することを推奨します。

S3 へのアクセス

リアルタイムのアノマリー検出機能が必要とするアクセス先は、CloudTrail の S3 バケットのみです。

最小権限の原則 に従うため、DoiT 用の IAM ロールを作成する際は、IAM ポリシーで "arn:aws:s3:::${CloudTrailBucketName}/*" を使用し、指定した CloudTrail S3 バケットへのアクセスに限定してください。例については、Feature permissions: IAM policies for Real-time anomalies を参照してください。

AWS アカウントでリアルタイムアノマリーを有効化する

新しいアカウントをリンクする際、または既存のアカウントを編集する際に、リアルタイムのアノマリー検出を有効化できます。リアルタイムのアノマリー検出は、CloudTrail ログファイルを保持している AWS アカウントに対してのみ有効化してください。

新しいアカウントで有効化する

  1. DoiT コンソール にサインインし、上部ナビゲーションのメガメニューから Data ingestion and integrations > Integrations を選択します。

  2. Amazon Web Services インテグレーションカードで Manage を選択します。

  3. Link new account を選択します。

  4. CloudTrail ログを保存している S3 バケットに関する情報を入力します。設定内容は、AWS IAM ロールの作成方法によって異なります。

    • Create a role automatically: Real-time anomalies 機能を選択し、S3 バケット名を入力します。

      Add real-time anomaly to AWS account - automatic

      ヒント

      IAM ロール用に作成される CloudFormation スタックには、バケットの場所を特定して AWS CloudTrail バケット通知を追加するために必要な s3:GetBucketLocation および s3:PutBucketNotification 権限も含まれます。アカウントのリンクが正常に完了した後は、これら 2 つの権限を削除できます。必要な権限の詳細については、Real-time anomalies を参照してください。

    • Create a role manually: S3 バケット名を入力し、バケットが存在するリージョンを指定します。

      The manual role creation form

S3 バケットイベント通知を設定する

IAM ロールを手動で作成する場合は、AWS アカウントをリンクした後に、DoiT の SNS トピックにイベントを送信するための Amazon S3 イベント通知をバケットに設定する必要があります。通知は、Amazon S3 コンソールまたは AWS CloudShell (CLI) から追加できます。

AWS CLI を使用して S3 バケット通知を追加するには、次の手順を実行します。

  1. CloudTrail S3 バケットが存在するリージョンを特定します。SNS トピックの ARN は、S3 バケットが存在するリージョンと一致している必要があります。

  2. バケットのリージョンに応じて、AWS CLI コマンドを実行します。

    コマンドを実行する前に、<S3_BUCKET_NAME> を CloudTrail バケット名に、<S3_BUCKET_REGION> をバケットのリージョンに置き換えてください。

    S3 バケットが us-east-1 リージョンにある場合:

    aws s3api put-bucket-notification-configuration --bucket <S3_BUCKET_NAME> --notification-configuration '{
    "TopicConfigurations": [
    {
    "Id": "NotifyCrossAccountSNSTopic",
    "TopicArn": "arn:aws:sns:us-east-1:676206900418:realtime-event-topic-trigger",
    "Events": ["s3:ObjectCreated:*"]
    }
    ]
    }'

既存アカウントで有効化する

すでにリンクされているアカウントでリアルタイムアノマリーを有効にするには、次の手順を実行します。

  1. Link Amazon Web Services ページで、対象のアカウントを見つけます。

  2. アカウント行の一番右端にあるケバブメニュー () を選択し、Edit account を選択します。

  3. 追加する機能として Real-time anomalies を選択し、その機能を展開して、CloudTrail ログファイルを格納している S3 バケット名を入力します。バケットは、サポート対象リージョン のいずれかに存在している必要があります。

    Add real-time anomaly to AWS account

  4. Update account を選択して AWS コンソール内に CloudFormation スタックを作成し、新しい権限で IAM ロールを更新するか、Prefer CLI を選択して AWS CloudShell 経由で CloudFormation スタックを作成するためのコマンドを取得します。

    ヒント

    IAM ロール用に作成される CloudFormation スタックには、バケットの場所を特定して AWS CloudTrail バケット通知を追加するために必要な s3:GetBucketLocation および s3:PutBucketNotification 権限も含まれます。アカウントのリンクが正常に完了した後は、これら 2 つの権限を削除できます。必要な権限の詳細については、Real-time anomalies を参照してください。

AWS マルチアカウント環境

組織が AWS Control Tower を使用して AWS マルチアカウント環境を構成しており、KMS ポリシーと CloudTrail S3 バケットが別々のアカウントでホストされている場合、リアルタイムアノマリーを有効化するには、次の 2 つの作業を実行する必要があります。

  1. CloudTrail S3 バケットをホストしているアカウントを DoiT プラットフォームにリンクします。

  2. 前の手順で作成した DoiT の IAM ロールに、次の権限を付与します。

    • CloudTrail ログファイルを暗号化している AWS KMS キーを使用する権限。KMS ポリシーを更新し、DoiT の IAM ロールの ARN を含む新しいステートメントを追加する必要があります。

    • AWS アカウントが所有するプライベートイメージ内の EC2 インスタンス情報を取得するための ec2:DescribeImages 権限。

リアルタイムアノマリー検知のコスト

リアルタイムアノマリー検知機能は、S3 バケットに保存された AWS CloudTrail イベントを利用します。この機能では、主に次の2つの側面でコストが発生する可能性があります。

  • Amazon S3 への管理イベントの配信: 各リージョン内での管理イベントの最初のコピーは無料で配信されるため、複数リージョンの組織トレイルを作成し、重複したイベント記録を引き起こすその他のトレイルを削除することで、このコストを回避できます。詳細については、AWS CloudTrail の料金およびCloudTrail トレイルコストの管理を参照してください。

  • S3 のストレージとアクセス:

    • アクティビティ量が多いアカウントであっても、S3 バケットに保存される CloudTrail 管理イベントのストレージコストは、通常は低く抑えられます。

    • アノマリー検知エンジンは、S3 バケットが存在するのと同じリージョンからログファイルを読み取ります(これにより、リージョン間やインターネットへのデータ転送料金の高額な料金を回避します)。このコストは SKU DataTransfer-Out-Bytes として課金され、通常は 1 か月あたり 1.00 米ドル未満です。

以下は、直近数か月におけるリアルタイムアノマリー検知機能の S3 コストを示すレポート例です。

S3 cost

ヒント

S3 バケット名でリソースをフィルターする際、目的の S3 バケットが一覧に表示されない場合は、プラスアイコン (+) を選択し、そのバケット名を新しいフィルターとして正確に追加してください。結果をフィルター: 一致する結果がない場合や結果が不完全な場合を参照してください。