설명
보호가 필요한 API 작업에 호출자 확인과 권한 검사가 없으면 인증되지 않았거나 권한이 부족한 요청이 처리될 수 있습니다. API Gateway REST API에는 Lambda·Cognito Authorizer 또는 IAM 인증 등 용도에 맞는 제어를 적용할 수 있습니다.
Authorizer가 없다는 이유만으로 다른 인증도 없다고 단정할 수는 없습니다. 의도적으로 공개한 작업은 구분하고, 보안 스키마를 선언하는 것뿐 아니라 해당 작업에 실제 적용했는지 확인해야 합니다.
잠재적 영향
- 민감한 데이터나 기능에 허용되지 않은 호출이 전달될 수 있습니다.
- 경로별 인증 적용이 불일치하면 새 작업이 의도치 않게 공개될 수 있습니다.
해결 방법
작업별 공개 여부와 필요한 호출자 권한을 정하고 적절한 Authorizer 또는 IAM 인증을 적용하세요. OpenAPI를 가져올 때는 보안 스키마와 작업의 security 요구사항 및 실제 AWS 인증 구성을 함께 확인하세요. 승인된 호출은 성공하고 토큰이 없거나 권한이 부족한 호출은 거부되는지 시험하세요.
예시
첫 코드는 OpenAPI 보안 스키마의 부분 예시이고, 두 번째는 외부 명세 파일을 가져오는 작업입니다. 완전한 API의 info·paths·통합과 인증 적용 내용은 생략되어 있습니다.
변경 전
yaml
- name: Setup AWS API Gateway
community.aws.aws_api_gateway:
swagger_dict:
{
"openapi": "3.0.0",
"components": {
"securitySchemes": {
"request_authorizer_single_stagevar": {
"type": "apiKey",
"name": "Unused",
"in": "header"
}
}
}
}
stage: production
endpoint_type: EDGE
state: present
apiKey 스키마만 선언합니다. 이 선언만으로 AWS Authorizer가 구성되거나 작업에 인증이 적용되지는 않습니다.
변경 후
yaml
- name: Setup AWS API Gateway
community.aws.aws_api_gateway:
swagger_file: swaggerFile.yaml
stage: production
endpoint_type: EDGE
state: present
swaggerFile.yaml의 내용을 가져옵니다. 파일을 사용한다는 사실만으로 인증이 보장되지는 않으므로 파일과 배포된 API의 실제 구성을 확인하세요.