本文にスキップ

AWS CloudTrail連携

このガイドでは、AWS CloudTrailをKYRA MDRに接続して、AWS環境のリアルタイム監視を行う方法を説明します。KYRA MDRはCloudTrailイベントを分析し、不正アクセス、設定ミス、不審なAPIアクティビティを検出します。


前提条件

  • 管理者アクセス(またはロールとS3バケット通知を作成するためのIAM権限)を持つアクティブなAWSアカウント
  • AWSアカウントでCloudTrailが有効(管理イベントはデフォルトで有効)
  • アクティブなサブスクリプションを持つKYRA MDRアカウント

アーキテクチャ概要

AWS CloudTrail → S3 Bucket → SNS Topic → KYRA Cloud Sensor → KYRA MDR Platform
(S3をポーリング)

KYRA MDRはクロスアカウントIAMロールを使用してS3バケットからCloudTrailログを読み取ります。KYRAが読み取るまで、お客様のデータは管理下から離れません。


ステップ1:KYRA用IAMロールの作成

KYRA MDRがCloudTrailログを読み取れるようにするクロスアカウントIAMロールを作成します。

AWSコンソールを使用

  1. IAM > Roles > Create Role に移動
  2. Another AWS account を選択
  3. KYRA MDRのAWSアカウントID:123456789012(Console > Settings > Cloud Integrationsで提供)を入力
  4. Require external ID にチェックし、コンソールに表示されるExternal IDを入力
  5. Next をクリックし、以下のポリシーをアタッチ

IAMポリシー

KYRAMDRCloudTrailReadOnly という名前のカスタムポリシーを作成:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCloudTrailBucketAccess",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::your-cloudtrail-bucket",
"arn:aws:s3:::your-cloudtrail-bucket/AWSLogs/*"
]
},
{
"Sid": "AllowSNSSubscription",
"Effect": "Allow",
"Action": [
"sns:Subscribe",
"sns:ConfirmSubscription"
],
"Resource": "arn:aws:sns:*:*:your-cloudtrail-topic"
},
{
"Sid": "AllowCloudTrailDescribe",
"Effect": "Allow",
"Action": [
"cloudtrail:DescribeTrails",
"cloudtrail:GetTrailStatus",
"cloudtrail:LookupEvents"
],
"Resource": "*"
}
]
}

信頼ポリシー

ロールの信頼ポリシーは以下のようになります:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:role/KYRACloudSensor"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "your-external-id-from-console"
}
}
}
]
}

AWS CLIを使用

Terminal window
# ポリシーの作成
aws iam create-policy \
--policy-name KYRAMDRCloudTrailReadOnly \
--policy-document file://kyra-policy.json
# 信頼ポリシーでロールを作成
aws iam create-role \
--role-name KYRAMDRRole \
--assume-role-policy-document file://kyra-trust-policy.json
# ポリシーのアタッチ
aws iam attach-role-policy \
--role-name KYRAMDRRole \
--policy-arn arn:aws:iam::YOUR_ACCOUNT_ID:policy/KYRAMDRCloudTrailReadOnly

ステップ2:CloudTrailの設定

マルチリージョンCloudTrailトレイルがまだない場合は作成します:

トレイルの作成(必要な場合)

Terminal window
aws cloudtrail create-trail \
--name kyra-mdr-trail \
--s3-bucket-name your-cloudtrail-bucket \
--is-multi-region-trail \
--enable-log-file-validation \
--sns-topic-name your-cloudtrail-topic
aws cloudtrail start-logging --name kyra-mdr-trail

データイベントの有効化(オプションですが推奨)

データイベントはS3オブジェクトレベルおよびLambda呼び出しアクティビティの可視性を提供します:

Terminal window
aws cloudtrail put-event-selectors \
--trail-name kyra-mdr-trail \
--event-selectors '[
{
"ReadWriteType": "All",
"IncludeManagementEvents": true,
"DataResources": [
{
"Type": "AWS::S3::Object",
"Values": ["arn:aws:s3"]
},
{
"Type": "AWS::Lambda::Function",
"Values": ["arn:aws:lambda"]
}
]
}
]'

注意: データイベントは大量のボリュームを生成し、追加のCloudTrail費用が発生する可能性があります。まず管理イベントのみで開始し、必要に応じてデータイベントを追加してください。


ステップ3:KYRAコンソールで接続

  1. KYRA MDRコンソールを開きます
  2. Settings > Integrations > Add Integration に移動します
  3. AWS CloudTrail を選択します
  4. 以下を入力します:
    • AWS Account ID: 12桁のAWSアカウントID
    • IAM Role ARN: arn:aws:iam::YOUR_ACCOUNT_ID:role/KYRAMDRRole
    • S3 Bucket Name: CloudTrail S3バケット名
    • S3 Region: バケットのリージョン(例:ソウルの場合 ap-northeast-2
    • SNS Topic ARN(オプション): リアルタイム通知用
  5. Test Connection をクリック — KYRAがロールの引き受けとバケットのリスト表示を試みます
  6. Save をクリック

ステップ4:イベントの確認

連携ステータスの確認

コンソールで Settings > Integrations に移動します。AWS CloudTrail連携は以下を表示するはずです:

  • Status: Connected
  • Last Sync: 直近5分以内
  • Events Processed: 増加するカウント

AWSイベントの検索

  1. Log Search に移動します
  2. source_type:aws-cloudtrail でフィルタリングします
  3. 以下のようなイベントが表示されるはずです:
    • ConsoleLogin — AWSコンソールサインイン
    • AssumeRole — ロール引き受けイベント
    • RunInstances — EC2インスタンスの起動
    • CreateBucket — S3バケットの作成

テストイベントの生成

Terminal window
# テストセキュリティグループの作成と削除(CloudTrailイベントを生成)
SG_ID=$(aws ec2 create-security-group --group-name kyra-test --description "KYRA test" --output text --query 'GroupId')
aws ec2 delete-security-group --group-id $SG_ID

5〜15分以内(CloudTrailの配信遅延)に、KYRA MDRで CreateSecurityGroupDeleteSecurityGroup イベントが表示されるはずです。


必要な権限のまとめ

権限目的
s3:GetObjectS3からCloudTrailログファイルを読み取る
s3:ListBucket取り込み用の新しいログファイルをリスト
sns:SubscribeリアルタイムCloudTrail通知をサブスクライブ
cloudtrail:DescribeTrailsトレイル設定の検出
cloudtrail:GetTrailStatusトレイルヘルスの確認
cloudtrail:LookupEvents初期同期のための最新イベントのクエリ

KYRA MDRは読み取り専用アクセスを使用します。AWSリソースやCloudTrail設定を変更することはありません。


検出ルール

KYRA MDRにはAWS CloudTrail用の組み込み検出ルールが含まれています:

検出イベント名MITRE ATT&CK説明
rootアカウント使用ConsoleLogin(root)T1078.004rootアカウントのサインイン検出
IAMユーザー作成CreateUserT1136.003新しいIAMユーザーの作成
MFA無効化DeactivateMFADeviceT1556アカウントからMFAが削除
セキュリティグループ公開AuthorizeSecurityGroupIngressT1562.0070.0.0.0/0インバウンドルールの追加
CloudTrail無効化StopLoggingT1562.008トレイルログの停止
S3バケット公開PutBucketPolicyT1530バケットポリシーがパブリックアクセスを許可
異常なリージョン全般T1535通常でないAWSリージョンからのAPI呼び出し
アクセスキー漏洩通常でないIPからのGetCallerIdentityT1528資格情報漏洩の可能性

マルチアカウント設定

複数のアカウントを持つAWS Organizationsの場合、組織トレイルを使用した一元管理CloudTrailを使用できます:

  1. 管理アカウントで組織トレイルを有効化
  2. すべてのメンバーアカウントのイベントが単一のS3バケットに流入
  3. 管理アカウントにのみKYRA IAMロールを作成
  4. KYRA MDRがすべてのアカウントからのイベントを取り込みます
Terminal window
aws cloudtrail create-trail \
--name kyra-org-trail \
--s3-bucket-name your-org-cloudtrail-bucket \
--is-organization-trail \
--is-multi-region-trail

トラブルシューティング

接続テストが失敗する

  1. ロールARNは正しい? アカウントIDとロール名を再確認
  2. External IDが一致? 信頼ポリシーのExternal IDがコンソールと一致することを確認
  3. 信頼ポリシー? プリンシパルはKYRAのAWSアカウントでなければなりません
  4. S3バケットは存在する? バケット名とリージョンを確認

イベントが表示されない

  1. CloudTrailはアクティブ? aws cloudtrail get-trail-status --name your-trail を実行 — IsLogging: true を確認
  2. S3権限? 正しいバケットとパスで s3:GetObjects3:ListBucket を確認
  3. 配信遅延: CloudTrailは約5〜15分ごとにログをS3に配信 — イベントはリアルタイムではありません
  4. リージョンの不一致? コンソールのS3リージョンが実際のバケットリージョンと一致することを確認

高コスト

CloudTrail管理イベントは最初のトレイルについては無料です。データイベントは100,000イベントごとに費用が発生します。コストを削減するには:

  • 管理イベントのみで開始(デフォルト)
  • イベントセレクターを使用して特定のS3バケットまたはLambda関数をフィルタリング
  • 書き込みイベントで十分な場合は読み取り専用データイベントを除外