AWS リアルタイムアノマリー検出
サポート対象サービス
DoiT は、次の AWS サービスに対してほぼリアルタイムのアノマリー検出をサポートします。
-
Amazon Elastic Compute Cloud(EC2)
-
Amazon Relational Database Service(RDS)。プロビジョンド RDS インスタンスについては、次のコンポーネントがサポートされます。
-
DB インスタンス時間:消費された DB インスタンスタイプに基づきます。
-
ストレージ(1 GB あたり 1 か月あたり):DB インスタンスにプロビジョニングしたストレージ容量に基づきます。
-
1 か月あたりのプロビジョンド IOPS:プロビジョンド IOPS レート(Amazon RDS Provisioned IOPS ストレージのみ、実際に消費された 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 ロールを作成する際には、指定した CloudTrail S3 バケットへのアクセスに制限するために、IAM ポリシーで "arn:aws:s3:::${CloudTrailBucketName}/*" を使用してください。例については、Feature permissions: IAM policies for Real-time anomalies を参照してください。
AWS アカウントでリアルタイムアノマリーを有効化する
新しいアカウントをリンクする際、または既存のアカウントを編集する際に、リアルタイムアノマリー検出を有効にできます。リアルタイムアノマリー検出は、CloudTrail ログファイルを保持している AWS アカウントに対してのみ有効にする必要があります。
新しいアカウントで有効化する
-
DoiT コンソール にサインインし、上部ナビゲーションのメガメニューから Data ingestion and integrations > Integrations を選択します。
-
Amazon Web Services integration カードで Manage を選択します。
-
Link new account を選択します。
-
CloudTrail ログを保存している S3 バケットに関する情報を入力します。設定内容は、AWS IAM ロールの作成方法によって異なります。
-
ロールを自動作成する:Real-time anomalies 機能を選択し、S3 バケット名を入力します。
ヒントIAM ロール用に作成される CloudFormation スタックには、DoiT の Real-time anomaly 機能がバケットの場所を特定し、AWS CloudTrail バケット通知を追加するために必要な
s3:GetBucketLocationとs3:PutBucketNotificationの権限も付与されます。アカウントが正常にリンクされた後は、これら 2 つの権限を削除できます。必要な権限の詳細については、Real-time anomalies を参照してください。 -
ロールを手動で作成する:S3 バケット名を入力し、バケットが存在するリージョンを指定します。

-
S3 バケットイベント通知を設定する
IAM ロールを手動で作成した場合、AWS アカウントをリンクした後に、バケットが DoiT の SNS トピックにイベントを送信できるように、Amazon S3 イベント通知を設定する必要があります。通知は Amazon S3 コンソールまたは AWS CloudShell(CLI)から追加できます。
AWS CLI を使用して S3 バケット通知を追加するには:
-
CloudTrail S3 バケットが配置されているリージョンを特定します。SNS トピックの ARN は、S3 バケットが存在するリージョンと一致している必要があります。
-
バケットのリージョンに応じて AWS CLI コマンドを実行します。
コマンドを実行する前に、
<S3_BUCKET_NAME>を CloudTrail バケット名に、<S3_BUCKET_REGION>をバケットのリージョンに置き換えてください。- `us-east-1` region
- Any other 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:*"]}]}'S3 バケットが他の任意のリージョンにある場合:
aws s3api put-bucket-notification-configuration --bucket <S3_BUCKET_NAME> --notification-configuration '{"TopicConfigurations": [{"Id": "NotifyCrossAccountSNSTopic","TopicArn": "arn:aws:sns:<S3_BUCKET_REGION>:676206900418:realtime-event-topic-trigger-<S3_BUCKET_REGION>","Events": ["s3:ObjectCreated:*"]}]}'
既存のアカウントで有効化する
すでにリンクされているアカウントでリアルタイムアノマリーを有効にするには:
-
Link Amazon Web Services ページで対象のアカウントを探します。
-
アカウント行の一番右端にあるケバブメニュー(⋮)を選択し、Edit account を選択します。
-
追加する機能として Real-time anomalies を選択し、その機能を展開して、CloudTrail ログファイルを含む S3 バケット名を入力します。バケットは サポートされているリージョン のいずれかに存在している必要があります。

-
Update account を選択して AWS コンソー ル内に CloudFormation スタックを作成し、新しい権限で IAM ロールを更新するか、Prefer CLI を選択して AWS CloudShell 経由で CloudFormation スタックを作成するためのコマンドを取得します。
ヒントIAM ロール用に作成される CloudFormation スタックには、DoiT の Real-time anomaly 機能がバケットの場所を特定し、AWS CloudTrail バケット通知を追加するために必要な
s3:GetBucketLocationとs3:PutBucketNotificationの権限も付与されます。アカウントが正常にリンクされた後は、これら 2 つの権限を削除できます。必要な権限の詳細については、Real-time anomalies を参照してください。
AWS マルチアカウント環境
組織で AWS Control Tower を使用した AWS マルチアカウント環境を構成しており、KMS ポリシーと CloudTrail S3 バケットが別々のアカウントでホストされている場合、リアルタイムアノマリーを有効にするには次の 2 つの作業を行う必要があります。
-
CloudTrail S3 バケットをホストしているアカウントをプラットフォームにリンクします。
-
先の手順で作成した 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 バケット名でリソースをフィルターする際に、目的の S3 バケットが一覧に表示されない場合は、プラスアイコン (+) を選択して、その名前を新しいフィルターとして正確に追加してください。詳しくは、フィルター結果: 一致なしまたは不完全な結果を参照してください。