AWS Inspector 로그 수집
파서 버전: 1.0
이 문서에서는 Amazon S3를 사용하여 AWS Inspector 로그를 Google Security Operations로 수집하는 방법을 설명합니다.
Amazon Inspector는 워크로드를 자동으로 검색하고 소프트웨어 취약점과 의도하지 않은 네트워크 노출을 지속적으로 검사하는 취약점 관리 서비스입니다. Amazon EC2 인스턴스, Amazon ECR의 컨테이너 이미지, AWS Lambda 함수를 스캔하여 심각도 점수와 해결 권장사항이 포함된 상세한 발견 항목을 생성합니다. 이 통합은 Amazon Inspector의 기본 제공 발견 항목 내보내기 기능을 사용하여 JSON 형식의 발견 항목 보고서를 S3 버킷에 전송하고, Google SecOps는 Amazon S3 V2 피드를 사용하여 이를 수집합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- 다음을 관리할 수 있는 권한이 있는 AWS Management Console에 대한 액세스 권한:
- Amazon Inspector (결과, 보고서)
- Amazon S3 (버킷, 버킷 정책)
- AWS KMS (키 정책)
- AWS IAM (역할, 정책, 사용자)
Amazon Inspector 결과 내보내기를 위한 S3 버킷 구성
Amazon Inspector는 발견 항목 보고서를 S3 버킷에 저장하기 전에 AWS KMS 키로 암호화합니다. Amazon Inspector 액세스를 허용하도록 S3 버킷 정책과 KMS 키 정책을 모두 구성해야 합니다.
S3 버킷 만들기 및 구성
- 이 사용자 가이드(버킷 만들기)에 따라 Amazon S3 버킷을 만듭니다.
나중에 참조할 수 있도록 버킷 이름과 리전을 저장합니다 (예:
inspector-findings-to-secops).https://console.aws.amazon.com/s3의 Amazon S3 콘솔에서 생성된 버킷을 선택합니다.
권한 탭을 선택합니다.
버킷 정책 섹션에서 수정을 클릭합니다.
버킷 정책에 다음 문을 추가합니다 (
inspector-findings-to-secops를 버킷 이름으로,111122223333를 AWS 계정 ID로,us-east-1를 AWS 리전으로 대체).{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-inspector", "Effect": "Allow", "Principal": { "Service": "inspector2.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::inspector-findings-to-secops/*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:inspector2:us-east-1:111122223333:report/*" } } } ] }변경사항 저장을 클릭합니다.
AWS KMS 키 구성
Amazon Inspector에서 발견 항목 보고서를 암호화하려면 S3 버킷과 동일한 리전에 고객 관리형 대칭 암호화 AWS KMS 키가 필요합니다.
- https://console.aws.amazon.com/kms에서 AWS KMS 콘솔을 엽니다.
- 탐색 창에서 고객 관리 키를 선택합니다.
- 사용할 KMS 키를 선택하거나 새 대칭 암호화 키를 만듭니다.
- 키 정책 탭을 선택하고 수정을 클릭합니다.
키 정책에 다음 문을 추가합니다 (
111122223333를 AWS 계정 ID로,us-east-1를 AWS 리전으로 바꿈).{ "Sid": "Allow Amazon Inspector to use the key", "Effect": "Allow", "Principal": { "Service": "inspector2.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:inspector2:us-east-1:111122223333:report/*" } } }변경사항 저장을 클릭합니다.
Amazon Inspector 결과를 S3로 내보내기
- https://console.aws.amazon.com/inspector/v2/home에서 Amazon Inspector 콘솔에 로그인합니다.
- 탐색 창에서 결과 > 모든 결과로 이동합니다.
선택사항: 발견 항목 표 위의 필터 표시줄을 사용하여 보고서에 포함할 발견 항목을 지정합니다.
발견 항목 내보내기를 클릭합니다.
내보내기 설정 섹션의 내보내기 파일 형식에서 JSON을 선택합니다.
내보내기 위치의 S3 URI에서 S3 찾아보기를 클릭하고 S3 버킷
inspector-findings-to-secops를 선택합니다.KMS 키에서 구성한 AWS KMS 키를 선택합니다.
내보내기를 클릭합니다.
AWS CLI를 사용하여 발견 사항 내보내기 자동화
발견 항목 보고서를 정기적으로 내보내려면 AWS CLI create-findings-report 명령어를 사용합니다. Amazon EventBridge Scheduler 또는 크론 작업을 사용하여 이 명령어를 예약할 수 있습니다.
명령어 예시:
aws inspector2 create-findings-report \ --report-format JSON \ --s3-destination bucketName=inspector-findings-to-secops,keyPrefix=findings/,kmsKeyArn=arn:aws:kms:us-east-1:111122223333:key/your-kms-key-id
자세한 내용은 create-findings-report AWS CLI 참조를 확인하세요.
Google SecOps용 IAM 사용자 구성
Google SecOps는 내보낸 결과를 수집하기 위해 S3 버킷에 대한 읽기 액세스 권한이 있는 IAM 사용자가 필요합니다.
- 이 사용자 가이드(IAM 사용자 만들기)에 따라 사용자를 만듭니다.
- 생성된 사용자를 선택합니다.
- 보안용 사용자 인증 정보 탭을 선택합니다.
- 액세스 키 섹션에서 액세스 키 만들기를 클릭합니다.
- 사용 사례로 서드 파티 서비스를 선택합니다.
- 다음을 클릭합니다.
- 선택사항: 설명 태그를 추가합니다.
- 액세스 키 만들기를 클릭합니다.
- .csv 파일 다운로드를 클릭하여 나중에 참고할 수 있도록 액세스 키와 보안 비밀 액세스 키를 저장합니다.
- 완료를 클릭합니다.
- 권한 탭을 선택합니다.
- 권한 정책 섹션에서 권한 추가를 클릭합니다.
- 권한 추가를 선택합니다.
- 정책을 직접 연결을 선택합니다.
- AmazonS3FullAccess 정책을 검색합니다.
- 정책을 선택합니다.
- 다음을 클릭합니다.
- 권한 추가를 클릭합니다.
AWS Inspector 로그를 수집하도록 Google SecOps에서 피드 구성
- SIEM 설정 > 피드로 이동합니다.
- 새 피드 추가를 클릭합니다.
- 다음 페이지에서 단일 피드 구성을 클릭합니다.
- 피드 이름에 고유한 이름을 입력합니다.
- 소스 유형으로 Amazon S3 V2를 선택합니다.
- 로그 유형으로 AWS Inspector를 선택합니다.
- 다음을 클릭한 후 제출을 클릭합니다.
다음 필드의 값을 지정합니다.
- S3 URI:
s3://inspector-findings-to-secops/findings/ - 소스 삭제 옵션: 환경설정에 따라 삭제 옵션을 선택합니다.
- 최대 파일 기간: 지난 일수 동안 수정된 파일을 포함합니다 (기본값은 180일).
- 액세스 키 ID: S3 버킷에 대한 액세스 권한이 있는 사용자 액세스 키
- 보안 비밀 액세스 키: S3 버킷에 액세스할 수 있는 사용자 보안 비밀 키
- 애셋 네임스페이스: 애셋 네임스페이스
- 수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.
- S3 URI:
다음을 클릭한 후 제출을 클릭합니다.
UDM 매핑 테이블
| 로그 필드 | UDM 매핑 | 로직 |
|---|---|---|
duration_ms_label |
additional.fields |
병합됨 |
evnt_app_class_label |
additional.fields |
병합됨 |
evnt_cloud_application_class_label |
additional.fields |
병합됨 |
evnt_cloud_sandbox_md5_label |
additional.fields |
병합됨 |
evnt_cloudapp_rule_label |
additional.fields |
병합됨 |
evnt_content_type_label |
additional.fields |
병합됨 |
evnt_customer_label |
additional.fields |
병합됨 |
evnt_department_label |
additional.fields |
병합됨 |
evnt_location_label |
additional.fields |
병합됨 |
evnt_lpclagg_label |
additional.fields |
병합됨 |
evnt_lpcltype_label |
additional.fields |
병합됨 |
evnt_network_service_label |
additional.fields |
병합됨 |
evnt_tenant_label |
additional.fields |
병합됨 |
evnt_url_category_label |
additional.fields |
병합됨 |
exception_label |
additional.fields |
병합됨 |
function_label |
additional.fields |
병합됨 |
id_label |
additional.fields |
병합됨 |
level_no_label |
additional.fields |
병합됨 |
line_label |
additional.fields |
병합됨 |
location_label |
additional.fields |
병합됨 |
logger_field |
additional.fields |
병합됨 |
msg_location_label |
additional.fields |
병합됨 |
msg_record_functionName_label |
additional.fields |
병합됨 |
msg_record_functionVersion_label |
additional.fields |
병합됨 |
msg_record_initializationType_label |
additional.fields |
병합됨 |
msg_record_instancId_label |
additional.fields |
병합됨 |
msg_record_instanceMaxMemory_label |
additional.fields |
병합됨 |
msg_record_phase_label |
additional.fields |
병합됨 |
msg_service_label |
additional.fields |
병합됨 |
msg_type_label |
additional.fields |
병합됨 |
msg_xray_trace_id_label |
additional.fields |
병합됨 |
protocol_label |
additional.fields |
병합됨 |
record_version_label |
additional.fields |
병합됨 |
repr_label |
additional.fields |
병합됨 |
service_label |
additional.fields |
병합됨 |
sourcetype_label |
additional.fields |
병합됨 |
thread_name_label |
additional.fields |
병합됨 |
type_label |
additional.fields |
병합됨 |
xray_trace_id_label |
additional.fields |
병합됨 |
evnt_device_hostname |
intermediary.hostname |
직접 매핑됨 |
evnt_fwd_method_label |
intermediary.resource.attribute.labels |
병합됨 |
desc_msg |
metadata.description |
직접 매핑됨 |
message |
metadata.description |
직접 매핑됨 |
msg |
metadata.description |
직접 매핑됨 |
msg_desc_msg |
metadata.description |
직접 매핑됨 |
msg_record_desc_msg |
metadata.description |
직접 매핑됨 |
msg_text |
metadata.description |
직접 매핑됨 |
msg.time |
metadata.event_timestamp |
ISO8601(으)로 파싱됨 |
repr_time |
metadata.event_timestamp |
ISO8601로 파싱됨 |
timestamp |
metadata.event_timestamp |
ISO8601로 파싱됨 |
has_host |
metadata.event_type |
매핑됨: true → STATUS_UPDATE |
has_user |
metadata.event_type |
매핑됨: true → USER_COMMUNICATION, true → USER_UNCATEGORIZED |
msg_record_module |
metadata.product_event_type |
직접 매핑됨 |
id_1 |
metadata.product_log_id |
직접 매핑됨 |
evnt_bytes_in |
network.received_bytes |
직접 매핑됨 |
evnt_bytes_out |
network.sent_bytes |
직접 매핑됨 |
evnt_app_name |
principal.application |
직접 매핑됨 |
msg_record_process_name |
principal.application |
직접 매핑됨 |
evnt_device_app_version_label |
principal.asset.attribute.labels |
병합됨 |
evnt_ssl_policy_label |
principal.asset.attribute.labels |
병합됨 |
evnt_server_ip |
principal.asset.ip |
병합됨 |
evnt_src_ip |
principal.asset.ip |
병합됨 |
evnt_src_translated_ip |
principal.asset.ip |
병합됨 |
msg_record_file_path |
principal.file.full_path |
직접 매핑됨 |
msg_record_file_name |
principal.file.names |
병합됨 |
evnt_hostname |
principal.hostname |
직접 매핑됨 |
host |
principal.hostname |
직접 매핑됨 |
evnt_server_ip |
principal.ip |
병합됨 |
evnt_src_ip |
principal.ip |
병합됨 |
evnt_src_translated_ip |
principal.ip |
병합됨 |
evnt_os |
principal.platform |
매핑됨: Windows → WINDOWS, Linux → LINUX |
evnt_src_port |
principal.port |
직접 매핑됨 |
port_number |
principal.port |
직접 매핑됨 |
msg_record_process_id |
principal.process.pid |
직접 매핑됨 |
cmd_status_label |
principal.resource.attribute.labels |
병합됨 |
evnt_format_label |
principal.resource.attribute.labels |
병합됨 |
evnt_os_label |
principal.resource.attribute.labels |
병합됨 |
msg_record_runtimeVersionArn_label |
principal.resource.attribute.labels |
병합됨 |
msg_record_runtimeVersion_label |
principal.resource.attribute.labels |
병합됨 |
record_requestId_labels |
principal.resource.attribute.labels |
병합됨 |
requestId_labels |
principal.resource.attribute.labels |
병합됨 |
msg_record_name |
principal.resource.name |
직접 매핑됨 |
id |
principal.resource.product_object_id |
직접 매핑됨 |
evnt_url |
principal.url |
직접 매핑됨 |
evnt_device_owner |
principal.user.user_display_name |
직접 매핑됨 |
evnt_user |
principal.user.userid |
직접 매핑됨 |
msg_extra_desc_msg_body_account_id |
principal.user.userid |
직접 매핑됨 |
evnt_action |
security_result.action |
매핑됨: allow → security_result_action |
security_result_action |
security_result.action |
병합됨 |
security_result_category_details |
security_result.category_details |
병합됨 |
security_result_url_super_category |
security_result.category_details |
병합됨 |
elapsed_time_label |
security_result.detection_fields |
병합됨 |
evnt_session_count_label |
security_result.detection_fields |
병합됨 |
evnt_ssl_decrypted_label |
security_result.detection_fields |
병합됨 |
evnt_url_class_label |
security_result.detection_fields |
병합됨 |
level_icon_label |
security_result.detection_fields |
병합됨 |
level |
security_result.severity |
매핑됨: INFO → INFORMATIONAL, WARNING → MEDIUM |
msg_level |
security_result.severity |
매핑됨: INFO → INFORMATIONAL, WARNING → MEDIUM |
evnt_dest_ip |
target.ip |
병합됨 |
evnt_dest_country |
target.location.country_or_region |
직접 매핑됨 |
evnt_dest_port |
target.port |
직접 매핑됨 |
dst_url |
target.url |
직접 매핑됨 |
| 해당 사항 없음 | metadata.event_type |
상수: USER_COMMUNICATION |
| 해당 사항 없음 | metadata.product_name |
상수: AWS Inspector |
| 해당 사항 없음 | metadata.vendor_name |
상수: AWS Inspector |
| 해당 사항 없음 | network.ip_protocol |
상수: UDP |
| 해당 사항 없음 | principal.platform |
상수: WINDOWS |
| 해당 사항 없음 | security_result.detection_fields |
상수: client_tunnel_ip_label |
| 해당 사항 없음 | security_result.severity |
상수: INFORMATIONAL |
변경 로그
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.