AWS S3 서버 액세스 로그 수집

다음에서 지원:

이 문서에서는 Google Security Operations 피드를 설정하여 AWS S3 서버 액세스 로그를 수집하는 방법을 설명합니다. 파서는 grok 패턴을 사용하여 필드를 추출하고, 잠재적인 JSON 입력을 처리하고, 추출된 필드를 UDM에 매핑합니다. 정확한 UDM 표현을 보장하기 위해 특정 필드의 존재 및 값을 기반으로 데이터 변환, 유형 변환, 조건부 로직을 실행합니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • AWS에 대한 액세스 권한

AWS S3 서버 액세스 로깅을 구성하는 방법

Google SecOps는 Amazon SQS를 통한 Amazon S3를 사용한 로그 수집을 지원합니다.

  1. AWS 관리 콘솔에 로그인합니다.
  2. Amazon S3 콘솔에 액세스합니다.
  3. Amazon S3 > 버킷으로 이동합니다.
  4. 기존 버킷을 선택하거나 새 버킷을 만듭니다.
  5. 속성을 클릭합니다.
  6. 서버 액세스 로깅 섹션에서 수정을 클릭합니다.
  7. 사용 설정을 선택합니다.
  8. 타겟 버킷 필드에 로그 레코드 객체를 전송할 새 버킷의 이름을 입력하거나 기존 버킷을 타겟으로 선택합니다.
  1. 변경사항 저장을 클릭합니다.
  2. S3 버킷의 SQS 큐를 만들려면 S3 스토리지를 사용하여 Amazon SQS 인스턴스를 구성합니다. 자세한 내용은 알림용 버킷 구성 (SNS 주제 또는 SQS 대기열)을 참고하세요.

서비스 및 지역에 따라 다음 AWS 문서를 참조하여 연결 엔드포인트를 식별합니다.

피드 설정

Google SecOps 플랫폼에서 피드를 설정하는 방법은 두 가지입니다.

  • SIEM 설정 > 피드 > 새로 추가
  • 콘텐츠 허브 > 콘텐츠 팩 > 시작하기

AWS S3 서비스 액세스 피드를 설정하는 방법

  1. Amazon Cloud Platform 팩을 클릭합니다.
  2. AWS S3 서비스 액세스 로그 유형을 찾습니다.
  3. Google SecOps는 액세스 키 ID 및 보안 비밀 메서드를 사용한 로그 수집을 지원합니다. 액세스 키 ID와 보안 비밀을 만드는 방법은 AWS로 도구 인증 구성을 참고하세요.
  4. 다음 필드에 값을 지정합니다.

    • 소스 유형: Amazon SQS V2
    • Queue Name: 읽어올 SQS 큐 이름
    • S3 URI: 버킷 URI입니다.
      • s3://your-log-bucket-name/
        • your-log-bucket-name을 실제 S3 버킷 이름으로 바꿉니다.
    • 소스 삭제 옵션: 수집 환경설정에 따라 삭제 옵션을 선택합니다.

    • 최대 파일 기간: 지난 일수 동안 수정된 파일을 포함합니다. 기본값은 180일입니다.

    • SQS 대기열 액세스 키 ID: 20자리 영숫자 문자열인 계정 액세스 키입니다.

    • SQS 대기열 보안 비밀 액세스 키: 40자로 된 영숫자 문자열인 계정 액세스 키입니다.

    고급 옵션

    • 피드 이름: 피드를 식별하는 미리 채워진 값입니다.
    • 애셋 네임스페이스: 피드와 연결된 네임스페이스입니다.
    • 수집 라벨: 이 피드의 모든 이벤트에 적용되는 라벨입니다.
  5. 피드 만들기를 클릭합니다.

이 제품군 내에서 다양한 로그 유형에 대해 여러 피드를 구성하는 방법에 관한 자세한 내용은 제품별 피드 구성을 참고하세요.

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
aclRequired target.resource.attribute.labels.key: 'aclRequired'
target.resource.attribute.labels.value: aclRequired
원시 로그 필드 aclRequired에서 직접 매핑됩니다.
authenticationtype extensions.auth.auth_details 원시 로그 필드 authenticationtype에서 직접 매핑됩니다.
bucket target.resource.name 원시 로그 필드 bucket에서 직접 매핑됩니다.
bucket target.resource.resource_type: 'STORAGE_BUCKET' 파서는 bucket 필드가 있는 경우 resource_type을 'STORAGE_BUCKET'으로 설정합니다.
bucketowner target.resource.product_object_id 원시 로그 필드 bucketowner에서 직접 매핑됩니다.
bytes_sent network.sent_bytes 원시 로그 필드 bytes_sent에서 직접 매핑되며, 이를 부호 없는 정수로 변환하고 '-'를 '0'으로 대체합니다.
ciphersuite network.application_protocol: 'HTTPS' 파서는 ciphersuite 필드가 있으면 application_protocol을 'HTTPS'로 설정합니다.
ciphersuite network.tls.cipher 원시 로그 필드 ciphersuite에서 직접 매핑됩니다.
errorcode security_result.action_details 원시 로그 필드 errorcode에서 직접 매핑됩니다.
errorcode security_result.action: 'BLOCK' 파서는 errorcode 필드에 'AccessDenied' (대소문자 구분 안 함)가 포함된 경우 action을 'BLOCK'으로 설정합니다.
hostheader target.hostname 원시 로그 필드 hostheader에서 추출되었으며 포트 번호가 삭제되었을 수 있습니다.
hostheader target.port 포트 번호가 있는 경우 원시 로그 필드 hostheader에서 추출됩니다.
hostid target.resource.attribute.labels.key: 'S3 Extended Request ID'
target.resource.attribute.labels.value: hostid
원시 로그 필드 hostid에서 직접 매핑됩니다.
http_capture network.http.method HTTP 메서드는 http_capture 필드에서 추출됩니다.
http_capture network.http.version HTTP 버전은 http_capture 필드에서 추출됩니다.
http_capture target.url 타겟 URL은 hostheaderhttp_request_uri (http_capture에서 추출됨)를 사용하여 구성되며, ciphersuite의 존재 여부에 따라 'http://' 또는 'https://'가 접두사로 붙습니다.
httpstatus network.http.response_code 원시 로그 필드 httpstatus에서 정수로 변환된 후 직접 매핑됩니다.
object_version_id target.resource.product_object_id 원시 로그 필드 object_version_id에서 직접 매핑됩니다.
objectsize target.file.size 원시 로그 필드 objectsize에서 직접 매핑되며, 이를 부호 없는 정수로 변환하고 '-'를 '0'으로 대체합니다.
operation metadata.product_event_type 원시 로그 필드 operation에서 직접 매핑됩니다.
referrer network.http.referral_url 따옴표를 삭제한 후 원시 로그 필드 referrer에서 직접 매핑됩니다.
remoteip metadata.event_type: 'USER_RESOURCE_ACCESS' 파서는 remoteip 필드가 비어 있으면 event_type를 'USER_RESOURCE_ACCESS'로 설정합니다.
remoteip principal.ip 원시 로그 필드 remoteip에서 직접 매핑됩니다.
requester target.resource.attribute.labels.key: '액세스 포인트 ARN'
target.resource.attribute.labels.value: requester
원시 로그 필드 requester에서 직접 매핑됩니다.
requester_user principal.user.userid 원시 로그 필드 requester_user에서 직접 매핑됩니다.
requestid network.session_id 원시 로그 필드 requestid에서 직접 매핑됩니다.
request_time_ms network.session_duration.nanos 정수로 변환하고 '-'를 '0'으로 대체하고 나노초를 나타내기 위해 0으로 패딩한 후 원시 로그 필드 request_time_ms에서 직접 매핑됩니다.
signatureversion target.resource.attribute.labels.key: '서명 버전'
target.resource.attribute.labels.value: signatureversion
원시 로그 필드 signatureversion에서 직접 매핑됩니다.
time metadata.event_timestamp 원시 로그 필드 time에서 파싱되어 타임스탬프로 변환됩니다.
tlsVersion network.tls.version 원시 로그 필드 tlsVersion에서 직접 매핑됩니다.
useragent network.http.user_agent 따옴표를 삭제한 후 원시 로그 필드 useragent에서 직접 매핑됩니다.
(파서 로직) metadata.event_type: 'NETWORK_HTTP' 파서는 기본 event_type을 'NETWORK_HTTP'로 설정합니다.
(파서 로직) metadata.log_type: 'AWS_S3_SERVER_ACCESS' 파서는 log_type을 'AWS_S3_SERVER_ACCESS'로 설정합니다.
(파서 로직) metadata.product_name: 'AWS S3 서버 액세스' 파서는 product_name을 'AWS S3 서버 액세스'로 설정합니다.
(파서 로직) metadata.product_version: 'HTTP/http_version' 파서는 추출된 http_version을 사용하여 product_version을 설정합니다.
(파서 로직) metadata.vendor_name: 'AMAZON' 파서는 vendor_name을 'AMAZON'으로 설정합니다.
(파서 로직) network.application_protocol: 'HTTP' 파서는 ciphersuite 필드가 없으면 application_protocol을 'HTTP'로 설정합니다.
(파서 로직) timestamp 파서는 이벤트가 처리될 때 이벤트 timestamp을 현재 시간으로 설정합니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.