목차 열기
침투 테스트 조치 결과
Playball은 고객정보와 주요 서비스 경로를 안전하게 운영하기 위해 2026-04-01부터 2026-04-04까지 모의해킹을 수행했고, 확인된 취약점에 대해 인프라·플랫폼 조치를 반영했습니다.
주요 전후 비교
| 영역 | 전 | 후 |
|---|---|---|
| 외부 진입 경로 | Staging은 직접 노출된 DNS와 넓은 ALB 인바운드 범위가 남아 있었고, Prod도 외부 진입 경로 정리가 더 필요했습니다. | Staging·Prod API를 CloudFront 기준으로 정리하고 ALB 인바운드를 허용 범위로 제한했습니다. |
| 감사·추적 체계 | 감사 로그와 보안 이벤트는 운영 중이었지만 추적 범위, 저장소 보호, 전파 경로 정리가 더 필요했습니다. | EKS Control Plane 로그, CloudTrail, 감사 로그 S3 보호, 보안 이벤트·감사 이벤트 전파 경로를 운영 기준에 맞춰 보강했습니다. |
| 권한·시크릿 관리 | 정적 키 제거, 사람 접근 권한 분리, DB 자격증명 관리 기준을 더 명확히 정리할 필요가 있었습니다. | IRSA 최소 권한, SSO Permission Set 분리, RDS 자격증명 Secrets Manager 이관을 반영했습니다. |
| 클러스터 정책 | 네트워크 격리, 서비스 간 암호화, 배포 정책 강제가 일관된 기준으로 묶여 있지 않았습니다. | NetworkPolicy, mTLS STRICT, Kyverno 정책, Policy Reporter를 적용했습니다. |
| Gateway 보호 | 요청 필터링, 속도 제한, 내부 경로 차단, 관리 도구 접근 제한이 개별적으로 흩어져 있었습니다. | EnvoyFilter + Lua WAF, Local / Global Rate Limit, JWT 인증, 내부 경로 차단, Admin Tools IP 제한을 적용했습니다. |
적용 범위
| 영역 | 반영 내용 |
|---|---|
| Edge / Ingress | Staging·Prod API의 CloudFront 전환, ALB Security Group 제한 |
| EKS 제어면 | Control Plane API 접근 제한, IMDSv2 강제, Control Plane 로깅 활성화 |
| 감사 / 추적 | CloudTrail Multi-Region, Log Validation, 감사 로그 S3 보호, 보안 이벤트·감사 이벤트 전파 경로 정리 |
| 권한 / 시크릿 | IRSA 최소 권한, SSO Permission Set 환경 분리, RDS 자격증명 Secrets Manager 이관 |
| 운영 알람 / 복구성 점검 | CloudWatch 운영 알람, RDS PITR·PostgreSQL 데이터베이스 보조 백업 점검 경로 |
| 클러스터 정책 | NetworkPolicy default-deny, mTLS STRICT, Kyverno 정책, Policy Reporter |
| Gateway 보호 | EnvoyFilter + Lua WAF, Local / Global Rate Limit, JWT RequestAuthentication + AuthZ, 내부 경로 차단, Admin Tools IP Whitelist |
| 데이터 보호 | RDS 암호화, Deletion Protection, 백업 기간 및 로그 설정 강화 |
인프라·플랫폼 조치 현황
Edge / Ingress
| 조치 | 관련 카테고리 | 적용 내용 |
|---|---|---|
| Staging API → CloudFront 전환 | 외부 진입 경로 | api.staging.playball.one을 CloudFront Alias로 전환하고 AAAA 레코드를 제거했습니다. |
| Prod API → CloudFront 전환 | 외부 진입 경로 | api.playball.one 외부 진입점을 CloudFront Distribution Alias 기준으로 정리했습니다. |
| Staging ALB Security Group 제한 | Ingress 제한 | 0.0.0.0/0 인바운드를 제거하고 CloudFront Managed Prefix List와 허용 IP만 유지했습니다. |
EKS 제어면 / 감사
| 조치 | 관련 카테고리 | 적용 내용 |
|---|---|---|
| EKS Control Plane API 접근 제한 | Control Plane 접근 | Public access CIDR을 bastion과 허용 IP로 제한하고 private access를 함께 사용합니다. |
| Node IMDSv2 강제 | 노드 메타데이터 보호 | Launch Template 기준으로 IMDSv2 전용과 hop limit 2를 적용했습니다. |
| EKS Control Plane 로깅 | 감사 로그 | api, audit, authenticator, controllerManager, scheduler 로그를 CloudWatch Logs로 수집합니다. |
| CloudTrail Multi-Region + Log Validation | 감사 추적 | Multi-Region Trail, Log File Validation, Management/Data Events, Insights를 활성화했습니다. |
| 감사 로그 S3 보안 정책 | 감사 저장소 보호 | AES256, Versioning, Public Access Block, HTTPS 강제와 CloudTrail 400일·개인정보처리시스템 접속기록 2년 보관 기준을 반영했습니다. |
| 보안 이벤트 실시간 알람 | 보안 이벤트 알림 | CloudTrail 기반 보안 이벤트를 EventBridge → Lambda → Discord 경로로 전파하고, 시크릿 변경 이벤트도 함께 추적합니다. |
| S3 감사 이벤트 요약 알람 | 감사 이벤트 요약 | 감사 버킷, 백업 버킷, observability 저장소, AI audit, ClickHouse 관련 S3 API 이벤트를 수집하고 observability 삭제 이벤트는 요약 전파합니다. |
권한 / 시크릿
| 조치 | 관련 카테고리 | 적용 내용 |
|---|---|---|
| IAM IRSA 최소 권한 | 워크로드 권한 | OIDC AssumeRole 기반으로 서비스 계정별 Role을 분리하고 정적 Access Key를 제거했습니다. |
| SSO Permission Set 환경별 분리 | 운영자 권한 | DevOps, Developer, Security, ReadOnly를 staging / prod 기준으로 분리했습니다. |
| RDS 암호화 + Deletion Protection | 데이터 보호 | 스토리지 암호화, public 접근 차단, prod deletion protection, Multi-AZ, 백업 기간을 적용했습니다. |
| RDS 자격증명 Secrets Manager 이관 | 시크릿 관리 | DB 접속 정보를 Secrets Manager와 External Secrets 기준으로 관리합니다. |
운영 알람 / 복구성 점검
| 조치 | 관련 카테고리 | 적용 내용 |
|---|---|---|
| 운영 알람 / RDS 백업 점검 | 운영 알람 / 백업 복구성 | CloudWatch Alarm → SNS → Lambda → Discord 경로와 일일 RDS PITR·PostgreSQL 데이터베이스 보조 백업 점검 경로를 운영합니다. |
클러스터 정책 / 메시 보안
| 조치 | 관련 카테고리 | 적용 내용 |
|---|---|---|
| NetworkPolicy default-deny + namespace isolation | 네트워크 격리 | 기본 차단 정책과 네임스페이스 간 허용 매트릭스를 적용했습니다. |
| Istio mTLS STRICT mode | 서비스 간 통신 | Mesh-wide STRICT와 예외 포트를 함께 운영합니다. |
| Kyverno: Disallow Privileged | 배포 정책 | privileged=true 리소스 생성을 제한합니다. |
| Kyverno: Disallow :latest Tag | 배포 정책 | :latest 또는 태그 미지정 이미지를 제한합니다. |
| Kyverno: Require Resource Limits | 배포 정책 | 모든 컨테이너와 initContainer에 CPU / 메모리 limits를 요구합니다. |
| Kyverno: Require ArgoCD Management | 배포 정책 | app.kubernetes.io/instance 라벨과 수동 예외 주석 기준을 적용했습니다. |
| Kyverno: Protect Critical Namespaces | 배포 정책 | kube-system, argocd, istio-system 수정·삭제를 제한합니다. |
| Policy Reporter | 정책 가시화 | Kyverno 정책 위반 현황을 대시보드로 확인합니다. |
Gateway / 서비스 보호
| 조치 | 관련 카테고리 | 적용 내용 |
|---|---|---|
| Istio WAF (EnvoyFilter + Lua) | 요청 필터링 | SQLi, XSS, Path Traversal, Command Injection, SSRF, Log4Shell, Bot Scanner 등 10개 범주를 검사하고 차단합니다. |
| Istio Rate Limiting (Local + Global) | 요청 제한 | 전역, IP, 경로별 제한을 적용하고 Rate Limit 위반 시 429를 반환합니다. |
| JWT RequestAuthentication + AuthZ | 엣지 인증 | Istio 엣지에서 JWT를 검증하고 보호 경로와 공개 경로를 분리합니다. |
| AuthZ: 내부 경로 차단 | 내부 경로 보호 | metrics, health, ready, actuator, prometheus 계열 경로를 차단합니다. |
| Admin Tools IP Whitelist | 관리 도구 접근 | kafka-ui, cloudbeaver, grafana, redisinsight, policy-reporter 접근을 허용 IP 기준으로 제한합니다. |
운영 보완
| 조치 | 관련 카테고리 | 적용 내용 |
|---|---|---|
| EKS NodeGroup Spot 다양화 | 가용성 | 앱·모니터링 노드 그룹의 인스턴스 타입을 다변화했습니다. |