AppSync Authorization modes 
AWS AppSync provides authz directives ↗ for configuring security and data protection.
SECURITY MUST NEVER BE TAKEN FOR GRANTED
Prisma-AppSync implements a basic mechanism to help mitigate some common issues. However, accuracy is not guaranteed and you should always test your own API security implementation.
👉 Models directives 
Applying AppSync authorization modes for a given model require to write directives using AST comments (triple-slash ///).
prisma
/// @auth(model: [{ allow: iam }, { allow: apiKey }])
model Post {
  id       Int       @id @default(autoincrement())
  title    String
}👉 Usage with @auth syntax 
Note: For now,
@authonly works supports theallowkey.
Entire model 
prisma
// Apply to all queries, mutations and subscriptions
@auth(model: [{ allow: iam }])Queries 
prisma
// Apply to all queries (get, list, count, ...)
@auth(queries: [{ allow: iam }])
// Apply to granular queries
@auth(queries: { list: [{ allow: iam }] })Mutations 
prisma
// Apply to all mutations (create, update, upsert, delete, ...)
@auth(mutations: [{ allow: iam }])
// Apply to granular mutations
@auth(mutations: { create: [{ allow: iam }] })Subscriptions 
prisma
// Apply to all subscriptions (onCreated, onUpdated, ...)
@auth(subscriptions: [{ allow: iam }])
// Apply to granular subscriptions
@auth(subscriptions: { onCreated: [{ allow: iam }] })Fields 
prisma
// Apply to specific Type fields
@auth(fields: { password: [{ allow: apiKey }] })👉 Supported Authorization modes 
https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html
prisma
// API_KEY Authorization
@auth(model: [{ allow: apiKey }])
// AWS_IAM
@auth(model: [{ allow: iam }])
// OPENID_CONNECT
@auth(model: [{ allow: oidc }])
// AWS_LAMBDA
@auth(model: [{ allow: lambda }])
// AMAZON_COGNITO_USER_POOLS
@auth(model: [{ allow: userPools }])
// AMAZON_COGNITO_USER_POOLS with groups
@auth(model: [{ allow: userPools, groups: ["users", "admins"] }])
// Allow multiples
@auth(model: [{ allow: apiKey }, { allow: userPools, groups: ["admins"] }])👉 Default directive 
It is also possible to set a defaultDirective, that will apply to all generated Types:
prisma
generator appsync {
  provider = "prisma-appsync"
  defaultDirective = "@auth(model: [{ allow: iam }])"
}When provided, defaultDirective seamlessly integrates with model-specific directives:
prisma
// specified 'defaultDirective' for all models:
@auth(model: [{ allow: iam }])
// additional 'model directive' for enhanced control:
@auth(model: [{ allow: apiKey }])
// resulting merged directive for the model:
@auth(model: [{ allow: iam }, { allow: apiKey }])