통합 정책 파일: policy/financial_compliance.rego
conftest test . --policy ./policy
C:\trivy_0.74.0_windows-64bit\terraform-aks-master>conftest test . --policy ./policy
0 tests, 0 passed, 0 warnings, 0 failures, 0 exceptions
C:\trivy_0.74.0_windows-64bit\terraform-aks-master>conftest test ./terraform-aks-master --policy ./policy
0 tests, 0 passed, 0 warnings, 0 failures, 0 exceptions
C:\trivy_0.74.0_windows-64bit\terraform-aks-master>cd ..
package compliance
# ==========================================
# 1. 클라우드 인프라 (Terraform) 보안 검증 규칙
# ==========================================
# [규칙 1] 데이터베이스 퍼블릭 노출 차단
deny contains msg if {
resource := input.resource.aws_db_instance[_]
resource.publicly_accessible == true
msg := sprintf("금융권 컴플라이언스 위반: RDS 데이터베이스 '%v'가 퍼블릭 인터넷에 노출(publicly_accessible = true)되어 있습니다.", [resource.name])
}
# [규칙 2] 관리용 포트(SSH/RDP 등) 0.0.0.0/0 외부 개방 차단
deny contains msg if {
resource := input.resource.aws_security_group[_]
ingress := resource.ingress[_]
ingress.cidr_blocks[_] == "0.0.0.0/0"
ingress.from_port <= 22
ingress.to_port >= 22
msg := sprintf("금융권 컴플라이언스 위반: 보안그룹 '%v'에 관리용 포트(22)가 외부(0.0.0.0/0)로 개방되어 있습니다.", [resource.name])
}
# [규칙 3-1] EBS 볼륨 암호화 누락 검사
deny contains msg if {
resource := input.resource.aws_ebs_volume[_]
resource.encrypted != true
msg := sprintf("금융권 컴플라이언스 위반: EBS 볼륨 '%v'에 암호화(encrypted)가 설정되지 않았습니다.", [resource.name])
}
# [규칙 3-2] S3 버킷 암호화 설정 누락 검사
deny contains msg if {
resource := input.resource.aws_s3_bucket[_]
not resource.server_side_encryption_configuration
msg := sprintf("금융권 컴플라이언스 위반: S3 버킷 '%v'에 암호화 설정이 누락되었습니다.", [resource.name])
}
# [규칙 4-1] 필수 자산 소유자(Owner) 태그 누락 검사
deny contains msg if {
resource := input.resource[_][_]
not resource.tags.Owner
msg := sprintf("금융권 컴플라이언스 위반: '%v' 리소스에 소유자(Owner) 태그가 누락되었습니다.", [resource.name])
}
# [규칙 4-2] 필수 환경 구분(Environment) 태그 누락 검사
deny contains msg if {
resource := input.resource[_][_]
not resource.tags.Environment
msg := sprintf("금융권 컴플라이언스 위반: '%v' 리소스에 환경(Environment) 태그가 누락되었습니다.", [resource.name])
}
# ==========================================
# 2. 쿠버네티스 및 AKS (YAML) 보안 검증 규칙
# ==========================================
# [규칙 5] 컨테이너 특권(Privileged) 모드 실행 차단
deny contains msg if {
input.kind == "Deployment"
container := input.spec.template.spec.containers[_]
container.securityContext.privileged == true
msg := sprintf("금융권 컴플라이언스 위반: 배포(Deployment) '%v'의 컨테이너 '%v'가 특권 권한(privileged)으로 설정되어 있습니다.", [input.metadata.name, container.name])
}
# [규칙 6] 루트(Root) 권한 실행 방지 설정 누락 검사
deny contains msg if {
input.kind == "Deployment"
container := input.spec.template.spec.containers[_]
not container.securityContext.runAsNonRoot
msg := sprintf("금융권 컴플라이언스 위반: 배포(Deployment) '%v'의 컨테이너 '%v'에 루트 권한 실행 방지(runAsNonRoot: true) 설정이 누락되었습니다.", [input.metadata.name, container.name])
}
# [규칙 7] 호스트 네트워크(HostNetwork) 공유 차단
deny contains msg if {
input.kind == "Deployment"
input.spec.template.spec.hostNetwork == true
msg := sprintf("금융권 컴플라이언스 위반: 배포(Deployment) '%v'가 호스트 네트워크(hostNetwork: true)를 사용하도록 설정되어 있습니다.", [input.metadata.name])
}
'시스템' 카테고리의 다른 글
| CVE-2026-0300 취약점은 PAN-OS의 GlobalProtect 인증 포털 (0) | 2026.05.09 |
|---|---|
| 차세대 가성비 인프라: Cloudflare + Karpenter + Valkey + ARM (0) | 2026.04.16 |
| ISMS-P 클라우드 아키텍처 (0) | 2026.03.19 |
| ubuntu postgresql 사용법 계정생성 (0) | 2024.04.16 |
| github runner group (0) | 2024.02.02 |
