설명
Redshift 감사 로그를 외부에 보관하지 않으면 장기 조사에 필요한 연결·사용자 활동 기록을 확보하기 어려울 수 있습니다. LoggingProperties로 S3 또는 CloudWatch Logs에 로그를 보낼 수 있으며, 데이터베이스의 시스템 테이블 기록과는 별도 기능입니다.
사용자 활동 로그에는 클러스터 파라미터 enable_user_activity_logging 활성화도 필요합니다. 로그 내보내기만 설정했다고 모든 SQL 활동이 기록되는 것은 아닙니다.
잠재적 영향
- 필요한 기간의 접근·활동 기록을 확보하지 못해 사고 조사가 지연될 수 있습니다.
- 민감한 쿼리 내용이 담긴 로그의 접근·보존 관리가 부족하면 정보가 노출될 수 있습니다.
해결 방법
LoggingProperties에 필요한 대상과 로그 범위를 설정하고 사용자 활동 로그가 필요하면 해당 파라미터도 활성화하세요. 저장 대상의 전달 권한, 접근 제한과 보존 기간을 구성한 뒤 실제 수집을 확인하세요.
예시
S3 로그 내보내기 비교를 위한 발췌입니다. 서브넷 그룹, 실제 리전·클러스터 구성에서 지원되는 RedshiftNodeType과 LoggingBucketName을 준비하세요. RedshiftMasterPassword는 기본값 없는 NoEcho 입력이나 승인된 비밀 관리 방식으로 제공하세요. PubliclyAccessible: true는 로깅에 필요하지 않으므로 접근 범위도 별도로 검토하세요.
변경 전
Resources:
RedshiftCluster:
Type: AWS::Redshift::Cluster
Properties:
ClusterSubnetGroupName: !Ref RedshiftClusterSubnetGroup
DBName: analytics
MasterUsername: admin
MasterUserPassword: !Ref RedshiftMasterPassword
PubliclyAccessible: true
NodeType: !Ref RedshiftNodeType
Port: 5439
외부 로그 내보내기가 구성되어 있지 않습니다. 데이터베이스 내부 시스템 테이블의 기록까지 없다는 뜻은 아닙니다.
변경 후
Resources:
RedshiftCluster:
Type: AWS::Redshift::Cluster
Properties:
ClusterSubnetGroupName: !Ref RedshiftClusterSubnetGroup
DBName: analytics
MasterUsername: admin
MasterUserPassword: !Ref RedshiftMasterPassword
PubliclyAccessible: true
NodeType: !Ref RedshiftNodeType
Port: 5439
LoggingProperties:
BucketName: !Ref LoggingBucketName
S3 로그 대상을 지정합니다. 대상 버킷의 전달 권한과 사용자 활동 로그 파라미터를 별도로 확인하세요.