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

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 リージョンのイベントをログに記録するために、マルチリージョントレイルの作成 を推奨します。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 バケットに対して、リアルタイムアノマリー用 SNS トピックを宛先とする Amazon S3 イベント通知 (イベントタイプ s3:ObjectCreated:*) を設定する必要があります。

  • 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 バケットへのアクセスのみを必要とします。

最小権限の原則 (Principle of least privilege) に従うため、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 アカウントをリンクした後に、そのバケットに対して 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 バケットをホストしているアカウントをプラットフォームにリンクします。

  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 バケットが一覧に表示されない場合は、プラスアイコン (+) を選択し、正確な名前を新しいフィルターとして追加してください。詳細は、フィルター結果: 一致なしまたは結果が不完全な場合を参照してください。