Check ID:
Provider: AWS
Service:
Severity: HIGH
Categories:
Resource type:
appsync_graphql_api_no_api_key_authenticationProvider: AWS
Service:
appsyncSeverity: HIGH
Categories:
identity-accessResource type:
AwsAppSyncGraphQLApiWhat this check verifies
AWS AppSync GraphQL APIs are examined for the default authorization type. The finding indicates an API configured withAPI_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
ReplaceAPI_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
- CLI
- Terraform
- Native IaC
- Dashboard steps
aws appsync update-graphql-api —api-id <api-id> —name <api-name> —authentication-type AWS_IAM
References
- https://aws.amazon.com/blogs/mobile/graphql-security-appsync-amplify/
- https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html
- https://support.icompaas.com/support/solutions/articles/62000233666-ensure-aws-appsync-graphql-apis-should-not-be-authenticated-with-api-keys
- https://docs.aws.amazon.com/securityhub/latest/userguide/appsync-controls.html#appsync-5
Where this check fires
This check runs on every scheduled scan against your AWS account. Findings appear at Cloud Security → Findings filterable byCheck 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