설명
API 응답 캐시에는 요청 결과와 관련 데이터가 저장될 수 있습니다. 캐시를 암호화하지 않으면 저장된 응답에 대한 암호화 보호가 없어, 사용자 정보나 내부 응답을 다루는 API에서 특히 주의가 필요합니다.
캐시를 사용할 때는 성능뿐 아니라 저장 데이터 보호도 설정해야 합니다. 암호화는 잘못된 캐시 키나 접근 권한으로 다른 사용자에게 응답이 반환되는 문제를 막지는 않습니다.
잠재적 영향
- 캐시 저장소에 대한 무단 접근으로 응답의 민감정보가 노출될 위험이 커질 수 있습니다.
- 조직의 API 캐시 암호화 요구사항을 충족하지 못할 수 있습니다.
해결 방법
- 캐시를 사용하는 메서드 설정에는
cache_data_encrypted = true를 명시하세요. - 캐시가 필요한 메서드만 사용하고, 민감정보 포함 여부와 캐시 키·접근 권한을 검토하세요.
- 적용 후 스테이지의 캐시와 메서드의 암호화 설정을 확인하고 정상적인 응답 처리를 시험하세요.
예시
참조한 REST API와 스테이지는 별도로 정의하는 발췌입니다. 실제 캐시 사용에는 스테이지의 캐시 클러스터도 활성화되어 있어야 합니다.
변경 전
hcl
resource "aws_api_gateway_method_settings" "cached_method" {
rest_api_id = aws_api_gateway_rest_api.example.id
stage_name = aws_api_gateway_stage.example.stage_name
method_path = "path1/GET"
settings {
metrics_enabled = true
logging_level = "INFO"
caching_enabled = true
cache_data_encrypted = false
}
}
메서드의 캐시는 켜져 있지만 캐시 데이터 암호화는 꺼져 있습니다.
변경 후
hcl
resource "aws_api_gateway_method_settings" "cached_method" {
rest_api_id = aws_api_gateway_rest_api.example.id
stage_name = aws_api_gateway_stage.example.stage_name
method_path = "path1/GET"
settings {
metrics_enabled = true
logging_level = "INFO"
caching_enabled = true
cache_data_encrypted = true
}
}
캐시를 유지하면서 암호화도 활성화합니다. 응답을 공유해도 되는 범위와 접근 권한은 별도로 확인하세요.