AWS リアルタイムのアノマリー検出
サポート対象サービス
DoiT は、次の AWS サービスに対してほぼリアルタイムのアノマリー検出をサポートします。
-
Amazon Elastic Compute Cloud (EC2)
-
Amazon Relational Database Service (RDS)。プロビジョニング済みの RDS インスタンスについて、次のコンポーネントがサポートされます。
-
DB インスタンス時間:消費された DB インスタンスタイプに基づきます。
-
ストレージ(GB・1 か月あたり):DB インスタンスにプロビジョニングしたストレージ容量に基づきます。
-
プロビジョンド IOPS(1 か月あたり):消費 IOPS に関わらずプロビジョンド IOPS レート(Amazon RDS の Provisioned IOPS ストレージのみ)。
-
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:* イベントタイプが別の宛先に設定されていないことを確認してください。
S3 へのアクセス
リアルタイムのアノマリー検出機能は、お客様の CloudTrail 用 S3 バケットへのアクセスのみを必要とします。
最小権限の原則に準拠するため、DoiT 向けの IAM ロールを作成する際は、指定した CloudTrail 用 S3 バケットへのアクセスに限定するために、IAM ポリシーで "arn:aws:s3:::${CloudTrailBucketName}/*" を使用してください。例については、Feature permissions: IAM policies for Real-time anomaliesを参照してください。
AWS アカウントでリアルタイムアノマリーを有効にする
新しいアカウントをリンクする際、または既存のアカウントを編集する際に、リアルタイムのアノマリー検出を有効にできます。リアルタイムのアノマリー検出は、CloudTrail のログファイルを保持している AWS アカウントに対してのみ有効にしてください。
新しいアカウントで有効にする
-
DoiT コンソールにサインインし、上部ナビゲーションのメガメニューからデータ取り込みとインテグレーションを選択し、AWS を選択します。
-
Amazon Web Services をリンクページで、アカウントをリンクを選択します。
-
CloudTrail のログを保存している S3 バケットに関する情報を入力します。設定内容は、AWS IAM ロールの作成方法によって異なります。
-
ロールを自動作成:リアルタイムアノマリー機能を選択し、S3 バケット名を入力します。
ヒントIAM ロール用に作成される CloudFormation スタックには、
s3:GetBucketLocationとs3:PutBucketNotificationの権限も付与されます。これらは、DoiT のリアルタイムアノマリー機能がバケットを特定し、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:*"]
}
]
}'
既存のアカウントで有効にする
すでにリンク済みのアカウントでリアルタイムアノマリーを有効にするには:
-
Amazon Web Services をリンクページで対象のアカウントを見つけます。
-
アカウント行の一番右にあるケバブメニュー(⋮)を選択し、アカウントを編集を選択します。
-
追加する機能としてリアルタイムアノマリーを選択し、機能を展開して、CloudTrail のログファイルを含む S3 バケット名を入力します。バケットはサポート対象リージョンのいずれかに存在する必要があります。

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