# Terraform — 버킷을 새로 만들 때마다 같은 Deny 가 붙도록 모듈에 넣는다
data "aws_iam_policy_document" "deny_insecure" {
statement {
sid = "DenyInsecureTransport"
effect = "Deny"
actions = ["s3:*"]
resources = [
aws_s3_bucket.txn_archive.arn,
"${aws_s3_bucket.txn_archive.arn}/*",
]
principals {
type = "*"
identifiers = ["*"]
}
condition {
test = "Bool"
variable = "aws:SecureTransport"
values = ["false"]
}
}
}
resource "aws_s3_bucket_policy" "txn_archive" {
bucket = aws_s3_bucket.txn_archive.id
policy = data.aws_iam_policy_document.deny_insecure.json
}
주의 — Deny 문의 Resource 에 버킷 ARN 과 /* 을 둘 다 넣어야 합니다. /* 만 넣으면 객체 작업은 막히지만 ListBucket 같은 버킷 수준 작업은 여전히 HTTP 로 가능합니다. 또한 Principal: "*" 이므로 VPC 엔드포인트 경유 내부 트래픽도 HTTPS 여야 합니다 — 사내 배치 스크립트가 HTTP 를 쓰고 있지 않은지 먼저 확인하고 적용하세요.
📋 평가항목 정보
평가항목 ID
PISM-001
구분
기술적 보안
통제분야
5. 운영 관리
통제구분(대)
5.3 정보처리시스템 보호대책
평가항목
통신구간 암호화 적용 여부
위험도
5
평가 구분 (AWS)
스크립트
상세설명
HTTP 요청을 허용할 경우 중요정보가 평문으로 노출될 위협이 존재하므로, HTTP 요청 거부 설정을 활성화하여 통신구간 암호화 적용 여부를 점검합니다.
📎 확인 자료 (증적)
대상 버킷 목록 (aws s3 ls 출력)
버킷별 정책 전문 (get-bucket-policy 출력) — aws:SecureTransport 조건 포함 여부
조치 후 HTTP 요청이 AccessDenied 로 거부되는 것을 보인 curl 결과
평가에서는 화면 캡처보다 CLI 출력이 강한 증적입니다. 명령·실행시각·계정 ARN 이 함께 남기 때문입니다. 위 진단 탭의 출력을 그대로 보고서에 붙이면 됩니다.
🏦 금융 관점
전자금융감독규정은 이용자 정보와 거래정보를 송·수신 구간에서 암호화하도록 요구합니다. 클라우드에서는 이 요구가 "TLS 를 지원한다"가 아니라 "평문 접근을 거부한다"로 구현되어야 합니다. 거래원장·마이데이터 동의 로그처럼 보존 의무가 있는 객체가 담긴 버킷은 우선순위로 처리하세요.
「클라우드 관리체계 보안 취약점 평가기준(퍼블릭 클라우드)」의 평가항목을 교육용으로 재구성한 시뮬레이터입니다.
계정 ID·ARN·리소스 ID 는 형식만 실제와 같게 만든 가상 값이며, 어떤 AWS 환경에도 접속하지 않습니다.
실제 평가에서는 기관의 최신 평가기준 원문과 AWS 공식 문서를 따르십시오.