설명
API Gateway REST API의 공개형 엔드포인트는 인터넷을 통한 호출 경로를 제공합니다. 공개형이라는 사실만으로 익명 호출이 허용되는 것은 아니며 실제 접근은 인증과 리소스 정책에도 달려 있습니다.
모든 API가 반드시 비공개여야 하는 것은 아니지만, 내부 시스템 전용 API라면 공개형 엔드포인트는 불필요한 노출이 됩니다. 의도하지 않은 공개 접근은 인증 우회 시도나 탐색 트래픽의 대상이 되기 쉽습니다.
잠재적 영향
- 불필요한 외부 노출: 내부 전용 API가 인터넷에서 탐지될 수 있습니다.
- 공격 표면 확대: 인증 시도, 스캐닝, 오남용 요청이 직접 들어올 수 있습니다.
- 네트워크 경계 약화: VPC 기반 통제 대신 퍼블릭 접근 제어에 의존하게 됩니다.
해결 방법
- 내부 전용 API라면
endpoint_configuration.types = ["PRIVATE"]로 설정하세요. - 공개가 필요한 API와 내부 전용 API를 분리해 서로 다른 접근 정책을 적용하세요.
- 인터페이스 VPC 엔드포인트, 보안 그룹과 DNS를 준비하고, 리소스 정책과 VPC 엔드포인트 정책으로 필요한 호출 범위를 제한하세요. 인증과 정상 호출도 검증하세요.
예시
동일한 REST API의 엔드포인트 유형을 비교한 발췌입니다. PRIVATE API에 필요한 VPC 엔드포인트, 리소스 정책, 메서드와 인증 설정은 생략했습니다.
변경 전
hcl
resource "aws_api_gateway_rest_api" "example" {
name = "regional-example"
endpoint_configuration {
types = ["REGIONAL"]
}
}
변경 후
hcl
resource "aws_api_gateway_rest_api" "example" {
name = "regional-example"
endpoint_configuration {
types = ["PRIVATE"]
}
}
설명:
- 변경 전: 엔드포인트 유형이
REGIONAL이라 퍼블릭 네트워크 경로로 노출될 수 있습니다. - 변경 후:
PRIVATE는 VPC 엔드포인트를 통한 호출 경로를 사용합니다. 필요한 연결과 리소스 정책을 구성해야 하며 호출자 인증을 대신하지는 않습니다.