AWS CloudTrail ログを収集する
パーサーのバージョン: 30.0
このドキュメントでは、Google Security Operations フィードを設定して AWS CloudTrail のログを収集する方法と、ログフィールドが Google SecOps の統合データモデル(UDM)フィールドにマッピングする方法について説明します。
詳細については、Google SecOps へのデータの取り込みをご覧ください。
一般的なデプロイは、AWS CloudTrail と、Google SecOps にログを送信するように構成された Google SecOps フィードで構成されます。実際のデプロイは、このドキュメントで説明されている一般的なデプロイとは異なる場合があります。 デプロイには次のコンポーネントが含まれます。
AWS CloudTrail: ログを収集するプラットフォーム。
AWS S3: ログを保存するプラットフォーム。
Google SecOps フィード: AWS S3 からログを取得し、Google SecOps にログを書き込む Google SecOps フィード 。
Google SecOps: AWS CloudTrail からの ログを保持して分析するプラットフォーム。
取り込みラベルによって、未加工のログデータを構造化 UDM 形式に正規化するパーサーが識別されます。このドキュメントの情報は、AWS_CLOUDTRAIL 取り込みラベルが付いたパーサーに適用されます。
始める前に
次の前提条件を満たしていることを確認してください。
- AWS アカウント
- AWS CloudTrail を使用するための前提条件を満たしている。詳細については、AWS CloudTrail の設定をご覧ください。
- デプロイ アーキテクチャ内のすべてのシステムが UTC タイムゾーンを使用している
SQS を使用して S3 からログを取り込む基本的な手順
このセクションでは、AWS CloudTrail ログを Google SecOps インスタンスに取り込む基本的な手順について説明します。このステップでは、フィードソースタイプとして Amazon SQS で Amazon S3 を使用して、これを行う方法を説明します。
AWS CloudTrail と S3 を構成する
この手順では、S3 バケットに書き込まれるように AWS CloudTrail ログを構成します。
- AWS コンソールで「CloudTrail 」を検索します。
- [Create trail] をクリックします。
- [Trail name] を指定します。
- [新しい S3 バケットを作成する] を選択します。既存の S3 バケットを使用するよう選択することもできます。
- [AWS KMS Alias] の名前を指定するか、既存の [AWS KMS Key] を選択します。
- その他の設定はデフォルトのままにして、[Next] をクリックします。
- [イベントタイプ] を選択し、必要に応じて [データイベント] を追加して、[次へ] をクリックします。
- [Review and create] で設定を確認し、[Create trail] をクリックします。
- AWS コンソールで「Amazon S3 Buckets 」を検索します。
- 新しく作成したログバケットをクリックし、フォルダ [AWSLogs] を選択します。[Copy S3 URI] をクリックして、次の手順で使用するために保存します。
標準 SQS キューと SNS を設定する
SQS キューを使用する場合は、FIFO キューではなく標準キュー である必要があります。
- AWS CloudTrail を有効にし、新しいトレイルまたは既存のトレイルを使用してログを S3 バケットに配信するように構成します。
- AWS SNS コンソールを開き、新しい標準トピックを作成します。名前を付けます(例: CloudTrail-Notification-Topic)。
AWS SQS コンソールを使用して SQS キュー(CloudTrail-Notification-Queue など)を作成し、SNS トピック ARN がメッセージを送信できるようにアクセス ポリシーを更新します。SQS キューの作成の詳細については、Amazon SQS の使用を開始するをご覧ください。
SQS ポリシー スニペットの例:
{ "Version": "2012-10-17", "Id": `PolicyForSNS`, "Statement": [ { "Sid": "AllowSNS", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "SQS:SendMessage", "Resource": "arn:aws:sqs:REGION:ACCOUNT_ID:CloudTrail-Notification-Queue", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:REGION:ACCOUNT_ID:CloudTrail-Notification-Topic"} } } ] }[SNS topic] → [Subscriptions] → [Create subscription] に移動し、[Protocol] を [SQS] に、[Endpoint] を SQS キューの ARN に設定します。
CloudTrail は、新しいログを SNS にネイティブにプッシュしません。通知を有効にするには、管理イベントの CloudTrail イベント セレクタ を使用するか、CloudWatch Logs との CloudTrail 統合 を使用して、SNS トピックをターゲットとして設定することで通知をトリガーする CloudWatch イベントルールを作成します。詳細については、S3 バケットで通知を設定するをご覧ください。
イベント パターンの例:
{ "source": ["aws.s3"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventName": ["PutObject"], "requestParameters": { "bucketName": [`CloudTrail-Notification-Topic`] } } }IAM ロールまたはポリシーで CloudWatch Events が SNS に公開できるようにし、SNS が SQS にメッセージを送信できるようにします。
AWS IAM ユーザーを構成する
Google SecOps が SQS キュー(使用されるる場合)と S3 バケットの両方にアクセスするために使用する AWS IAM ユーザーを構成します。
- AWS コンソールで [IAM] を検索します。
- [ユーザー] をクリックし、次の画面で [ユーザーを作成] をクリックします。
- ユーザー名を指定します(例: chronicle-feed-user)。[**AWS Management Console へのユーザー アクセスを提供する**] を選択します。
- [既存のポリシーを直接アタッチする] を選択し、必要に応じて [AmazonS3ReadOnlyAccess] または [AmazonS3FullAccess] を選択します。AWS S3 のストレージの費用を最適化するために、ログの読み取り後に Google SecOps が S3 バケットをクリアする場合は、AmazonS3FullAccess が使用されます。
- 前の手順の代わりとして、カスタム ポリシーを作成することで、指定された S3 バケットのみにアクセスをさらに制限できます。[ポリシーを作成] をクリックし、AWS のドキュメントに従ってカスタム ポリシーを作成します。
- ポリシーを適用する際は、
sqs:DeleteMessageが含まれていることを確認してください。sqs:DeleteMessage権限が SQS キューにアタッチされていない場合、Google SecOps はメッセージを削除できません。すべてのメッセージは AWS 側に蓄積され、Google SecOps が同じファイルを繰り返し転送しようとするため、遅延が発生します。 - [Next:Tags] をクリックします。
- 必要に応じてタグを追加し、[次へ: 確認] をクリックします。
- 構成を確認し、[ユーザーを作成] をクリックします。
- ユーザーが作成されたら、[Security Credentials] タブに移動し、[Create Access Key] をクリックします。
- [CLI] を選択し、[Next:Tags] をクリックします。
- 必要に応じてタグを追加し、[Create Access Key: Review] をクリックします。
作成したユーザーのアクセスキー ID とシークレット アクセスキー をコピーして、次のステップで使用します。
SubjectIDを確認する手順は次のとおりです。- Google SecOps 内で AWS CloudTrail フィード構成プロセスを開始します。
- 指定した Amazon S3 バケットに移動し、フィード設定の試行に関連するエントリがないか AWS CloudTrail ログを確認します。
- 関連するログエントリを開き、未加工の JSON データ内の
userIdentityセクションを探します。 - そのセクションで、
principalIdフィールドまたはuserNameフィールドを見つけます。ここに表示される数値が、一意のSubjectID です。 - このSubjectID をコピーして、必要なアクセス権を付与するために AWS IAM ロールの信頼ポリシーに追加します。
KMS 鍵の権限を構成する
サーバーサイドで暗号化された CloudTrail ログを復号するには、KMS 鍵が必要です。 AWS KMS は、Amazon S3 に保存されているセンシティブ データの高度な暗号化とセキュリティを強化します。
- AWS コンソールで「Key Management Service(KMS) 」を検索します。
- [Create Key:Next] をクリックします。
- 鍵のエイリアス を追加します。必要に応じて、説明 とタグ を追加します。[Next: Review] をクリックします。
- 構成を確認したら、[Next] をクリックします。
- この鍵にアクセスできる鍵ユーザー を選択し、[完了] をクリックします。
フィードを設定する
Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。
- SIEM Settings > Feeds > Add New
- Content Hub > Content Packs > Get Started
AWS CloudTrail フィードを設定する方法
- [Amazon Cloud Platform] パックをクリックします。
- [AWS CloudTrail] ログタイプで、次の値を指定します。
次のフィールドの値を指定します。
- Source Type: Amazon SQS V2
- Queue Name: 読み取る SQS キュー名
- S3 URI: バケット URI。
s3://your-log-bucket-name/your-log-bucket-nameは、実際の S3 バケット名に置き換えます。
ソース削除オプション: 取り込みの設定に応じて削除オプションを選択します。
Maximum File Age: 過去数日間に変更されたファイルを含めます。デフォルトは 180 日です。
SQS キュー アクセス キー ID: 20 文字の英数字文字列であるアカウント アクセスキー。
SQS Queue Secret Access Key: 40 文字の英数字文字列であるアカウント アクセスキー。
詳細オプション
- フィード名: フィードを識別する事前入力された値。
- Asset Namespace: フィードに関連付けられた Namespace。
- Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。
[フィードを作成] をクリックします。
このプロダクト ファミリー内の異なるログタイプに複数のフィードを構成する方法については、プロダクトごとにフィードを構成するをご覧ください。
サポートされている AWS CloudTrail ログタイプ
AWS CloudTrail パーサーは、次のサービスをサポートしています。
- apigateway.amazonaws.com
- appconfig.amazonaws.com
- autoscaling.amazonaws.com
- cloud9.amazonaws.com
- cloudsearch.amazonaws.com
- cloudshell.amazonaws.com
- cloudtrail.amazonaws.com
- config.amazonaws.com
- devicefarm.amazonaws.com
- ds.amazonaws.com
- dynamodb.amazonaws.com
- ec2-instance-connect.amazonaws.com
- ec2.amazonaws.com
- ecr-public.amazonaws.com
- ecr.amazonaws.com
- ecs.amazonaws.com
- eks.amazonaws.com
- elasticache.amazonaws.com
- elasticloadbalancing.amazonaws.com
- firehose.amazonaws.com
- guardduty.amazonaws.com
- health.amazonaws.com
- iam.amazonaws.com
- imagebuilder.amazonaws.com
- kinesis.amazonaws.com
- kinesisanalytics.amazonaws.com
- kinesisvideo.amazonaws.com
- kms.amazonaws.com
- lambda.amazonaws.com
- logs.amazonaws.com
- macie2.amazonaws.com
- monitoring.amazonaws.com
- network-firewall.amazonaws.com
- organizations.amazonaws.com
- quicksight.amazonaws.com
- ram.amazonaws.com
- rds.amazonaws.com
- resource-explorer-2.amazonaws.com
- resource-groups.amazonaws.com
- route53-recovery-readiness.amazonaws.com
- route53.amazonaws.com
- route53domains.amazonaws.com
- route53resolver.amazonaws.com
- s3-outposts.amazonaws.com
- s3.amazonaws.com
- s3express.amazonaws.com
- secretsmanager.amazonaws.com
- securityhub.amazonaws.com
- ses.amazonaws.com
- signin.amazonaws.com
- ssm.amazonaws.com
- sts.amazonaws.com
- waf-regional.amazonaws.com
- waf.amazonaws.com
- wafv2.amazonaws.com
サポートされている AWS CloudTrail ログ形式
AWS CloudTrail パーサーは、JSON 形式のログをサポートしています。
サポートされている AWS CloudTrail サンプルログ
JSON:
{ "Records": [{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAXELJRGZMPHEYTK4Q4:redlock", "arn": "arn:aws:sts::111111111111:assumed-role/PrismaCloudReadOnlyRole/redlock", "accountId": "111111111111", "accessKeyId": "ASIAXELJRGZMNUCV3DC4", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAXELJRGZMPHEYTK4Q4", "arn": "arn:aws:iam::111111111111:role/PrismaCloudReadOnlyRole", "accountId": "111111111111", "userName": "PrismaCloudReadOnlyRole" }, "webIdFederationData": {}, "attributes": { "creationDate": "2021-07-01T03:20:01Z", "mfaAuthenticated": "false" } } }, "eventTime": "2021-07-01T03:35:42Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "eu-west-1", "sourceIPAddress": "198.51.100.0", "userAgent": "aws-sdk-java/1.11.1025Linux/4.14.232-176.381.amzn2.x86_64OpenJDK_64-Bit_Server_VM/11.0.10+9java/11.0.10groovy/2.5.12vendor/AdoptOpenJDKcfg/retry-mode/legacy", "requestParameters": { "keyId": "11a011a1-1010-11a1-a0aa-c4e1a9367642" }, "responseElements": null, "requestID": "11a011a1-1010-11a1-a0aa-604ac86fc50e", "eventID": "11a011a1-1010-11a1-a0aa-17ef2bdeb889", "readOnly": true, "resources": [{ "accountId": "111111111111", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:111111111111:key/11a011a1-1010-11a1-a0aa-c4e1a9367642" }], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111111111111", "eventCategory": "Management" }] }
フィールド マッピングと UDM マッピングの詳細については、AWS CloudTrail のフィールド マッピングをご覧ください。
変更履歴
さらにサポートが必要な場合コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。