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 アカウントに対してのみ有効にする必要があります。
新しいアカウントで有効化する
-
DoiT コンソール にサインインし、上部ナビゲーションのメガメニューから データ取り込みとインテグレーション > インテグレーション を選択してください。
-
Amazon Web Services のインテグレーションカードで 管理 を選択してください。
-
新しいアカウントをリンク を選択してください。
-
CloudTrail ログを保存している S3 バケットに関する情報を入力して ください。設定内容は、AWS IAM ロールの作成方法によって異なります。
-
ロールを自動作成する: Real-time anomalies 機能を選択し、S3 バケット名を入力してください。
ヒントIAM ロール用に作成される CloudFormation スタックには、
s3:GetBucketLocationおよびs3:PutBucketNotification権限も付与されます。これらは、DoiT の Real-time anomaly 機能が対象バケットの場所を特定し、AWS CloudTrail バケット通知を追加するために必要で す。アカウントのリンクが正常に完了した後は、これら 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 ページで、対象のアカウントを探してください。
-
アカウント行の一番右端にあるケバブメニュー(⋮)を選択し、アカウントを編集 を選択してください。
-
追加する機能として Real-time anomalies を選択し、その機能を展開して、CloudTrail ログファイルを含む S3 バケット名を入力してください。バケットは、サポートされているリージョン のいずれかに存在している必要があります。

-
アカウントを更新 を選択して 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 つの作業を行う必要があります。
-
CloudTrail 用 S3 バケットをホストしているアカウントを DoiT プラットフォームにリンクします。
-
直前の手順で作成した 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 バケットが一覧に表示されない場合は、プラスアイコン(+)を選択して、その正確な名前を新しいフィルターと して追加してください。結果をフィルター: 一致なし・結果が未完成を参照してください。