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

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

サポート対象サービス

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

  • Amazon Elastic Compute Cloud(EC2)

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

    • DB インスタンス時間:使用された DB インスタンスタイプに基づきます。

    • ストレージ(1 GB あたり 1 か月):DB インスタンスにプロビジョニングしたストレージ容量に基づきます。

    • プロビジョンド IOPS(1 か月あたり):プロビジョンド IOPS レートに基づきます(実際に消費された IOPS に関係なく、Amazon RDS の Provisioned IOPS ストレージのみ)。

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

AWS CloudTrail

AWS リアルタイムアノマリー検出を有効にするには、AWS CloudTrail を設定し、対象の AWS アカウントでリアルタイムアノマリーフィーチャーを有効にする必要があります。

すべての AWS リージョンのイベントを記録するために、マルチリージョントレイルの作成を推奨します。AWS Organizations で組織を作成している場合は、その組織内のすべての AWS アカウントのすべてのリージョンのイベントを記録するために、マルチリージョン組織トレイルの作成が可能です。

S3 バケットのリージョン

トレイルを作成する際は、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 など)では、s3:ObjectCreated:* イベントをそれぞれの SNS トピックに送信する必要があり、その場合は 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 コンソール にサインインし、上部ナビゲーションのメガメニューから データ取り込みとインテグレーション を選択し、AWS を選択します。

  2. Link Amazon Web Services ページで、Link account を選択します。

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

    • Create a role automaticallyReal-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 アカウントをリンクした後に、そのバケットに対して Amazon S3 イベント通知を設定し、イベントを DoiT の SNS トピックに送信する必要があります。通知の追加は、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 に配信される管理イベント:各地域における管理イベントの最初のコピーは無料で配信されるため、マルチ Region 組織のトレイルを作成し、重複記録の原因となるその他のトレイルを削除することで、このコストを回避できます。詳細については、AWS CloudTrail の料金および CloudTrail トレイルコストの管理を参照してください。

  • S3 のストレージおよびアクセス

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

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

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

S3 cost

ヒント

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