Lambda 리소스 정책의 허용 작업 점검

실제 호출 방식에 맞는 작업을 허용하고 호출 주체와 소스를 제한하세요.

설명

Lambda 리소스 정책의 action은 허용할 작업을 지정합니다. S3 같은 서비스의 일반 함수 호출에는 lambda:InvokeFunction이 필요합니다. 다른 목적의 작업을 지정하면 필요한 호출 권한을 부여하지 못하거나 불필요한 권한을 허용할 수 있습니다.

다른 action이 항상 잘못된 것은 아니므로 함수 URL 등 실제 접근 방식에 필요한 권한을 확인해야 합니다.

잠재적 영향

  • 이벤트 소스가 함수를 호출하지 못해 처리가 지연되거나 실패할 수 있습니다.
  • 필요 이상으로 넓은 작업이나 호출 주체를 허용하면 함수 접근 범위가 커질 수 있습니다.

해결 방법

  • 일반 함수 호출에는 action: lambda:InvokeFunction을 사용하고 해당 접근 방식에 필요한 작업만 허용하세요.
  • principal을 필요한 주체로 제한하고 AWS 서비스 호출은 지원되는 source_arn과 source_account 조건으로 좁히세요. 정책과 이벤트 소스 설정을 함께 확인하고 실제 호출을 시험하세요.

예시

함수와 Dev 별칭이 이미 존재하는 예시입니다. 버킷 이름과 계정 번호를 실제 값으로 바꾸고 S3 알림의 리전 및 대상 설정도 준비하세요. 정책 추가만으로 S3 알림이 생성되지는 않습니다.

변경 전

yaml
- name: Lambda 정책 설정
  community.aws.lambda_policy:
    state: present
    function_name: functionName
    alias: Dev
    statement_id: lambda-s3-myBucket-create-data-log
    action: lambda:CreateFunction
    principal: s3.amazonaws.com
    source_arn: arn:aws:s3:::example-bucket
    source_account: "123456789012"

변경 후

yaml
- name: Lambda 정책 설정
  community.aws.lambda_policy:
    state: present
    function_name: functionName
    alias: Dev
    statement_id: lambda-s3-myBucket-create-data-log
    action: lambda:InvokeFunction
    principal: s3.amazonaws.com
    source_arn: arn:aws:s3:::example-bucket
    source_account: "123456789012"

설명:

  • 변경 전: lambda:CreateFunction은 S3가 기존 함수를 호출하도록 허용하는 작업이 아닙니다.
  • 변경 후: lambda:InvokeFunction으로 지정 버킷·계정의 S3 호출을 허용합니다. 실제 이벤트 연결도 필요합니다.

참조