Check ID: appsync_graphql_api_no_api_key_authentication
Provider: AWS
Service: appsync
Severity: HIGH
Categories: identity-access
Resource type: AwsAppSyncGraphQLApi

What this check verifies

AWS AppSync GraphQL APIs are examined for the default authorization type. The finding indicates an API configured with API_KEY instead of IAM, Cognito, OIDC, or Lambda authorizers.

Risk

Static API keys can be leaked or reused, enabling unauthorized queries and mutations.
  • Confidentiality: unrestricted data reads
  • Integrity: unauthorized writes and schema misuse
  • Accountability: no user identity for auditing, difficult revocation and scoping

Recommendation

Replace API_KEY with stronger modes and apply least privilege:
  • AWS_IAM for service-to-service
  • Cognito User Pools or OIDC for end users
  • Lambda authorizer for custom logic If guest access is unavoidable, limit to read-only fields, enforce throttling, use short key lifetimes, and apply schema-level authorization.

Remediation

aws appsync update-graphql-api —api-id <api-id> —name <api-name> —authentication-type AWS_IAM

References

Where this check fires

This check runs on every scheduled scan against your AWS account. Findings appear at Cloud Security → Findings filterable by Check ID = appsync_graphql_api_no_api_key_authentication. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to AWS checks