AWS Redshift 로그 수집
파서 버전: 1.0
이 문서에서는 Amazon S3를 사용하여 AWS Redshift 로그를 Google Security Operations로 수집하는 방법을 설명합니다.
Amazon Redshift는 Amazon Web Services의 완전 관리형 페타바이트 규모 클라우드 데이터 웨어하우스 서비스입니다. SQL 기반 도구와 비즈니스 인텔리전스 애플리케이션을 사용하여 대규모 데이터 세트에서 빠른 쿼리 및 분석을 지원합니다. Amazon Redshift는 인증 시도, 연결, 연결 해제, 사용자 정의 변경, 데이터베이스에 대해 실행된 쿼리를 비롯한 데이터베이스 활동을 로깅합니다. 이 통합은 Amazon Redshift의 기본 감사 로깅 기능을 사용하여 로그 파일을 S3 버킷에 전달하며, Google SecOps는 Amazon S3 V2 피드를 사용하여 이를 수집합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- 다음 권한이 있는 AWS Management Console 에 대한 권한 있는 액세스 권한:
- Amazon Redshift (클러스터, 매개변수 그룹)
- Amazon S3 (버킷, 버킷 정책)
- AWS IAM (사용자, 정책)
Amazon Redshift 감사 로깅을 위한 S3 버킷 구성
Amazon Redshift는 감사 로그 파일을 S3 버킷에 업로드합니다. Amazon Redshift 서비스에서 로그 파일을 쓸 수 있도록 S3 버킷 정책을 구성해야 합니다.
S3 버킷 만들기 및 구성
- 이 사용자 가이드(버킷 만들기)에 따라 Amazon S3 버킷을 만듭니다.
나중에 참조할 수 있도록 버킷 이름 과 리전 을 저장합니다 (예:
redshift-audit-logs-to-secops).https://console.aws.amazon.com/s3의 Amazon S3 콘솔에서 생성된 버킷을 선택합니다.
권한 탭을 선택합니다.
버킷 정책 섹션에서 수정 을 클릭합니다.
다음 버킷 정책을 추가합니다 (
redshift-audit-logs-to-secops를 버킷 이름으로 바꿉니다).{ "Version": "2012-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::redshift-audit-logs-to-secops", "arn:aws:s3:::redshift-audit-logs-to-secops/*" ] } ] }변경사항 저장 을 클릭합니다.
사용자 활동 로그 매개변수 사용 설정
감사 로깅이 사용 설정되면 연결 로그와 사용자 로그가 자동으로 캡처됩니다. 데이터베이스에서 실행되기 전에 각 쿼리를 기록하는 사용자 활동 로그도 캡처하려면 enable_user_activity_logging 데이터베이스 매개변수를 사용 설정해야 합니다.
- https://console.aws.amazon.com/redshiftv2/의 Amazon Redshift 콘솔에 로그인합니다.
- 탐색 메뉴에서 구성 > 워크로드 관리로 이동합니다.
- 클러스터와 연결된 매개변수 그룹을 선택합니다.
- 매개변수 탭을 선택합니다.
- 매개변수 수정 을 클릭합니다.
- enable_user_activity_logging 파라미터 값을 true 로 설정합니다.
저장 을 클릭합니다.
Amazon Redshift 감사 로깅을 S3로 사용 설정
- https://console.aws.amazon.com/redshiftv2/의 Amazon Redshift 콘솔에 로그인합니다.
- 탐색 메뉴에서 클러스터를 선택한 후 구성할 클러스터를 선택합니다.
- 속성 탭을 선택합니다.
- 데이터베이스 구성 패널에서 수정을 클릭한 후 감사 로깅 수정을 선택합니다.
- 감사 로깅 수정 페이지에서 켜기 를 선택합니다.
- **로그 대상** 에서 **S3 버킷** 을 선택합니다.
- S3 버킷에서 구성한 버킷 (예:
redshift-audit-logs-to-secops)을 선택합니다. - 선택사항: S3 키 접두사 를 입력하여 버킷 내에서 로그 파일을 정리합니다 (예:
audit-logs/). - 내보낼 로그를 선택합니다.
- 연결 로그 - 인증 시도, 연결, 연결 해제
- 사용자 로그 - 데이터베이스 사용자 정의 변경
- 사용자 활동 로그 - 데이터베이스에서 실행되기 전의 각 쿼리
- 변경사항 저장 을 클릭합니다.
자세한 내용은 Amazon Redshift 관리 가이드의 데이터베이스 감사 로깅을 참조하세요.
Google SecOps용 IAM 사용자 구성
Google SecOps는 내보낸 감사 로그를 수집하기 위해 S3 버킷에 대한 읽기 액세스 권한이 있는 IAM 사용자가 필요합니다.
- 이 사용자 가이드(IAM 사용자 만들기)에 따라 사용자를 만듭니다.
- 생성된 사용자 를 선택합니다.
- 보안용 사용자 인증 정보 탭을 선택합니다.
- 액세스 키 섹션에서 액세스 키 만들기 를 클릭합니다.
- 사용 사례 로 서드 파티 서비스 를 선택합니다.
- 다음 을 클릭합니다.
- 선택사항: 설명 태그를 추가합니다.
- 액세스 키 만들기 를 클릭합니다.
- 나중에 참조할 수 있도록 .csv 파일 다운로드 를 클릭하여 액세스 키 와 보안 비밀 액세스 키 를 저장합니다.
- 완료 를 클릭합니다.
- 권한 탭을 선택합니다.
- 권한 정책 섹션에서 권한 추가 를 클릭합니다.
- 권한 추가 를 선택합니다.
- 정책 직접 연결 을 선택합니다.
- AmazonS3FullAccess 정책을 검색합니다.
- 정책을 선택합니다.
- 다음 을 클릭합니다.
- 권한 추가 를 클릭합니다.
AWS Redshift 로그를 수집하도록 Google SecOps에서 피드 구성
- **SIEM 설정 > 피드** 로 이동합니다.
- 새 피드 추가 를 클릭합니다.
- 다음 페이지에서 단일 피드 구성 을 클릭합니다.
- 피드 이름 의 고유한 이름을 입력합니다.
- 소스 유형 으로 Amazon S3 V2 를 선택합니다.
- 로그 유형 으로 AWS Redshift 를 선택합니다.
- 다음 을 클릭한 후 제출 을 클릭합니다.
다음 필드의 값을 지정합니다.
- S3 URI:
s3://redshift-audit-logs-to-secops/audit-logs/ - 소스 삭제 옵션: 환경설정에 따라 삭제 옵션을 선택합니다.
- 최대 파일 기간: 지난 며칠 동안 수정된 파일을 포함합니다 (기본값은 180일).
- 액세스 키 ID: S3 버킷에 대한 액세스 권한이 있는 사용자 액세스 키
- 보안 비밀 액세스 키: S3 버킷에 대한 액세스 권한이 있는 사용자 보안 비밀 키
- 애셋 네임스페이스: 애셋 네임스페이스
- 수집 라벨: 이 피드의 이벤트에 적용할 라벨
- S3 URI:
다음 을 클릭한 후 제출 을 클릭합니다.
UDM 매핑 표
| 로그 필드 | UDM 매핑 | 논리 |
|---|---|---|
func_label |
additional.fields |
병합됨 |
lpclagg_label |
additional.fields |
병합됨 |
lpcltype_label |
additional.fields |
병합됨 |
msg |
metadata.description |
직접 매핑됨 |
has_principal |
metadata.event_type |
매핑됨: true → STATUS_UPDATE |
has_target_resource |
metadata.event_type |
매핑됨: true → USER_RESOURCE_ACCESS |
has_user |
metadata.event_type |
매핑됨: true → USER_UNCATEGORIZED |
column1 |
metadata.product_event_type |
직접 매핑됨 |
requestID |
metadata.product_log_id |
직접 매핑됨 |
column20 |
network.application_protocol_version |
직접 매핑됨 |
column9 |
network.session_duration.seconds |
이름 변경/매핑됨 |
column21 |
network.session_id |
직접 매핑됨 |
xid |
network.session_id |
직접 매핑됨 |
column11 |
network.tls.cipher |
직접 매핑됨 |
column10 |
network.tls.version |
직접 매핑됨 |
column16 |
principal.application |
직접 매핑됨 |
column3 |
principal.asset.ip |
병합됨 |
log_event.src_ip |
principal.asset.ip |
병합됨 |
column3 |
principal.hostname |
직접 매핑됨 |
column3 |
principal.ip |
병합됨 |
log_event.src_ip |
principal.ip |
병합됨 |
region |
principal.location.name |
직접 매핑됨 |
column17 |
principal.platform_version |
직접 매핑됨 |
column4 |
principal.port |
직접 매핑됨 |
column5 |
principal.process.pid |
직접 매핑됨 |
pid |
principal.process.pid |
직접 매핑됨 |
accountID |
principal.user.userid |
직접 매핑됨 |
user_id |
principal.user.userid |
직접 매핑됨 |
authmethod_label |
security_result.detection_fields |
병합됨 |
compression_label |
security_result.detection_fields |
병합됨 |
driver_version_label |
security_result.detection_fields |
병합됨 |
iamauthguid_label |
security_result.detection_fields |
병합됨 |
mtu_label |
security_result.detection_fields |
병합됨 |
plugin_name_label |
security_result.detection_fields |
병합됨 |
ssl_compression_label |
security_result.detection_fields |
병합됨 |
ssl_expansion_label |
security_result.detection_fields |
병합됨 |
level |
security_result.severity |
매핑됨: (?i)Info → INFORMATIONAL, (?i)Error → ERROR, (?i)Warning → MEDIUM |
file |
target.file.full_path |
직접 매핑됨 |
expected_bucket_label |
target.resource.attribute.labels |
병합됨 |
expected_s3_prefix_label |
target.resource.attribute.labels |
병합됨 |
sql_query_label |
target.resource.attribute.labels |
병합됨 |
time_zone_label |
target.resource.attribute.labels |
병합됨 |
ClusterIdentifier |
target.resource.name |
직접 매핑됨 |
column6 |
target.resource.name |
직접 매핑됨 |
db |
target.resource.name |
직접 매핑됨 |
column7 |
target.user.user_display_name |
직접 매핑됨 |
user |
target.user.user_display_name |
직접 매핑됨 |
| 해당 사항 없음 | metadata.event_type |
상수: USER_RESOURCE_ACCESS |
| 해당 사항 없음 | security_result.severity |
상수: INFORMATIONAL |
| 해당 사항 없음 | target.resource.type |
상수: DATABASE |
변경 로그
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.