AWS CloudWatch 로그 수집
이 문서에서는 AWS CloudWatch 로그를 Google Security Operations로 수집하는 방법을 설명합니다. AWS CloudWatch는 로그, 측정항목, 이벤트 형식으로 운영 데이터를 수집하는 모니터링 및 관측 서비스입니다. 이 통합을 통해 이러한 로그를 Google SecOps로 전송하여 분석 및 모니터링할 수 있습니다.
시작하기 전에
- Google SecOps 인스턴스가 있는지 확인합니다.
- AWS에 대한 권한이 있는지 확인합니다.
Amazon S3 버킷 만들기
CloudWatch 로그용으로 특별히 만든 버킷을 사용하는 것이 좋습니다.
- Amazon S3 콘솔을 엽니다.
- 필요한 경우 지역을 변경할 수 있습니다.
- 탐색 메뉴에서 CloudWatch 로그가 있는 리전을 선택합니다.
- 버킷 만들기를 클릭합니다.
- 버킷 이름: 버킷의 의미 있는 이름을 입력합니다.
- 리전: CloudWatch Logs 데이터가 있는 리전을 선택합니다.
- 만들기를 클릭합니다.
Amazon S3 및 CloudWatch Logs에 대한 전체 액세스 권한이 있는 IAM 사용자 만들기
- IAM 콘솔을 엽니다.
- 사용자 > 사용자 추가를 클릭합니다.
- 사용자 이름을 입력합니다 (예: CWExport).
- 프로그래매틱 액세스 및 AWS 관리 콘솔 액세스를 선택합니다.
- 자동 생성 비밀번호 또는 맞춤 비밀번호를 선택합니다.
- 다음: 권한을 클릭합니다.
- 기존 정책 직접 연결을 선택합니다.
- 사용자에게 적용할 AmazonS3FullAccess 및 CloudWatchLogsFullAccess 정책을 검색하여 선택합니다.
- 다음: 태그를 클릭합니다.
- 다음: 검토를 클릭합니다.
- 사용자 만들기를 클릭합니다.
Amazon S3 버킷에 대한 권한 구성
- Amazon S3 콘솔에서 이전에 만든 버킷을 선택합니다.
- 권한 > 버킷 정책을 클릭합니다.
버킷 정책 편집기에서 다음 정책을 추가합니다.
{ "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::cw-exported-logs", "Principal": { "Service": "logs.us-east-1.amazonaws.com" } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/random-string/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } }, "Principal": { "Service": "logs.us-east-1.amazonaws.com" } } ] }
다음
json
변수를 변경하고 업데이트합니다.cw-exported-logs
을 S3 버킷 이름으로 변경합니다.random-string
를 무작위로 생성된 문자열로 변경합니다.- Principal에 올바른 리전 엔드포인트를 지정해야 합니다.
저장을 클릭하여 방금 추가한 정책을 버킷의 액세스 정책으로 설정합니다.
CloudWatch Export 구성
- 이전에 만든 IAM 사용자로 로그인합니다.
- CloudWatch 콘솔을 엽니다.
- 탐색 메뉴에서 로그 그룹을 선택합니다.
- 기존 로그 그룹의 이름을 선택하거나 새 로그 그룹을 만듭니다.
- 작업 > Amazon S3로 데이터 내보내기를 선택합니다.
- Amazon S3로 데이터 내보내기 화면에서 데이터 내보내기 정의를 찾습니다.
- From 및 To를 사용하여 내보낼 데이터의 기간을 설정합니다.
- S3 버킷 선택: Amazon S3 버킷과 연결된 계정을 선택합니다.
- S3 버킷 이름: Amazon S3 버킷을 선택합니다.
- S3 버킷 접두사: 버킷 정책에 지정한 무작위로 생성된 문자열을 입력합니다.
- 내보내기를 선택하여 로그 데이터를 Amazon S3로 내보냅니다.
- Amazon S3로 내보낸 로그 데이터의 상태를 보려면 작업 > Amazon S3로 내보낸 모든 항목 보기를 선택합니다.
AWS CloudWatch 로그를 수집하도록 Google SecOps에서 피드 구성
- SIEM 설정 > 피드로 이동합니다.
- 새로 추가를 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다 (예: AWS CloudWatch Logs).
- 소스 유형으로 Amazon S3를 선택합니다.
- 로그 유형으로 AWS CloudWatch를 선택합니다.
- 다음을 클릭합니다.
다음 입력 매개변수의 값을 지정합니다.
- 리전: Amazon S3 버킷이 있는 리전입니다.
- S3 URI: 버킷 URI입니다.
s3://your-log-bucket-name/
your-log-bucket-name
을 버킷의 실제 이름으로 바꿉니다.
- URI: 디렉터리 또는 하위 디렉터리가 포함된 디렉터리를 선택합니다.
소스 삭제 옵션: 원하는 삭제 옵션을 선택합니다.
액세스 키 ID: S3 버킷에 대한 액세스 권한이 있는 사용자 액세스 키입니다.
보안 비밀 액세스 키: S3 버킷에 액세스할 수 있는 사용자 보안 비밀 키입니다.
애셋 네임스페이스: 애셋 네임스페이스입니다.
수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.
다음을 클릭합니다.
확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.
UDM 매핑 표
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
account |
principal.user.userid |
원시 로그의 account 값이 principal.user.userid 필드에 매핑됩니다. |
account_id |
principal.user.userid |
원시 로그의 account_id 값이 principal.user.userid 필드에 매핑됩니다. |
AlertId |
metadata.product_log_id |
원시 로그의 AlertId 값이 metadata.product_log_id 필드에 매핑됩니다. |
arrivalTimestamp |
metadata.event_timestamp |
원시 로그의 arrivalTimestamp 값이 타임스탬프로 변환되고 metadata.event_timestamp 필드에 매핑됩니다. |
attemptsMade |
additional.fields |
원시 로그의 attemptsMade 값이 문자열로 변환되고 'Attempts Made' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
awsAccountId |
principal.asset_id |
원시 로그의 awsAccountId 값 앞에 'AWS 계정 ID: '가 추가되고 principal.asset_id 필드에 매핑됩니다. |
billed_duration |
additional.fields |
원시 로그의 billed_duration 값이 'billed_duration' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
BytesIn |
network.received_bytes |
원시 로그의 BytesIn 값은 부호 없는 정수로 변환되고 network.received_bytes 필드에 매핑됩니다. |
cipher |
network.tls.cipher |
원시 로그의 cipher 값이 network.tls.cipher 필드에 매핑됩니다. |
Ciphers |
network.tls.client.supported_ciphers |
원시 로그의 Ciphers 값은 쉼표로 구분되며 각 값은 network.tls.client.supported_ciphers 배열에 추가됩니다. |
cloudwatchLog |
security_result.description |
원시 로그의 cloudwatchLog 값이 security_result.description 필드에 매핑됩니다. |
CloudAccountId |
metadata.product_deployment_id |
원시 로그의 CloudAccountId 값이 metadata.product_deployment_id 필드에 매핑됩니다. |
CloudType |
target.resource.attribute.cloud.environment |
원시 로그의 CloudType 값에 따라 target.resource.attribute.cloud.environment 값이 결정됩니다. CloudType 이 'gcp'인 경우 값은 'GOOGLE_CLOUD_PLATFORM'입니다. CloudType 이 'aws'이면 값은 'AMAZON_WEB_SERVICES'입니다. CloudType 이 'azure'인 경우 값은 'MICROSOFT_AZURE'입니다. |
Context.Execution.Id |
target.resource.attribute.labels |
원시 로그의 Context.Execution.Id 값이 '컨텍스트 ID' 키를 사용하여 target.resource.attribute.labels 에 키-값 쌍으로 추가됩니다. |
Context.Execution.Name |
target.resource.attribute.labels |
원시 로그의 Context.Execution.Name 값이 '컨텍스트 이름' 키를 사용하여 target.resource.attribute.labels 에 키-값 쌍으로 추가됩니다. |
Context.Execution.RoleArn |
target.resource.product_object_id |
원시 로그의 Context.Execution.RoleArn 값이 target.resource.product_object_id 필드에 매핑됩니다. |
descr |
metadata.description |
원시 로그의 descr 값은 추가 공백을 삭제한 후 '-'가 아닌 한 metadata.description 필드에 매핑됩니다. descr 가 비어 있으면 log 값이 대신 사용됩니다. |
destination.name |
target.location.country_or_region |
원시 로그의 destination.name 값이 target.location.country_or_region 필드에 매핑됩니다. |
destination.properties.prefix |
target.resource.attribute.labels |
원시 로그의 destination.properties.prefix 값이 'Destination properties prefix' 키를 사용하여 target.resource.attribute.labels 에 키-값 쌍으로 추가됩니다. |
detail.additionalEventData.configRuleArn |
security_result.rule_id |
원시 로그의 detail.additionalEventData.configRuleArn 값이 security_result.rule_id 필드에 매핑됩니다. |
detail.additionalEventData.configRuleName |
security_result.rule_name |
원시 로그의 detail.additionalEventData.configRuleName 값이 security_result.rule_name 필드에 매핑됩니다. |
detail.additionalEventData.managedRuleIdentifier |
additional.fields |
원시 로그의 detail.additionalEventData.managedRuleIdentifier 값이 'managedRuleIdentifier' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
detail.additionalEventData.notificationJobType |
additional.fields |
원시 로그의 detail.additionalEventData.notificationJobType 값이 'notificationJobType' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
detail.awsAccountId |
principal.asset_id |
원시 로그의 detail.awsAccountId 값 앞에 'AWS 계정 ID: '가 추가되고 principal.asset_id 필드에 매핑됩니다. |
detail.awsRegion |
principal.location.name |
원시 로그의 detail.awsRegion 값이 principal.location.name 필드에 매핑됩니다. |
detail.configRuleArn |
security_result.rule_id |
원시 로그의 detail.configRuleArn 값이 security_result.rule_id 필드에 매핑됩니다. |
detail.configRuleName |
security_result.rule_name |
원시 로그의 detail.configRuleName 값이 security_result.rule_name 필드에 매핑됩니다. |
detail.configurationItem.awsAccountId |
principal.user.userid |
원시 로그의 detail.configurationItem.awsAccountId 값이 principal.user.userid 필드에 매핑됩니다. |
detail.configurationItem.awsRegion |
target.location.country_or_region |
원시 로그의 detail.configurationItem.awsRegion 값이 target.location.country_or_region 필드에 매핑됩니다. |
detail.configurationItem.configuration.complianceType |
security_result.summary |
원시 로그의 detail.configurationItem.configuration.complianceType 값이 security_result.summary 필드에 매핑됩니다. |
detail.configurationItem.configuration.targetResourceId |
target.resource.attribute.labels |
원시 로그의 detail.configurationItem.configuration.targetResourceId 값이 'configurationItem configuration targetResourceId' 키를 사용하여 target.resource.attribute.labels 에 키-값 쌍으로 추가됩니다. |
detail.configurationItem.configuration.targetResourceType |
target.resource.attribute.labels |
원시 로그의 detail.configurationItem.configuration.targetResourceType 값이 'configurationItem configuration targetResourceType' 키를 사용하여 target.resource.attribute.labels 에 키-값 쌍으로 추가됩니다. |
detail.configurationItem.configurationItemCaptureTime |
_target.asset.attribute.creation_time |
원시 로그의 detail.configurationItem.configurationItemCaptureTime 값이 타임스탬프로 변환되고 _target.asset.attribute.creation_time 필드에 매핑됩니다. |
detail.configurationItem.configurationItemStatus |
target.resource.attribute.labels |
원시 로그의 detail.configurationItem.configurationItemStatus 값이 target.resource.attribute.labels 에 'configurationItem configurationItemStatus' 키와 함께 키-값 쌍으로 추가됩니다. |
detail.configurationItem.configurationStateId |
target.resource.attribute.labels |
원시 로그의 detail.configurationItem.configurationStateId 값이 문자열로 변환되고 'configurationItem configurationStateId' 키를 사용하여 target.resource.attribute.labels 에 키-값 쌍으로 추가됩니다. |
detail.configurationItem.resourceId |
target.resource.id |
원시 로그의 detail.configurationItem.resourceId 값이 target.resource.id 필드에 매핑됩니다. |
detail.configurationItem.resourceType |
target.resource.resource_subtype |
원시 로그의 detail.configurationItem.resourceType 값이 target.resource.resource_subtype 필드에 매핑됩니다. |
detail.configurationItemDiff.changedProperties.Configuration.configRuleList.1.updatedValue.configRuleArn |
security_result.rule_id |
원시 로그의 detail.configurationItemDiff.changedProperties.Configuration.configRuleList.1.updatedValue.configRuleArn 값이 security_result.rule_id 필드에 매핑됩니다. |
detail.eventCategory |
security_result.category_details |
원시 로그의 detail.eventCategory 값이 security_result.category_details 필드에 매핑됩니다. |
detail.eventID |
metadata.product_log_id |
원시 로그의 detail.eventID 값이 metadata.product_log_id 필드에 매핑됩니다. |
detail.eventName |
additional.fields |
원시 로그의 detail.eventName 값이 '이벤트 이름' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
detail.eventSource |
target.application |
원시 로그의 detail.eventSource 값이 target.application 필드에 매핑됩니다. |
detail.eventType |
additional.fields |
원시 로그의 detail.eventType 값이 'Event Type' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
detail.eventVersion |
metadata.product_version |
원시 로그의 detail.eventVersion 값이 metadata.product_version 필드에 매핑됩니다. |
detail.managementEvent |
additional.fields |
원시 로그의 detail.managementEvent 값이 문자열로 변환되고 'detail managementEvent' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
detail.messageType |
target.resource.attribute.labels |
원시 로그의 detail.messageType 값이 'Message Type' 키를 사용하여 target.resource.attribute.labels 에 키-값 쌍으로 추가됩니다. |
detail.newEvaluationResult.complianceType |
security_result.summary |
원시 로그의 detail.newEvaluationResult.complianceType 값이 security_result.summary 필드에 매핑됩니다. |
detail.newEvaluationResult.configRuleInvokedTime |
additional.fields |
원시 로그의 detail.newEvaluationResult.configRuleInvokedTime 값이 'newEvaluationResult_configRuleInvokedTime' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.configRuleName |
additional.fields |
원시 로그의 detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.configRuleName 값이 'newEvaluationResult_configRuleName' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceId |
additional.fields |
원시 로그의 detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceId 값이 'newEvaluationResult_resourceId' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceType |
additional.fields |
원시 로그의 detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceType 값이 'newEvaluationResult_resourceType' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
detail.newEvaluationResult.resultRecordedTime |
additional.fields |
원시 로그의 detail.newEvaluationResult.resultRecordedTime 값이 'newEvaluationResult_resultRecordedTime' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
detail.oldEvaluationResult.configRuleInvokedTime |
additional.fields |
원시 로그의 detail.oldEvaluationResult.configRuleInvokedTime 값이 'oldEvaluationResult_configRuleInvokedTime' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.configRuleName |
additional.fields |
원시 로그의 detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.configRuleName 값이 'oldEvaluationResult_configRuleName' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceId |
additional.fields |
원시 로그의 detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceId 값이 additional.fields 에 'oldEvaluationResult_resourceId' 키와 함께 키-값 쌍으로 추가됩니다. |
detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceType |
additional.fields |
원시 로그의 detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceType 값이 additional.fields 에 'oldEvaluationResult_resourceType' 키와 함께 키-값 쌍으로 추가됩니다. |
detail.oldEvaluationResult.resultRecordedTime |
additional.fields |
원시 로그의 detail.oldEvaluationResult.resultRecordedTime 값이 'oldEvaluationResult_resultRecordedTime' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
detail.readOnly |
additional.fields |
원시 로그의 detail.readOnly 값이 문자열로 변환되고 'detail readOnly' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
detail.recipientAccountId |
target.resource.attribute.labels |
원시 로그의 detail.recipientAccountId 값이 'Recipient Account Id' 키를 사용하여 target.resource.attribute.labels 에 키-값 쌍으로 추가됩니다. |
detail.recordVersion |
metadata.product_version |
원시 로그의 detail.recordVersion 값이 metadata.product_version 필드에 매핑됩니다. |
detail.requestID |
target.resource.attribute.labels |
원시 로그의 detail.requestID 값이 target.resource.attribute.labels 에 'Detail Request ID' 키와 함께 키-값 쌍으로 추가됩니다. |
detail.resourceType |
target.resource.resource_subtype |
원시 로그의 detail.resourceType 값이 target.resource.resource_subtype 필드에 매핑됩니다. |
detail.s3Bucket |
about.resource.name |
원시 로그의 detail.s3Bucket 값이 about.resource.name 필드에 매핑됩니다. |
detail.s3ObjectKey |
target.resource.attribute.labels |
원시 로그의 detail.s3ObjectKey 값이 's3ObjectKey' 키를 사용하여 target.resource.attribute.labels 에 키-값 쌍으로 추가됩니다. |
detail.userAgent |
network.http.user_agent |
원시 로그의 detail.userAgent 값이 network.http.user_agent 필드에 매핑됩니다. |
detail.userIdentity.accessKeyId |
target.user.userid |
원시 로그의 detail.userIdentity.accessKeyId 값이 target.user.userid 필드에 매핑됩니다. |
detail.userIdentity.accountId |
metadata.product_deployment_id |
원시 로그의 detail.userIdentity.accountId 값이 metadata.product_deployment_id 필드에 매핑됩니다. |
detail.userIdentity.arn |
target.user.userid |
원시 로그의 detail.userIdentity.arn 값이 target.user.userid 필드에 매핑됩니다. |
detail.userIdentity.principalId |
principal.user.product_object_id |
원시 로그의 detail.userIdentity.principalId 값이 principal.user.product_object_id 필드에 매핑됩니다. |
detail.userIdentity.sessionContext.attributes.mfaAuthenticated |
principal.user.attribute.labels |
원시 로그의 detail.userIdentity.sessionContext.attributes.mfaAuthenticated 값이 'mfaAuthenticated' 키를 사용하여 principal.user.attribute.labels 에 키-값 쌍으로 추가됩니다. |
detail.userIdentity.sessionContext.sessionIssuer.userName |
target.user.user_display_name |
원시 로그의 detail.userIdentity.sessionContext.sessionIssuer.userName 값이 target.user.user_display_name 필드에 매핑됩니다. |
detail.userIdentity.type |
principal.resource.type |
원시 로그의 detail.userIdentity.type 값이 principal.resource.type 필드에 매핑됩니다. |
detail-type |
metadata.product_event_type |
원시 로그의 detail-type 값이 metadata.product_event_type 필드에 매핑됩니다. |
device |
principal.asset.product_object_id |
원시 로그의 device 값이 principal.asset.product_object_id 필드에 매핑됩니다. |
digestPublicKeyFingerprint |
target.file.sha1 |
원시 로그의 digestPublicKeyFingerprint 값이 target.file.sha1 필드에 매핑됩니다. |
digestS3Bucket |
principal.resource.name |
원시 로그의 digestS3Bucket 값이 principal.resource.name 필드에 매핑됩니다. |
digestS3Object |
principal.asset.asset_id |
원시 로그의 digestS3Object 값 앞에 'S3 객체: '가 추가되고 principal.asset.asset_id 필드에 매핑됩니다. |
digestSignatureAlgorithm |
network.tls.cipher |
원시 로그의 digestSignatureAlgorithm 값이 network.tls.cipher 필드에 매핑됩니다. |
digestStartTime |
metadata.event_timestamp |
원시 로그의 digestStartTime 값이 타임스탬프로 변환되고 metadata.event_timestamp 필드에 매핑됩니다. |
dimensions.VolumeId |
additional.fields |
원시 로그의 dimensions.VolumeId 값이 'VolumeId' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
duration |
additional.fields |
원시 로그의 duration 값이 additional.fields 에 'duration' 키와 함께 키-값 쌍으로 추가됩니다. |
errorCode |
security_result.rule_name |
원시 로그의 errorCode 값이 security_result.rule_name 필드에 매핑됩니다. |
errorMessage |
security_result.summary |
원시 로그의 errorMessage 값이 security_result.summary 필드에 매핑됩니다. |
executionId |
principal.process.pid |
원시 로그의 executionId 값이 principal.process.pid 필드에 매핑됩니다. |
host |
principal.hostname , principal.ip |
하이픈이 점으로 대체된 원시 로그의 host 값은 IP 주소로 파싱되고 성공하면 principal.ip 필드에 매핑됩니다. 그렇지 않으면 principal.hostname 필드에 매핑됩니다. |
http_verb |
network.http.method |
원시 로그의 http_verb 값이 대문자로 변환되고 network.http.method 필드에 매핑됩니다. |
kubernetes.container_hash |
additional.fields |
원시 로그의 kubernetes.container_hash 값이 'container_hash' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
kubernetes.container_image |
additional.fields |
원시 로그의 kubernetes.container_image 값이 'container_image' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
kubernetes.container_name |
additional.fields |
원시 로그의 kubernetes.container_name 값이 'container_name' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
kubernetes.docker_id |
principal.asset_id |
원시 로그의 kubernetes.docker_id 값 앞에 'id: '가 추가되고 principal.asset_id 필드에 매핑됩니다. |
kubernetes.host |
principal.hostname , principal.ip |
하이픈이 점으로 대체된 원시 로그의 kubernetes.host 값은 IP 주소로 파싱되고 성공하면 principal.ip 필드에 매핑됩니다. 그렇지 않으면 principal.hostname 필드에 매핑됩니다. |
kubernetes.namespace |
principal.namespace |
원시 로그의 kubernetes.namespace 값이 principal.namespace 필드에 매핑됩니다. |
kubernetes.namespace_name |
principal.namespace |
원시 로그의 kubernetes.namespace_name 값이 principal.namespace 필드에 매핑됩니다. |
kubernetes.pod_id |
principal.asset.asset_id |
원시 로그의 kubernetes.pod_id 값 앞에 'pod_id: '가 추가되고 principal.asset.asset_id 필드에 매핑됩니다. |
kubernetes.pod_name |
additional.fields |
원시 로그의 kubernetes.pod_name 값이 'pod name' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
lambdaArn |
principal.hostname |
원시 로그의 lambdaArn 값이 principal.hostname 필드에 매핑됩니다. |
level |
security_result.severity |
원시 로그의 level 값에 따라 security_result.severity 값이 결정됩니다. level 이 'Info'인 경우 값은 'INFORMATIONAL'입니다. level 가 'Error'인 경우 값은 'ERROR'입니다. level 이 '경고'인 경우 값은 '중간'입니다. |
log |
metadata.description |
원시 로그의 log 값은 descr 가 비어 있으면 metadata.description 필드에 매핑됩니다. |
logFiles |
about |
원시 로그의 logFiles 배열에 있는 각 요소의 경우 file.full_path 이 s3Object 로, asset.hostname 이 s3Bucket 로, file.sha256 이 hashValue 로 설정된 about 객체가 생성됩니다. |
log_processed.cause |
security_result.summary |
원시 로그의 log_processed.cause 값이 security_result.summary 필드에 매핑됩니다. |
log_processed.ids |
intermediary.hostname |
원시 로그의 log_processed.ids 배열에 있는 각 요소의 경우 hostname 이 요소의 값으로 설정된 intermediary 객체가 생성됩니다. |
log_processed.level |
security_result.severity |
원시 로그의 log_processed.level 값이 security_result.severity 필드에 매핑됩니다. |
log_processed.msg |
metadata.description |
원시 로그의 log_processed.msg 값이 metadata.description 필드에 매핑됩니다. |
log_processed.ts |
metadata.event_timestamp |
원시 로그의 log_processed.ts 값이 타임스탬프로 변환되고 metadata.event_timestamp 필드에 매핑됩니다. |
log_type |
metadata.log_type |
원시 로그의 log_type 값이 metadata.log_type 필드에 매핑됩니다. 컨텍스트를 위해 추가된 맞춤 입력란입니다. |
logevent.message |
security_result.description |
원시 로그의 logevent.message 값이 security_result.description 필드에 매핑됩니다. 또한 grok를 사용하여 파싱하여 추가 필드를 추출합니다. |
logGroup |
security_result.about.resource.name |
원시 로그의 logGroup 값이 security_result.about.resource.name 필드에 매핑됩니다. |
logStream |
security_result.about.resource.attribute.labels |
원시 로그의 logStream 값이 'logStream' 키를 사용하여 security_result.about.resource.attribute.labels 에 키-값 쌍으로 추가됩니다. |
memory_used |
additional.fields |
원시 로그의 memory_used 값이 additional.fields 에 'memory_used' 키와 함께 키-값 쌍으로 추가됩니다. |
metric_name |
additional.fields |
원시 로그의 metric_name 값이 additional.fields 에 키-값 쌍으로 추가되며 키는 'metric_name'입니다. |
metric_stream_name |
additional.fields |
원시 로그의 metric_stream_name 값이 'metric_stream_name' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
namespace |
principal.namespace |
원시 로그의 namespace 값이 principal.namespace 필드에 매핑됩니다. |
owner |
principal.user.userid |
원시 로그의 owner 값이 principal.user.userid 필드에 매핑됩니다. |
parameters |
additional.fields |
원시 로그의 parameters 값이 'Parameters' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
Path |
principal.process.file.full_path |
원시 로그의 Path 값이 principal.process.file.full_path 필드에 매핑됩니다. |
pid |
principal.process.pid |
원시 로그의 pid 값이 principal.process.pid 필드에 매핑됩니다. |
PolicyName |
security_result.rule_name |
원시 로그의 PolicyName 값이 security_result.rule_name 필드에 매핑됩니다. |
prin_host |
principal.hostname |
원시 로그의 prin_host 값이 principal.hostname 필드에 매핑됩니다. |
principal_hostname |
principal.hostname |
원시 로그의 principal_hostname 값이 principal.hostname 필드에 매핑됩니다. |
process |
principal.application |
원시 로그의 process 값이 principal.application 필드에 매핑됩니다. |
rawData |
additional.fields |
원시 로그의 rawData 값이 '원시 데이터' 키와 함께 additional.fields 에 키-값 쌍으로 추가됩니다. |
Recommendation |
security_result.detection_fields |
원시 로그의 Recommendation 값이 'Recommendation' 키를 사용하여 security_result.detection_fields 에 키-값 쌍으로 추가됩니다. |
referral_url |
network.http.referral_url |
원시 로그의 referral_url 값이 network.http.referral_url 필드에 매핑됩니다. |
region |
principal.location.name |
원시 로그의 region 값이 principal.location.name 필드에 매핑됩니다. |
resp_code |
network.http.response_code |
원시 로그의 resp_code 값이 정수로 변환되고 network.http.response_code 필드에 매핑됩니다. |
resource_url |
network.http.referral_url |
원시 로그의 resource_url 값이 network.http.referral_url 필드에 매핑됩니다. |
ResourceType |
target.resource.resource_subtype |
원시 로그의 ResourceType 값이 target.resource.resource_subtype 필드에 매핑됩니다. |
response_body |
additional.fields |
원시 로그의 response_body 값이 'Response body' 키와 함께 키-값 쌍으로 additional.fields 에 추가됩니다. |
Role |
target.resource.product_object_id |
원시 로그의 Role 값이 target.resource.product_object_id 필드에 매핑됩니다. |
s3_bucket_path |
target.file.full_path |
원시 로그의 s3_bucket_path 값이 target.file.full_path 필드에 매핑됩니다. |
sec_result.category |
security_result.category |
sec_result.category 값은 파서 로직에서 가져옵니다. descr 에 '인증 필요'가 포함된 경우 값은 'AUTH_VIOLATION'입니다. |
sec_result.description |
security_result.description |
sec_result.description 값은 파서 로직에서 가져옵니다. 값이 있는 경우 cloudwatchLog 값으로 설정됩니다. |
sec_result.severity |
security_result.severity |
sec_result.severity 값은 파서 로직에서 가져옵니다. severity 또는 level 의 값에 따라 설정됩니다. |
sec_result.summary |
security_result.summary |
sec_result.summary 값은 파서 로직에서 가져옵니다. 값이 있는 경우 log_processed.cause 또는 errorMessage 값으로 설정됩니다. |
security_result |
security_result |
security_result 객체는 다양한 필드와 파서 로직으로 구성됩니다. |
serverId |
additional.fields |
원시 로그의 serverId 값이 additional.fields 에 'server_id' 키와 함께 키-값 쌍으로 추가됩니다. |
severity |
security_result.severity |
원시 로그의 severity 값이 대문자로 변환되고 정규화된 후 security_result.severity 필드에 매핑됩니다. |
Source |
principal.hostname |
원시 로그의 Source 값이 principal.hostname 필드에 매핑됩니다. |
source |
principal.hostname |
원시 로그의 source 값이 principal.hostname 필드에 매핑됩니다. |
SourceIP |
principal.ip |
원시 로그의 SourceIP 값이 principal.ip 필드에 매핑됩니다. |
src_port |
principal.port |
src_port 이 '80'인 경우 정수로 변환되어 principal.port 필드에 매핑되고 network.application_protocol 은 'HTTP'로 설정됩니다. |
stream |
additional.fields |
원시 로그의 stream 값이 'stream' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
subscriptionFilters |
security_result.about.resource.attribute.labels |
원시 로그의 subscriptionFilters 배열에 있는 각 요소에 대해 키-값 쌍이 security_result.about.resource.attribute.labels 에 추가되며 키는 'subscriptionFilter'이고 배열의 값입니다. |
support_contact |
target.resource.attribute.labels |
원시 로그의 support_contact 값이 'Support Contact' 키를 사용하여 target.resource.attribute.labels 에 키-값 쌍으로 추가됩니다. |
t_ip |
target.ip |
하이픈을 삭제한 후 원시 로그의 t_ip 값은 IP 주소로 파싱되고 성공하면 target.ip 필드에 매핑됩니다. |
time |
metadata.event_timestamp |
원시 로그의 time 값이 타임스탬프로 변환되고 metadata.event_timestamp 필드에 매핑됩니다. |
timestamp |
metadata.event_timestamp |
원시 로그의 timestamp 값은 다양한 형식을 사용하여 타임스탬프로 변환되고 metadata.event_timestamp 필드에 매핑됩니다. |
tls |
network.tls.version |
원시 로그의 tls 값이 network.tls.version 필드에 매핑됩니다. |
transferDetails.serverId |
additional.fields |
원시 로그의 transferDetails.serverId 값이 additional.fields 에 'server_id' 키와 함께 키-값 쌍으로 추가됩니다. |
transferDetails.sessionId |
network.session_id |
원시 로그의 transferDetails.sessionId 값이 network.session_id 필드에 매핑됩니다. |
transferDetails.username |
principal.user.user_display_name |
원시 로그의 transferDetails.username 값이 principal.user.user_display_name 필드에 매핑됩니다. |
ts |
metadata.event_timestamp |
원시 로그의 ts 값과 가능한 경우 시간대를 결합하여 타임스탬프로 변환하고 metadata.event_timestamp 필드에 매핑합니다. |
type |
metadata.product_event_type |
원시 로그의 type 값이 metadata.product_event_type 필드에 매핑됩니다. |
unit |
additional.fields |
원시 로그의 unit 값이 'unit' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
url |
target.url |
원시 로그의 url 값이 target.url 필드에 매핑됩니다. |
url_back_to_product |
metadata.url_back_to_product |
원시 로그의 url_back_to_product 값이 metadata.url_back_to_product 필드에 매핑됩니다. |
User |
principal.user.userid |
원시 로그의 User 값이 principal.user.userid 필드에 매핑됩니다. |
user |
target.user.userid , metadata.event_type , extensions.auth.mechanism |
user 가 있으면 metadata.event_type 가 'USER_LOGIN'으로 설정되고 extensions.auth.mechanism 가 'NETWORK'로 설정되며 user 값이 target.user.userid 에 매핑됩니다. |
value.count |
additional.fields |
원시 로그의 value.count 값이 문자열로 변환되고 'count' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
value.max |
additional.fields |
원시 로그의 value.max 값이 문자열로 변환되고 'max' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
value.min |
additional.fields |
원시 로그의 value.min 값이 문자열로 변환되고 'min' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
value.sum |
additional.fields |
원시 로그의 value.sum 값이 문자열로 변환되고 'sum' 키를 사용하여 additional.fields 에 키-값 쌍으로 추가됩니다. |
workflowId |
additional.fields |
원시 로그의 workflowId 값이 additional.fields 에 'workflowId' 키와 함께 키-값 쌍으로 추가됩니다. |
변경사항
2024-02-12
- 개선사항:
- 타임스탬프를 UNIX_MS에 매핑했습니다.
2023-09-02
- 개선사항:
- 키-값 형식 로그를 파싱하는 'kv 블록'을 추가했습니다.
- 'SourceIP'가 'principal.ip'에 매핑되었습니다.
- 'prin_host'가 'principal.hostname'에 매핑되었습니다.
- '사용자'가 'principal.user.userid'에 매핑되었습니다.
- 'Ciphers'가 'network.tls.client.supported_ciphers'에 매핑되었습니다.
- 'executionId'가 'principal.process.pid'에 매핑되었습니다.
- 'transferDetails.sessionId'가 'network.session_id'에 매핑되었습니다.
- 'transferDetails.username'이 'principal.user.user_display_name'에 매핑되었습니다.
- 'transferDetails.serverId', 'workflowId', 'details.input.initialFileLocation.etag', 'details.input.initialFileLocation.backingStore', 'details.input.initialFileLocation.bucket', 'details.input.initialFileLocation.key',
- 'Mode', 'Kex'를 'additional.fields'에 매핑했습니다.
- 'BytesIn'이 'network.received_bytes'에 매핑되었습니다.
- 'Role'이 'target.resource.product_object_id'에 매핑되었습니다.
2023-08-18
- 개선사항:
- 파싱되지 않은 원시 로그를 파싱하는 Grok 패턴을 추가했습니다.
2023-07-07
- 개선사항:
- 'logEvents' 관련 JSON 로그에 대한 지원이 추가되었습니다.
2022-12-17
- 'CloudType'이 'target.resource.attribute.cloud.environment'에 매핑되었습니다.
- 'AlertId'가 'metadata.product_log_id'에 매핑되었습니다.
- 'ResourceType'이 'target.resource.resource_subtype'에 매핑되었습니다.
- 'ResourceRegion'이 'target.location.country_or_region'에 매핑되었습니다.
- 'Recommendation'이 'security_result.detection_fields'에 매핑되었습니다.
- 'PolicyName','detail.additionalEventData.configRuleName'이 'security_result.rule_name'에 매핑되었습니다.
- 'detail-type'이 'metadata.product_event_type'에 매핑되었습니다.
- 'region','detail.awsRegion'이 'principal.location.name'에 매핑되었습니다.
- 'detail.eventSource'가 'target.application'에 매핑되었습니다.
- 'detail.requestID'가 'target.resource.attribute.labels'에 매핑되었습니다.
- 'detail.userAgent'가 'network.http.user_agent'에 매핑되었습니다.
- 'detail.eventVersion'이 'metadata.product_version'에 매핑되었습니다.
- 'detail.userIdentity.accountId'가 'metadata.product_deployment_id'에 매핑되었습니다.
- 'detail.userIdentity.accessKeyId'가 'target.user.userid'에 매핑되었습니다.
- 'detail.userIdentity.type'이 'principal.resource.type'에 매핑되었습니다.
- 'detail.userIdentity.principalId'가 'principal.user.product_object_id'에 매핑되었습니다.
- 'detail.user.arn'이 'target.user.userid'에 매핑되었습니다.
- 'detail.user.sessionContext.sessionIssuer.userName'이 'target.user.user_display_name'에 매핑되었습니다.
- 'detail.user.mfaAuthenticated'가 'principal.user.attribute.labels'에 매핑되었습니다.
- 'detail.recipientAccountId'가 'target.resource.attribute.labels'에 매핑되었습니다.
- 'detail.managementEvent', 'detail.eventType', 'detail.readOnly', 'detail.eventName', 'detail.additionalEventData.notificationJobType', 'detail.additionalEventData.managedRuleIdentifier', 'duration', 'billed_duration', 'memory_used'가 'additional.fields'에 매핑되었습니다.
- 'detail.eventCategory'가 'security_result.category_details'에 매핑되었습니다.
- 'detail.eventID'가 'metadata.product_log_id'에 매핑되었습니다.
- 'detail.additionalEventData.configRuleArn'이 'security_result.rule_id'에 매핑되었습니다.
- 'level'이 'security_result.severity'에 매핑되었습니다.
- 'src_port'가 'principal.port'에 매핑되었습니다.
- 'request_id'가 'target.resource.attribute.labels'에 매핑되었습니다.
- 'url'이 'target.url'에 매핑되었습니다.
2022-09-03
- 개선사항:
- 새로 처리된 로그를 파싱하는 grok를 추가했습니다.
- 'package'가 'event.idm.read_only_udm.principal.process.command_line'에 매핑되었습니다.
- 'session_id'가 'event.idm.read_only_udm.network.session_id'에 매핑되었습니다.
- 'network_dir'이 'event.idm.read_only_udm.network.direction'에 매핑되었습니다.
- 'port'가 'event.idm.read_only_udm.target.port'에 매핑되었습니다.
- 'digestPublicKeyFingerprint'를 'additional.fields'에서 'event.idm.read_only_udm.target.file.sha1'로 다시 매핑했습니다.
- 심각도 매핑을 위해 'AUDIT', 'TRACE', 'DEBUG', 'NOTICE', 'ERROR'와 같은 다른 로그 수준을 추가했습니다.
- 'target.ip'의 값을 'principal.ip'에 중복하여 event_type을 'STATUS_UPDATE'로 설정하여 일반 비율을 줄였습니다.
- 일반 비율을 줄이기 위해 'event_type' 'USER_UNCATEGORIZED', 'NETWORK_HTTP', 'NETWORK_CONNECTION', 'STATUS_UPADTE'에 대한 조건을 추가했습니다.
2022-08-11
- 버그 수정 - 'digestS3Bucket'을 'principal.resource.name'으로 다시 매핑했습니다.
- 'kubernetes.pod_name'을 'additional.fields'로 다시 매핑했습니다.
2022-05-27
- 개선사항:
- metadata.product_name에 저장된 값을 'AWS CloudWatch'로, metadata.vendor_name을 'AMAZON'으로 수정했습니다.
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가의 답변을 받으세요.