암호화가 비활성화된 API Gateway 캐시

API Gateway에서 민감한 응답을 캐시한다면 저장된 응답을 암호화하고 캐시 키와 접근 권한도 함께 확인하세요.

설명

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

같은 캐시 구성에 응답 암호화를 활성화합니다. 사용자별 데이터 분리와 인가는 여전히 필요합니다.

참조