API Gateway REST API의 호출 권한 점검

보호할 API 작업에 적절한 인증과 인가를 적용하세요.

설명

보호가 필요한 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의 실제 구성을 확인하세요.

참조