收集 AWS CloudTrail 記錄

剖析器版本:30.0

支援的服務:

本文說明如何設定 Google Security Operations 動態饋給,收集 AWS CloudTrail 記錄,以及記錄欄位如何對應至 Google SecOps Unified Data Model (UDM) 欄位。

詳情請參閱「將資料擷取至 Google SecOps」。

一般部署作業包含 AWS CloudTrail 和 Google SecOps 動態饋給,用於將記錄傳送至 Google SecOps。您的部署作業可能與本文所述的一般部署作業不同。部署作業包含下列元件:

  • AWS CloudTrail:收集記錄的平台。

  • AWS S3:儲存記錄的平台。

  • Google SecOps 動態饋給:Google SecOps 動態饋給會從 AWS S3 擷取記錄,並將記錄寫入 Google SecOps。

  • Google SecOps:保留及分析 AWS CloudTrail 記錄的平台。

擷取標籤會識別剖析器,將原始記錄資料正規化為結構化 UDM 格式。本文資訊適用於具有 AWS_CLOUDTRAIL 擷取標籤的剖析器。

事前準備

請確認您符合下列必要條件:

  • AWS 帳戶
  • 符合使用 AWS CloudTrail 的先決條件。詳情請參閱「AWS CloudTrail 設定」。
  • 部署架構中的所有系統都使用世界標準時間時區

透過 SQS 從 S3 擷取記錄的基本步驟

本節說明將 AWS CloudTrail 記錄擷取至 Google SecOps 執行個體的基本步驟。以下步驟說明如何使用 Amazon S3 搭配 Amazon SQS 做為動態饋給來源類型。

設定 AWS CloudTrail 和 S3

在這個程序中,您會設定 AWS CloudTrail 記錄,將其寫入 S3 bucket。

  1. 在 AWS 控制台中搜尋「CloudTrail」CloudTrail。
  2. 按一下「Create trail」(建立追蹤記錄)。
  3. 提供追蹤記錄名稱。
  4. 選取「Create new S3 bucket」。您也可以選擇使用現有的 S3 bucket。
  5. 提供 AWS KMS 別名的名稱,或選擇現有的 AWS KMS 金鑰。
  6. 其他設定可保留預設值,然後點選「下一步」。
  7. 選擇「事件類型」,視需要新增「資料事件」,然後點選「下一步」。
  8. 在「Review and create」(查看並建立) 中檢查設定,然後按一下「Create trail」(建立追蹤記錄)。
  9. 在 AWS 控制台搜尋 Amazon S3 Buckets。
  10. 按一下新建立的記錄檔 bucket,然後選取「AWSLogs」AWSLogs資料夾。接著點選「Copy S3 URI」並儲存,以便在後續步驟中使用。

設定標準 SQS 佇列和 SNS

如果使用 SQS 佇列,則必須是標準佇列,而非 FIFO 佇列。

  1. 啟用 AWS CloudTrail,並設定使用新的或現有的追蹤記錄,將記錄傳送至 S3 bucket。
  2. 開啟 AWS SNS 控制台,建立新的標準主題。命名主題,例如 CloudTrail-Notification-Topic。
  3. 使用 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"}
             }
          }
       ]
    }
    
  4. 依序前往「SNS topic」→「Subscriptions」→「Create subscription」,將「Protocol」設為「SQS」,並將「Endpoint」設為 SQS 佇列的 ARN。

  5. CloudTrail 不會原生將新記錄推送至 SNS。如要啟用通知,您可以使用管理事件的 CloudTrail 事件選取器,或使用 CloudTrail 與 CloudWatch Logs 整合,然後建立 CloudWatch 事件規則,透過將 SNS 主題設為目標來觸發通知。詳情請參閱「設定 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 使用者

設定 AWS IAM 使用者,Google SecOps 將使用該使用者存取 SQS 佇列 (如有使用) 和 S3 bucket。

  1. 在 AWS 控制台中搜尋 IAM。
  2. 點選「使用者」,然後在下一個畫面點選「建立使用者」。
  3. 提供使用者名稱,例如 chronicle-feed-user,然後選取「Provide user access to the AWS Management Console」。
  4. 選取「Attach existing policies directly」,然後視需要選取「AmazonS3ReadOnlyAccess」或「AmazonS3FullAccess」。如果 Google SecOps 應在讀取記錄後清除 S3 bucket,以最佳化 AWS S3 儲存空間成本,則應使用 AmazonS3FullAccess。
  5. 建議您採取替代做法,建立自訂政策,進一步限制只有指定的 S3 bucket 才能存取。按一下「Create policy」,然後按照 AWS 說明文件建立自訂政策。
  6. 套用政策時,請務必加入 sqs:DeleteMessage。如果 sqs:DeleteMessage 權限未附加至 SQS 佇列,Google SecOps 就無法刪除訊息。所有訊息都會累積在 AWS 端,導致 Google SecOps 反覆嘗試傳輸相同檔案,造成延遲。
  7. 按一下「Next:Tags」(下一步:標記)。
  8. 視需要新增標記,然後按一下「Next:Review」(下一步:查看)。
  9. 檢查設定,然後按一下「Create user」。
  10. 建立使用者後,前往「安全憑證」Security Credentials分頁標籤,然後點選「建立存取金鑰」Create Access Key。
  11. 選擇「CLI」,然後點選「Next:Tags」(下一步:標記)。
  12. 視需要新增標記,然後按一下「Create Access Key: Review」(建立存取金鑰:查看)。
  13. 複製所建立使用者的存取金鑰 ID 和私密存取金鑰,以便在下一個步驟中使用。

    如要查看SubjectID,請按照下列步驟操作:

    1. 在 Google SecOps 中,開始設定 AWS CloudTrail 動態饋給。
    2. 前往指定的 Amazon S3 bucket,查看 AWS CloudTrail 記錄中與動態饋給設定嘗試相關的項目。
    3. 開啟相關記錄項目,並在原始 JSON 資料中尋找 userIdentity 區段。
    4. 在該部分中,找出 principalId 或 userName 欄位。這裡列出的數值就是您的專屬 SubjectID。
    5. 複製這個 SubjectID 並新增至 AWS IAM 角色的信任政策,即可授予必要存取權限。

設定 KMS 金鑰權限

CloudTrail 記錄會在伺服器端加密,因此需要 KMS 金鑰才能解密。AWS KMS 可為儲存在 Amazon S3 的機密資料,提供更強大的加密和安全防護。

  1. 在 AWS 控制台中,搜尋「金鑰管理服務 (KMS)」。
  2. 按一下「建立金鑰:下一步」。
  3. 新增金鑰的別名。視需要新增「說明」和「標記」。按一下「下一步:檢閱」。
  4. 檢查設定後,按「下一步」。
  5. 選取應有權存取這組金鑰的金鑰使用者,然後按一下「完成」。

設定動態饋給

在 Google SecOps 平台中,有兩個不同的進入點可以設定動態饋給:

  • 「設定」>「資料管理」>「動態饋給」>「新增動態饋給」 (在僅限 SIEM 的平台上,依序點選「設定」>「動態饋給」>「新增動態饋給」)
  • Content Hub > Content Packs > Get Started

如何設定 AWS CloudTrail 動態饋給

  1. 按一下「Amazon Cloud Platform」套件。
  2. 在「AWS CloudTrail」記錄類型中,指定下列值:
  3. 為下列欄位指定值:

    • 來源類型:Amazon SQS V2
    • Queue Name:要讀取的 SQS 佇列名稱
    • S3 URI:值區 URI。
      • s3://your-log-bucket-name/
        • 將 your-log-bucket-name 替換為 S3 bucket 的實際名稱。
    • 來源刪除選項:根據攝入偏好設定選取刪除選項。

    • 檔案存在時間上限:包含過去幾天內修改過的檔案。預設值為 180 天。

    • SQS 佇列存取金鑰 ID:帳戶存取金鑰,由 20 個英數字元組成。

    • SQS 佇列私密存取金鑰:帳戶存取金鑰,由 40 個英數字元組成。

    進階選項

    • 動態饋給名稱:系統預先填入的值,用於識別動態饋給。
    • 資產命名空間:與動態饋給相關聯的命名空間。
    • 擷取標籤:套用至這個動態饋給所有事件的標籤。
  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 專業人員尋求解答。