API Gateway의 Lambda 호출 권한 범위 점검

API Gateway가 필요한 스테이지·메서드·경로에서만 함수를 호출하도록 제한하세요.

설명

Lambda 권한의 source_arn이 광범위하면 API Gateway의 여러 스테이지·메서드·경로가 같은 함수 호출 권한을 사용할 수 있습니다. 필요 이상의 범위를 허용하면 새 경로나 설정 변경이 의도하지 않은 함수 호출로 이어질 수 있습니다.

이 권한은 API Gateway 서비스가 Lambda를 호출할 수 있는 범위를 정합니다. 익명 이용자의 API 호출 허용 여부는 API의 인증·인가와 리소스 정책 등에 달려 있습니다.

잠재적 영향

  • 의도하지 않은 API 경로가 함수에 요청을 전달할 수 있습니다.
  • 불필요한 함수 실행으로 비용이나 처리 부하가 늘어날 수 있습니다.

해결 방법

API Gateway에 필요한 lambda:InvokeFunction 권한만 부여하고 source_arn을 실제 API ID·스테이지·메서드·경로로 제한하세요. 함수와 별칭의 권한 및 API 호출자의 인증·인가도 함께 확인하세요. 승인된 호출은 성공하고 범위 밖의 호출은 거부되는지 시험하세요.

예시

API Gateway 서비스의 Lambda 호출 권한을 비교합니다. 리전·계정 ID·API ID·함수 이름과 별칭은 실제 통합에 맞게 바꾸세요. Dev는 Lambda 별칭이고 prod는 API 스테이지 이름으로 서로 다른 설정입니다.

변경 전

yaml
- name: Lambda 호출 권한 설정
  lambda_policy:
    state: present
    function_name: functionName
    alias: Dev
    statement_id: api-gateway-invoke
    action: lambda:InvokeFunction
    principal: apigateway.amazonaws.com
    source_arn: arn:aws:execute-api:eu-central-1:123456789012:api-id/*/*

와일드카드가 여러 스테이지와 호출 경로를 허용합니다. API 이용자에게 익명 접근을 부여하는 설정은 아닙니다.

변경 후

yaml
- name: Lambda 호출 권한 설정
  lambda_policy:
    state: present
    function_name: functionName
    alias: Dev
    statement_id: api-gateway-invoke
    action: lambda:InvokeFunction
    principal: apigateway.amazonaws.com
    source_arn: arn:aws:execute-api:eu-central-1:123456789012:api-id/prod/GET/orders

prod 스테이지의 GET /orders 호출로 범위를 제한합니다. 이 제한만으로 API 이용자의 인증이나 인가가 추가되지는 않습니다.

참조