AWS CloudTrail ログを収集する

以下でサポートされています。

このドキュメントでは、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 ログを構成します。

  1. AWS コンソールで「CloudTrail」を検索します。
  2. [Create trail] をクリックします。
  3. [Trail name] を指定します。
  4. [新しい S3 バケットを作成する] を選択します。既存の S3 バケットを使用するよう選択することもできます。
  5. [AWS KMS Alias] の名前を指定するか、既存の [AWS KMS Key] を選択します。
  6. その他の設定はデフォルトのままにして、[次へ] をクリックします。
  7. [イベントタイプ] を選択し、必要に応じて [データイベント] を追加して、[次へ] をクリックします。
  8. [Review and create] で設定を確認し、[Create trail] をクリックします。
  9. AWS コンソールで「Amazon S3 Buckets」を検索します。
  10. 新しく作成したログバケットをクリックし、フォルダ [AWSLogs] を選択します。[Copy S3 URI] をクリックして、次の手順で使用するために保存します。

Standard SQS キューと SNS を設定する

SQS キューを使用する場合は、FIFO キューではなく標準キューである必要があります。

  1. AWS CloudTrail を有効にし、新しいトレイルまたは既存のトレイルを使用してログを S3 バケットに配信するように構成します。
  2. AWS SNS コンソールを開き、新しい標準トピックを作成します。名前を付けます(例: CloudTrail-Notification-Topic)。
  3. AWS SQS コンソール(CloudTrail-Notification-Queue など)を使用して SQS キューを作成し、アクセス ポリシーを更新して、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"}
             }
          }
       ]
    }
    
  4. [SNS トピック] → [サブスクリプション] → [サブスクリプションの作成] に移動し、[プロトコル] を [SQS] に、[エンドポイント] を SQS キューの ARN に設定します。

  5. CloudTrail は、新しいログを SNS にネイティブにプッシュしません。通知を有効にするには、管理イベント用の CloudTrail イベント セレクタを使用するか、CloudTrail と CloudWatch Logs の統合を使用してから、SNS トピックをターゲットとして設定して通知をトリガーする CloudWatch イベントルールを作成します。詳細については、S3 バケットで通知を設定するをご覧ください。

    イベント パターンの例:

    {
       "source": ["aws.s3"],
       "detail-type": ["AWS API Call via CloudTrail"],
       "detail": {
          "eventName": ["PutObject"],
          "requestParameters": {
             "bucketName": [`CloudTrail-Notification-Topic`]
          }
       }
    }
    
  6. IAM ロールまたはポリシーで CloudWatch Events が SNS に公開できること、および SNS が SQS にメッセージを送信できることを確認します。

AWS IAM ユーザーを構成する

Google SecOps が SQS キュー(使用される場合)と S3 バケットの両方にアクセスするために使用する AWS IAM ユーザーを構成します。

  1. AWS コンソールで [IAM] を検索します。
  2. [ユーザー] をクリックし、次の画面で [ユーザーを作成] をクリックします。
  3. ユーザー名を指定します(例: chronicle-feed-user)。[AWS マネジメント コンソールへのユーザー アクセスを提供する] を選択します。
  4. [既存のポリシーを直接アタッチする] を選択し、必要に応じて [AmazonS3ReadOnlyAccess] または [AmazonS3FullAccess] を選択します。AWS S3 のストレージの費用を最適化するために、ログの読み取り後に Google SecOps が S3 バケットをクリアする場合は、AmazonS3FullAccess が使用されます。
  5. 前の手順の代わりとして、カスタム ポリシーを作成することで、指定された S3 バケットのみにアクセスをさらに制限できます。[ポリシーを作成] をクリックし、AWS のドキュメントに従ってカスタム ポリシーを作成します。
  6. ポリシーを適用する際は、sqs:DeleteMessage が含まれていることを確認してください。sqs:DeleteMessage 権限が SQS キューに付与されていない場合、Google SecOps はメッセージを削除できません。すべてのメッセージは AWS 側に蓄積され、Google SecOps が同じファイルを繰り返し転送しようとするため、遅延が発生します。
  7. [次へ:タグ] をクリックします。
  8. 必要に応じてタグを追加し、[次へ: 確認] をクリックします。
  9. 構成を確認し、[ユーザーを作成] をクリックします。
  10. ユーザーを作成したら、[セキュリティ認証情報] タブに移動し、[アクセスキーを作成] をクリックします。
  11. [CLI] を選択し、[次へ:タグ] をクリックします。
  12. 必要に応じてタグを追加し、[アクセスキーの作成: 確認] をクリックします。
  13. 作成したユーザーのアクセスキー IDシークレット アクセスキーをコピーして、次のステップで使用します。

    SubjectID を見つける手順は次のとおりです。

    1. Google SecOps 内で AWS CloudTrail フィードの構成プロセスを開始します。
    2. 指定された Amazon S3 バケットに移動し、フィード設定の試行に関連するエントリについて AWS CloudTrail ログを確認します。
    3. 関連するログエントリを開き、未加工の JSON データ内の userIdentity セクションを探します。
    4. そのセクション内で、principalId フィールドまたは userName フィールドを探します。ここに記載されている数値が、一意の SubjectID です。
    5. この SubjectID をコピーして、AWS IAM ロールの信頼ポリシーに追加し、必要なアクセス権限を付与します。

KMS 鍵の権限を構成する

サーバーサイドで暗号化された CloudTrail ログを復号するには、KMS 鍵が必要です。AWS KMS は、Amazon S3 に保存されているセンシティブ データの高度な暗号化とセキュリティを強化します。

  1. AWS コンソールで [Key Management Service(KMS)] を検索します。
  2. [キーを作成:次へ] をクリックします。
  3. 鍵のエイリアスを追加します。必要に応じて、説明タグを追加します。[次へ: 確認] をクリックします。
  4. 構成を確認したら、[次へ] をクリックします。
  5. この鍵にアクセスできるキーユーザーを選択し、[完了] をクリックします。

フィードを設定する

Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。

  • [SIEM 設定] > [フィード] > [新規追加]
  • Content Hub > Content Packs > Get Started

AWS CloudTrail フィードを設定する方法

  1. [Amazon Cloud Platform] パックをクリックします。
  2. [AWS CloudTrail] ログタイプで、次の値を指定します。
  3. 次のフィールドに値を指定します。

    • ソースタイプ: Amazon SQS V2
    • キュー名: 読み取る SQS キュー名
    • S3 URI: バケット URI。
      • s3://your-log-bucket-name/
        • your-log-bucket-name は、実際の S3 バケットの名前に置き換えます。
    • Source deletion options: 取り込みの設定に応じて削除オプションを選択します。

    • ファイルの最大経過日数: 指定した日数以内に変更されたファイルを含めます。デフォルトは 180 日です。

    • SQS キュー アクセスキー ID: 20 文字の英数字の文字列であるアカウント アクセスキー。

    • SQS キューのシークレット アクセスキー: 40 文字の英数字の文字列であるアカウント アクセスキー。

    詳細オプション

    • フィード名: フィードを識別する事前入力された値。
    • アセットの名前空間: フィードに関連付けられた名前空間。
    • Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。
  4. [フィードを作成] をクリックします。

このプロダクト ファミリー内の異なるログタイプに対して複数のフィードを構成する方法については、プロダクト別にフィードを構成するをご覧ください。

サポートされている 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 のプロフェッショナルから回答を得ることができます。