설명
API Gateway REST API 캐시는 응답을 저장해 반복 요청을 처리합니다. 민감한 응답을 캐시한다면 저장된 데이터를 암호화해야 합니다. CloudFormation의 StageDescription.CacheDataEncrypted: true는 캐시 응답 암호화를 요청합니다.
캐시 클러스터를 프로비저닝해야 실제 캐싱이 동작합니다. 단계 기본 설정과 메서드별 재정의가 다를 수 있으므로 실제 사용하는 메서드의 설정을 확인하세요.
잠재적 영향
- 캐시의 민감한 응답이 필요한 저장 데이터 암호화 보호를 받지 못할 수 있습니다.
- 암호화만으로 잘못된 캐시 키나 과도한 API 접근 권한이 해결되지는 않습니다. 사용자별 응답이 다른 사용자에게 재사용되지 않도록 구성해야 합니다.
해결 방법
- 캐시가 필요한 메서드의 암호화를 켜고, 배포된 단계와 메서드별 설정을 확인하세요.
- 민감한 응답을 캐시해야 하는지 검토하고, 캐시 키·유효 시간·API 인가를 데이터 특성에 맞게 구성하세요.
- 변경 후 필요한 요청의 응답과 캐시 동작을 검증하세요. 기존 캐시 삭제가 필요하면 원본 서비스의 일시적인 부하 증가도 고려하세요.
예시
MyApi에는 메서드와 통합이 이미 구성된 REST API ID를 제공하세요. 두 예제는 캐시 클러스터를 명시적으로 만들며 캐시 비용이 발생합니다. 메서드별 재정의와 접근 권한은 별도로 관리해야 합니다.
캐시 암호화 비활성화
yaml
Parameters:
MyApi:
Type: String
Resources:
Deployment:
Type: AWS::ApiGateway::Deployment
Properties:
RestApiId: !Ref MyApi
Description: My deployment
StageName: DummyStage
StageDescription:
CacheClusterEnabled: true
CacheClusterSize: "0.5"
CachingEnabled: true
CacheDataEncrypted: false
캐싱을 사용하지만 저장된 응답의 암호화를 끕니다.
캐시 암호화 활성화
yaml
Parameters:
MyApi:
Type: String
Resources:
Deployment:
Type: AWS::ApiGateway::Deployment
Properties:
RestApiId: !Ref MyApi
Description: My deployment
StageName: DummyStage
StageDescription:
CacheClusterEnabled: true
CacheClusterSize: "0.5"
CachingEnabled: true
CacheDataEncrypted: true
같은 캐시 구성에 응답 암호화를 활성화합니다. 사용자별 데이터 분리와 인가는 여전히 필요합니다.