AWS Aurora 로그 수집
이 문서에서는 AWS Aurora 로그를 Google Security Operations로 수집하는 방법을 설명합니다. AWS Aurora는 고성능, 확장성, 가용성을 제공하는 관리형 관계형 데이터베이스 서비스입니다. 이 통합에서는 분석, 모니터링, 위협 감지를 위해 로그를 Google SecOps로 전달하도록 AWS Aurora를 구성합니다.
시작하기 전에
- Google SecOps 인스턴스가 있는지 확인합니다.
- AWS에 대한 권한이 있는지 확인합니다.
- AWS Aurora 데이터베이스 클러스터가 설정되고 실행 중인지 확인합니다.
Amazon S3 버킷 구성
- 버킷 만들기 사용자 가이드에 따라 Amazon S3 버킷을 만듭니다.
- 나중에 사용할 수 있도록 버킷 이름 및 리전을 저장합니다.
- IAM 사용자 만들기 사용자 가이드에 따라 사용자를 만듭니다.
- 만든 사용자를 선택합니다.
- 보안 사용자 인증 정보 탭을 선택합니다.
- 액세스 키 섹션에서 액세스 키 만들기를 클릭합니다.
- 사용 사례로 서드 파티 서비스를 선택합니다.
- 다음을 클릭합니다.
- 선택사항: 설명 태그를 추가합니다.
- 액세스 키 만들기를 클릭합니다.
- CSV 파일 다운로드를 클릭하여 나중에 사용할 수 있도록 액세스 키 및 비밀 액세스 키를 저장합니다.
- 완료를 클릭합니다.
- 권한 탭을 선택합니다.
- 권한 정책 섹션에서 권한 추가를 클릭합니다.
- 권한 추가를 선택합니다.
- Attach policies directly(정책 직접 연결)를 선택합니다.
- AmazonS3FullAccess 및 CloudWatchLogsFullAccess 정책을 검색하여 선택합니다.
- 다음을 클릭합니다.
- 권한 추가를 클릭합니다.
향상된 모니터링 구성
- AWS 관리 콘솔에 로그인합니다.
- 검색창에 RDS를 입력하고 서비스 목록에서 RDS를 선택합니다.
- RDS 대시보드의 탐색창에서 데이터베이스를 선택합니다.
- 모니터링할 Aurora 클러스터를 선택합니다.
- 로그 및 모니터링 섹션에서 수정을 클릭합니다.
- Monitoring 섹션으로 이동하여 Enhanced Monitoring을 사용 설정합니다.
- 모니터링 역할을 CloudWatch Logs 또는 S3에 게시할 권한이 있는 적절한 IAM 역할로 설정합니다.
- 변경사항을 저장하고 Aurora 클러스터에 적용합니다.
AWS Aurora 감사 로그 구성
- RDS 대시보드에서 데이터베이스를 선택하고 Aurora 클러스터를 클릭합니다.
- 로그 및 모니터링 섹션에서 수정을 클릭합니다.
- 데이터베이스 옵션 섹션에서 감사 로그 사용 설정이 선택되어 있는지 확인합니다.
- 대상에서 S3를 선택하고 로그를 저장할 S3 버킷을 지정합니다.
- 변경사항 저장을 클릭하여 설정을 적용합니다.
선택사항: CloudWatch를 사용한 AWS Aurora 로그 구성
추가 모니터링 기능을 사용하려면 CloudWatch Logs를 구성하여 Aurora 로그를 캡처하면 됩니다.
- RDS 대시보드에서 Aurora 클러스터를 선택합니다.
- 로그 및 모니터링 섹션에서 CloudWatch 로그 통합이 사용 설정되어 있는지 확인합니다.
- CloudWatch 로그로 이동하여 Aurora 로그를 저장할 새 로그 그룹을 만듭니다.
- 로그 그룹 화면에서 새 로그 그룹의 이름을 선택합니다.
- 작업 > Amazon S3로 데이터 내보내기를 선택합니다.
Amazon S3로 데이터 내보내기 화면의 데이터 내보내기 정의에서 처음 및 끝을 사용하여 내보낼 데이터의 기간을 설정합니다.
S3 버킷 선택에서 Amazon S3 버킷과 연결된 계정을 선택합니다.
S3 버킷 이름에서 Amazon S3 버킷을 선택합니다.
S3 버킷 접두사: 버킷 정책에 지정한 무작위로 생성된 문자열을 입력합니다.
내보내기를 선택하여 로그 데이터를 Amazon S3로 내보냅니다.
Amazon S3로 내보낸 로그 데이터의 상태를 보려면 작업 > Amazon S3로 내보낸 모든 항목 보기를 선택합니다.
AWS Aurora 로그를 수집하도록 Google SecOps에서 피드 구성
- SIEM 설정 > 피드로 이동합니다.
- 새로 추가를 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다 (예: AWS Aurora Logs).
- 소스 유형으로 Amazon S3를 선택합니다.
- 로그 유형으로 AWS Aurora를 선택합니다.
- 다음을 클릭합니다.
다음 입력 매개변수의 값을 지정합니다.
- 리전: Amazon S3 버킷이 있는 리전입니다.
- S3 URI: 버킷 URI입니다.
s3://your-log-bucket-name/
your-log-bucket-name
을 버킷의 실제 이름으로 바꿉니다.
- URI: 디렉터리 또는 하위 디렉터리가 포함된 디렉터리를 선택합니다.
소스 삭제 옵션: 원하는 삭제 옵션을 선택합니다.
액세스 키 ID: S3 버킷에 대한 액세스 권한이 있는 사용자 액세스 키입니다.
보안 비밀 액세스 키: S3 버킷에 액세스할 수 있는 사용자 보안 비밀 키입니다.
애셋 네임스페이스: 애셋 네임스페이스입니다.
수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.
다음을 클릭합니다.
확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.
UDM 매핑 표
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
account |
principal.group.product_object_id |
원시 로그의 account 필드에서 직접 매핑됩니다. |
column1 |
timestamp_epoch |
원시 로그의 column1 필드에서 직접 매핑됩니다. metadata.event_timestamp 를 파생하는 데 사용됩니다. |
column10 |
다양한 가격 | 로그 형식에 따라 principal.process.command_line , object 또는 number 일 수 있습니다. |
column11 |
ddl , response 또는 command_line2 |
로그 형식에 따라 principal.resource.resource_subtype (ddl), security_result.outcomes.value (response) 또는 principal.process.command_line (command_line2)의 일부일 수 있습니다. |
column12 |
operation , response 또는 command_line3 |
로그 형식에 따라 sr.summary (작업), security_result.outcomes.value (응답) 또는 principal.process.command_line (command_line3)의 일부일 수 있습니다. |
column13 |
database 또는 response |
로그 형식에 따라 target.resource.name (데이터베이스) 또는 security_result.outcomes.value (응답)일 수 있습니다. |
column14 |
object |
로그 형식에 따라 principal.resource.product_object_id 또는 target_data.resource.name 에 직접 매핑됩니다. |
column15 |
command_line |
principal.process.command_line 에 직접 매핑됩니다. |
column16 |
response |
security_result.outcomes.value 에 직접 매핑됩니다. |
column2 |
timestamp 또는 timestamp_ms |
원시 로그의 column2 필드에서 직접 매핑됩니다. |
column3 |
ip 또는 hostname |
로그 형식에 따라 principal.ip 또는 principal.resource.name 일 수 있습니다. |
column4 |
port 또는 userid |
로그 형식에 따라 principal.port 또는 principal.user.userid 일 수 있습니다. |
column5 |
userid 또는 ip |
로그 형식에 따라 principal.user.userid 또는 principal.ip 일 수 있습니다. |
column6 |
hostname 또는 connection_id |
로그 형식에 따라 principal.resource.name 또는 network.session_id 일 수 있습니다. |
column7 |
connection_id 또는 query_id |
로그 형식에 따라 network.session_id 또는 principal.process.pid 일 수 있습니다. |
column8 |
operation |
sr.summary 또는 metadata.product_event_type 에 직접 매핑됩니다. |
column9 |
query_id 또는 database |
로그 형식에 따라 principal.process.pid 또는 target_data.resource.name 일 수 있습니다. |
command_line |
principal.process.command_line |
추출된 command_line 필드에서 직접 매핑됩니다. |
connection_id |
network.session_id |
추출된 connection_id 필드에서 직접 매핑됩니다. |
database |
target.resource.name |
추출된 database 필드에서 직접 매핑됩니다. 파서에서 조건부 로직을 통해 operation , command_line , has_principal_user , has_principal_machine 와 같은 여러 필드에서 파생됩니다. RESOURCE_DELETION , RESOURCE_CREATION , RESOURCE_READ , RESOURCE_WRITTEN , USER_RESOURCE_ACCESS , USER_UNCATEGORIZED , GENERIC_EVENT 일 수 있습니다. 'AWS_AURORA'로 하드코딩되었습니다. column8 에서 매핑되거나 파서 로직에서 파생됩니다. 'AURORA'로 하드코딩되었습니다. 'AMAZON'으로 하드코딩됩니다. |
has_principal_machine |
has_principal_machine |
principal.ip 가 있는 경우 'true'로 설정하고, 그렇지 않으면 'false'로 초기화됩니다. |
has_principal_user |
has_principal_user |
principal.user.userid 가 있는 경우 'true'로 설정하고, 그렇지 않으면 'false'로 초기화됩니다. |
hostname |
principal.resource.name |
추출된 hostname 필드에서 직접 매핑됩니다. |
ip |
principal.ip |
추출된 ip 필드에서 직접 매핑됩니다. |
logevent.id |
security_result.detection_fields.value |
target.logEvents.logEvents 내에 중첩되며 'id' 키로 매핑됩니다. |
logevent.message |
security_result.detection_fields.value |
target.logEvents.logEvents 내에 중첩되며 'message' 키로 매핑됩니다. principal.ip , time_unix , operation , user 를 추출하는 데 사용됩니다. |
logevent.timestamp |
security_result.detection_fields.value |
target.logEvents.logEvents 내에 중첩되며 'timestamp' 키로 매핑됩니다. |
object |
target_data.resource.name 또는 principal.resource.product_object_id |
추출된 object 필드에서 직접 매핑됩니다. |
operation |
sr.summary |
추출된 operation 필드에서 직접 매핑됩니다. |
port |
principal.port |
추출된 port 필드에서 직접 매핑됩니다. |
query_id |
principal.process.pid |
추출된 query_id 필드에서 직접 매핑됩니다. |
response |
security_result.outcomes.value |
추출된 response 필드에서 직접 매핑됩니다. |
service |
principal.application |
원시 로그의 service 필드에서 직접 매핑됩니다. |
src_ip |
principal.ip |
중첩된 target.logEvents.logEvents 구조 내의 logevent.message 에서 추출됩니다. |
target.logEvents.logGroup |
target.resource.attribute.labels.value |
'logGroup' 키로 매핑됩니다. |
target.logEvents.logStream |
target.resource.attribute.labels.value |
'logStream' 키로 매핑됩니다. |
target.logEvents.messageType |
target.resource.attribute.labels.value |
'messageType' 키로 매핑됩니다. |
target.logEvents.owner |
target.resource.attribute.labels.value |
'owner' 키로 매핑됩니다. |
timestamp_epoch |
metadata.event_timestamp |
date 필터를 사용하여 metadata.event_timestamp 로 변환되었습니다. |
user |
principal.user.userid |
중첩된 target.logEvents.logEvents 구조 내의 logevent.message 에서 추출됩니다. |
userid |
principal.user.userid |
추출된 userid 필드에서 직접 매핑됩니다. |
변경사항
2024-01-12
- 'logEvents.messageType', 'logEvents.owner', 'logEvents.logGroup', 'logEvents.logStream'이 'target.resource.attribute.labels'에 매핑되었습니다.
- 'logEvents.logEvents.message', 'logEvents.logEvents.timestamp', 'logEvents.logEvents.id'가 'securit_result.detection_fields'에 매핑되었습니다.
- 'logEvents.logEvents.message'에서 IP 주소를 검색하는 Grok 패턴을 추가하고 'src_data'를 'principal.ip'에 매핑했습니다.
- 'user'가 'principal.user.userid'에 매핑되었습니다.
2023-11-02
- 파서를 새로 만들었습니다.
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가의 답변을 받으세요.