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

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 など)は、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 コンソール にサインインし、上部ナビゲーションのメガメニューから データ取り込みとインテグレーション > インテグレーション を選択してください。

  2. Amazon Web Services のインテグレーションカードで 管理 を選択してください。

  3. 新しいアカウントをリンク を選択してください。

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

    • ロールを自動作成する: Real-time anomalies 機能を選択し、S3 バケット名を入力してください。

      Add real-time anomaly to AWS account - automatic

      ヒント

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

    • ロールを手動作成する: 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. アカウント行の一番右端にあるケバブメニュー()を選択し、アカウントを編集 を選択してください。

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

    Add real-time anomaly to AWS account

  4. アカウントを更新 を選択して AWS コンソール内に CloudFormation スタックを作成し、IAM ロールを新しい権限で更新するか、CLI を利用 を選択して、AWS CloudShell 経由で CloudFormation スタックを作成するためのコマンドを取得してください。

    ヒント

    IAM ロール用に作成される CloudFormation スタックには、s3:GetBucketLocation および s3:PutBucketNotification 権限も付与されます。これらは、DoiT の Real-time anomaly 機能が対象バケットの場所を特定し、AWS CloudTrail バケット通知を追加するために必要です。アカウントのリンクが正常に完了した後は、これら 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 か月あたり US$1.00 未満です。

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

S3 cost

ヒント

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