API Gateway의 REST API 보안 정책
보안 정책은 API Gateway가 제공하는 최소 TLS 버전과 암호 제품군의 사전 정의된 조합입니다. 클라이언트가 API 또는 사용자 맞춤형 도메인 이름에 대해 TLS 핸드셰이크를 설정할 때, 보안 정책은 API Gateway가 허용하는 TLS 버전 및 암호 제품군을 강제 적용합니다. 보안 정책은 API 및 사용자 지정 도메인 이름을 클라이언트와 서버 간의 변조 및 도청과 같은 네트워크 보안 문제로부터 보호합니다.
API Gateway는 레거시 보안 정책과 향상된 보안 정책을 지원합니다. TLS_1_0 및 TLS_1_2는 레거시 보안 정책입니다. 이전 버전과의 호환성을 위해 이러한 보안 정책을 사용합니다. SecurityPolicy_로 시작하는 모든 정책은 향상된 보안 정책입니다. 규제 워크로드, 고급 거버넌스 또는 양자 내성 암호를 사용하려면 이러한 정책을 사용합니다. 향상된 보안 정책을 사용하는 경우 추가 거버넌스를 위해 엔드포인트 액세스 모드도 설정해야 합니다. 자세한 내용은 엔드포인트 액세스 모드 섹션을 참조하세요.
API Gateway가 보안 정책을 적용하는 방법
다음 예제에서는 API Gateway가 보안 정책을 예로 사용하여 SecurityPolicy_TLS13_1_3_2025_09 보안 정책을 적용하는 방법을 보여 줍니다.
이 SecurityPolicy_TLS13_1_3_2025_09 보안 정책은 TLS 1.3 트래픽을 허용하고 TLS 1.2 및 TLS 1.0 트래픽은 거부합니다. TLS 1.3 트래픽의 경우 보안 정책은 다음 암호 그룹을 허용합니다.
TLS_AES_128_GCM_SHA256TLS_AES_256_GCM_SHA384TLS_CHACHA20_POLY1305_SHA256
API Gateway는 다른 암호 그룹을 허용하지 않습니다. 예를 들어 보안 정책은 암호 제품군을 사용하는 모든 TLS AES128-SHA 1.3 트래픽을 거부합니다. 지원되는 TLS 버전 및 암호에 대한 자세한 내용은 지원되는 보안 정책 섹션을 참조하세요.
API Gateway에 액세스하는 데 사용되는 TLS 프로토콜 및 암호 클라이언트를 모니터링하려면 액세스 로그에서 $context.tlsVersion 및 $context.cipherSuite 컨텍스트 변수를 사용할 수 있습니다. 자세한 내용은 API Gateway에서 REST API 모니터링 섹션을 참조하세요.
엔드포인트 액세스 모드
엔드포인트 액세스 모드는 SecurityPolicy_로 시작하는 향상된 보안 정책을 사용하는 모든 REST API 또는 사용자 지정 도메인 이름에 대해 지정해야 하는 추가 파라미터입니다. 리소스를 생성하거나 보안 정책을 레거시 정책에서 향상된 정책으로 변경할 때 이 작업을 수행합니다.
엔드포인트 액세스 모드가 STRICT로 설정된 경우 REST API 또는 사용자 지정 도메인 이름에 대한 모든 요청은 다음 검사를 통과해야 합니다.
-
요청은 리소스와 동일한 API Gateway 엔드포인트 유형에서 시작되어야 합니다. 이는 리전, 엣지 최적화 또는 프라이빗 엔드포인트에서 발생할 수 있습니다.
-
리전 또는 프라이빗 엔드포인트를 사용하는 경우 API Gateway는 SNI 호스트 일치를 사용합니다. 엣지 최적화 엔드포인트를 사용하는 경우 API Gateway는 CloudFront의 도메인 프런트닝 보호를 준수합니다. 자세한 내용은 도메인 프론팅을 참조하세요.
이러한 조건 중 하나가 충족되지 않으면 API Gateway는 요청을 거부합니다. 가능하면 STRICT 엔드포인트 액세스 모드를 사용하는 것이 좋습니다.
엄격한 엔드포인트 액세스 모드를 사용하도록 기존 API 또는 도메인 이름을 마이그레이션하려면 먼저 보안 정책을 향상된 보안 정책으로 업데이트하고 엔드포인트 액세스 모드를 BASIC으로 설정한 상태로 유지합니다. 트래픽 및 액세스 로그를 검증한 후 엔드포인트 액세스 모드를 STRICT로 설정합니다. 엔드포인트 액세스 모드를 STRICT에서 BASIC으로 마이그레이션하면 변경 사항이 전파됨에 따라 약 15분 동안 엔드포인트를 사용할 수 없습니다.
특정 애플리케이션 아키텍처에 대해 엔드포인트 액세스 모드를 STRICT로 설정해서는 안 되며, 대신 엔드포인트 액세스 모드를 BASIC으로 설정해야 합니다. 다음 표에는 REST API 또는 사용자 지정 도메인 이름이 STRICT 엔드포인트 액세스 모드를 사용할 수 있도록 몇 가지 애플리케이션 아키텍처와 권장 사항이 나와 있습니다.
| 아키텍처 | 권장되는 마이그레이션 |
|---|---|
VPC 엔드포인트를 사용하여 퍼블릭 사용자 지정 도메인 이름에 액세스합니다. |
이 아키텍처는 교차 엔드포인트 유형 트래픽을 사용합니다. API Gateway의 프라이빗 API에 대한 사용자 지정 도메인 이름으로 마이그레이션하는 것을 권장합니다. |
|
메서드를 사용하여 사용자 지정 도메인 이름 또는 프라이빗 DNS 이름을 사용하지 않는 프라이빗 API를 간접적으로 호출합니다. |
이 아키텍처는 호스트 헤더와 TLS 핸드셰이크에 사용되는 SNI 간에 불일치를 생성하고 CloudFront의 도메인 프런트닝 제한을 통과하지 않습니다. 프라이빗 DNS를 사용하도록 VPC를 마이그레이션하는 것이 좋습니다. |
도메인 샤딩을 사용하여 여러 도메인 또는 하위 도메인에 콘텐츠를 배포합니다. |
이 아키텍처는 호스트 헤더와 TLS 핸드셰이크에 사용되는 SNI 간에 불일치를 생성하고 CloudFront의 도메인 프런트닝 제한을 통과하지 않습니다. 이러한 안티 패턴을 사용하지 않고 |
엔드포인트 액세스 모드 사용에 대한 고려 사항은 다음과 같습니다.
-
API 또는 도메인 이름의 엔드포인트 액세스 모드가
STRICT인 경우 엔드포인트 유형을 변경할 수 없습니다. 엔드포인트 유형을 변경하려면 먼저 엔드포인트 액세스 모드를BASIC으로 변경합니다. -
엔드포인트 액세스 모드를
BASIC에서STRICT로 변경하면 API Gateway가 엄격한 엔드포인트 액세스 모드를 적용하는 데 15분의 지연이 발생합니다. -
SecurityPolicy_로 시작하는 정책에서 레거시 정책으로 보안 정책을 변경하는 경우 엔드포인트 액세스 모드를""로 설정 해제해야 합니다.
고려 사항
API Gateway의 REST API에 대한 보안 정책에 대한 고려 사항은 다음과 같습니다.
-
OpenAPI 정의 파일에서 보안 정책을 가져올 수 있습니다. 자세한 내용은 x-amazon-apigateway-endpoint-access-mode 섹션을 참조하세요.
-
API는 API와 보안 정책이 다른 사용자 지정 도메인 이름에 매핑할 수 있습니다. 해당 사용자 지정 도메인 이름을 간접적으로 호출하면 API Gateway는 API의 보안 정책을 사용하여 TLS 핸드셰이크를 협상합니다. 기본 API 엔드포인트를 비활성화하면 직접 호출자가 API를 간접적으로 호출하는 방법에 영향을 미칠 수 있습니다.
-
보안 정책을 변경하는 경우 업데이트가 완료되는 데 약 15분이 걸립니다. API의
apiStatus를 모니터링할 수 있습니다. API가 업데이트되면apiStatus는UPDATING이고 완료되면AVAILABLE이 됩니다. API 상태가UPDATING인 경우에도 API를 간접적으로 호출할 수 있습니다. -
API Gateway는 모든 API에서 보안 정책을 지원합니다. 하지만 REST API에 대해서만 보안 정책을 선택할 수 있습니다. API Gateway는 HTTP 또는 WebSocket API에 대한
TLS_1_2보안 정책만 지원합니다. -
API에 대한 보안 정책은
TLS_1_0에서TLS_1_2로 업데이트할 수 없습니다. -
일부 보안 정책은 ECDSA 및 RSA 암호 제품군을 모두 지원합니다. 사용자 지정 도메인 이름과 함께 이 유형의 정책을 사용하는 경우 암호 그룹은 고객이 제공한 인증서 키 유형인 RSA 또는 ECDSA와 일치합니다. REST API에서 이 유형의 정책을 사용하는 경우 암호 제품군은 RSA 인증서 유형과 호환되는 암호 제품군과 일치합니다.