Lambda function has no resource-based policy

Severity
Low
Service
Lambda
Check ID
LAMBDA_NO_RESOURCE_POLICY

What this check finds

Without a resource-based policy, invocation control relies entirely on IAM identity policies. There is no explicit allow/deny at the function level, making it harder to audit who can call the function and easier to accidentally grant access through overly broad IAM policies.

Passing looks like: Lambda functions have a resource policy.

How to fix it

Add a resource-based policy that explicitly grants invocation rights only to trusted principals (e.g. a specific API Gateway, EventBridge rule, or IAM role).

AWS CLI

  1. aws lambda add-permission --function-name FUNCTION_NAME --statement-id AllowSpecificPrincipal --action lambda:InvokeFunction --principal arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME

Names in capitals are placeholders for your own resource. Review a command before you run it.

AWS console

Lambda → Function → Configuration → Resource-based policy → Add permissions.

Compliance controls it is evidence for

A failing result counts against these controls in KloudLytics; a passing one is evidence towards them. How compliance mapping works

Compliance controls mapped to Lambda function has no resource-based policy
FrameworkControls
NIST SP 800-53 Rev5 (Moderate)
  • AC-3 Access Enforcement
NIST Cybersecurity Framework 2.0
  • PR.AA-05 Access permissions and authorizations are enforced with least privilege
ISO/IEC 27001:2022 Annex A
  • A.5.15 Access control

Checked on every scan

KloudLytics runs this check each time it scans a connected AWS account, through a read-only role, and lists every affected resource with its region. On Pro and Business a fix is written for the specific resource rather than the general case above. The exact access it needs

More Lambda checks

All Lambda checks

Find out what is actually exposed in your AWS environment.

Connect one AWS account and run your first security assessment.

No credit card · Agentless · Read-only