CLOUD SERVICE · AWS

Amazon Verified Permissions - Amazon Verified Permissions is a managed service for fine-grained application authorization using policies written in the Cedar policy language.

Amazon Verified Permissions evaluates whether an authenticated principal can perform an action on a resource, using application-defined policies, entity data, and request context. It centralizes authorization decisions for applications and APIs, while leaving authentication, application data storage, and enforcement to the application and its supporting services.

Cloud Services Hub →

What is Amazon Verified Permissions

Read the extensive description

Amazon Verified Permissions separates authorization policy from application code. An application submits a principal, action, resource, and optional context to the service, which evaluates the request against policies in a specified policy store. The application then uses the returned authorization decision to allow or reject the operation. Verified Permissions does not intercept application traffic or enforce its decisions automatically; enforcement must occur in the API handler, authorizer, or another trusted application component.

Policies use Cedar, a language designed for authorization. Cedar policies can express permissions based on identities, group membership, resource attributes, and contextual conditions. A permit policy grants access when its scope and conditions match. A matching forbid policy overrides matching permit policies, and requests without a matching permit are denied. This supports explicit restrictions alongside role-based and attribute-based access rules.

A policy store contains policies, policy templates, and an optional schema describing the application's entity types, actions, and context structures. Configure strict policy validation to check policies against the schema when they are created or updated. Treat schema changes as application interface changes: coordinate them with policy deployments and the code that constructs authorization requests. Templates provide a reusable policy structure that can be instantiated with particular principals or resources.

Verified Permissions is not a general-purpose directory or resource database. For entity-based authorization requests, the application supplies the relevant entity attributes and relationships needed for evaluation. For example, a document service might supply the document's owner and tenant, along with the requesting user's group memberships. Build this information from trusted records rather than accepting authorization attributes directly from an untrusted client. Keep the supplied entity graph limited to the relationships necessary for the decision.

Authentication remains a separate concern. An identity source can connect a policy store to Amazon Cognito or a supported OpenID Connect provider, allowing token-based authorization requests. The application still needs to provide resource information and any additional context required by its policies. Token-based authorization does not remove the need to check tenant boundaries, ownership, or action-specific conditions.

For production workloads, place authorization checks before protected side effects and define fail-closed behavior for service errors, timeouts, and malformed requests. Inspect evaluation errors during testing and observability rather than treating every denied request as a simple policy mismatch. Batch authorization can evaluate multiple related access checks, but applications must handle each decision independently. If caching decisions, explicitly account for policy changes, entity changes, token expiry, and context-sensitive conditions.

Design policy-store boundaries around isolation, administration, and deployment requirements. A shared store can support multiple tenants when policies and trusted attributes enforce separation, while separate stores can provide stronger administrative boundaries. Test both allowed and denied scenarios, including cross-tenant requests, before deploying policy changes.

Key Amazon Verified Permissions Features

Cedar policy evaluation

Express authorization rules using principals, actions, resources, and conditions. Matching forbid policies override permits, and requests without a matching permit are denied.

Managed policy stores

Store and manage application authorization policies independently of application deployments. Use policy-store boundaries to separate environments, applications, or tenants where appropriate.

Schema-based policy validation

Define entity types, actions, and context structures in a schema, then enable strict validation to check policy changes against that model. Coordinate schema updates with the application code that constructs requests.

Reusable policy templates

Create parameterized policy templates and instantiate template-linked policies for particular principals or resources. This is useful for repeated sharing or delegation rules without maintaining separately authored policy text for every relationship.

Role-based and attribute-based authorization

Use entity relationships to represent roles or groups and attributes to express conditions such as tenant membership or resource ownership. Applications must supply trusted entity data required by the evaluation.

Token-based authorization

Configure an identity source for Amazon Cognito or a supported OpenID Connect provider and submit supported tokens through token-based authorization APIs. Policies can use the identity information exposed through the configured identity source.

Batch authorization

Evaluate multiple authorization requests through batch APIs where supported. For example, check which actions a user may perform on a resource before rendering controls, while still enforcing authorization when each action executes.

Decision diagnostics

Authorization responses include the decision, determining policies, and evaluation errors where applicable. Use this information to troubleshoot unexpected outcomes, without exposing sensitive policy details to end users.

Amazon Verified Permissions Use Cases

Multi-tenant SaaS authorization

Enforce tenant membership, tenant-specific roles, and resource ownership across application APIs. Model tenant separation explicitly in policies and trusted entity data rather than assuming a shared policy store provides automatic isolation.

Document and project sharing

Represent permissions such as viewing, editing, or administering a document or project. Use template-linked policies for repeated grants to individual users or groups.

Consistent authorization across microservices

Have multiple services evaluate access against a common authorization model instead of implementing separate permission rules. Standardize action names, entity identifiers, request context, and failure handling across callers.

Context-sensitive business operations

Require conditions such as an approved resource state or a trusted user attribute before allowing sensitive operations. Obtain condition values from authoritative application records or validated identity information.

Permission-aware application interfaces

Check available actions to determine which controls or workflows to display. Treat these checks as interface guidance only and repeat authorization on the server before accessing data or executing changes.

Amazon Verified Permissions pricing models

Authorization request usage

Usage-based charges apply to authorization requests. Estimate cost from the number of access decisions your applications make, and consult the applicable pricing schedule for rates and how batch requests are counted.

Policy management request usage

Policy management API requests are a separate usage-based pricing dimension. Include policy provisioning, updates, and other billable management operations in cost estimates, especially when managing large numbers of tenant-specific policies.

Services Amazon Verified Permissions integrates with

<p>A common architecture combines Amazon Cognito for user authentication, Amazon API Gateway for request routing, and AWS Lambda for authorization and application logic. A Lambda authorizer or backend handler maps the incoming operation to a Cedar action, identifies the protected resource, and calls Verified Permissions. The enforcement component must reject denied requests and define fail-closed behavior for authorization failures.</p><p>Resource attributes and membership relationships usually come from an application database such as Amazon DynamoDB. The backend retrieves authoritative records and supplies the relevant entities and context to the authorization request. Token-based requests can obtain principal information from a configured identity source, but resource ownership and tenant boundaries still need explicit modeling. Avoid trusting client-supplied ownership or membership attributes.</p><p>Use AWS CloudFormation to provision policy-store infrastructure and coordinate its schema with application deployments. CloudTrail supports auditing management activity, while application logs provide operational context for authorization outcomes. When introducing caching or batch checks, preserve per-resource enforcement and account for changes to policies, entity relationships, and request context.</p>

Amazon DynamoDB image Amazon DynamoDB

Store application entity attributes and relationships in DynamoDB, then construct the relevant entity data for authorization requests. For example, retrieve a project's tenant, owner, and membership records before checking whether a user can modify it. Verified Permissions does not automatically fetch these records, so the application must manage retrieval and consistency.

Open Amazon DynamoDB →
Amazon API Gateway image Amazon API Gateway

Use a Lambda authorizer or backend authorization logic to connect API Gateway requests to Verified Permissions. For example, map a DELETE request to a Cedar action and a resource identifier, then reject the request when authorization is denied. If authorizer caching is enabled, ensure its cache key and lifetime cannot reuse decisions across different protected resources or contexts.

Open Amazon API Gateway →
AWS CloudFormation image AWS CloudFormation

Use the AWS::VerifiedPermissions::PolicyStore resource to provision policy stores and their schema configuration through infrastructure as code. For example, deploy separate development and production stores with consistent validation settings. Coordinate policy lifecycle management and application configuration with the deployed policy-store identifiers.

Open AWS CloudFormation →
AWS CloudTrail image AWS CloudTrail

Use CloudTrail to audit supported Verified Permissions management API activity. For example, investigate which IAM principal changed a policy store or updated authorization policies. Complement these records with application-level authorization logs that identify the protected operation and outcome without recording tokens or unnecessary personal data.

Open AWS CloudTrail →
Amazon Cognito image Amazon Cognito

Configure a Cognito user pool as an identity source for a policy store and use token-based authorization APIs. For example, a signed-in user can present a supported token while the application asks whether that user may edit a particular document. Supply trusted resource attributes and additional context required by the policy.

Open Amazon Cognito →
AWS Lambda image AWS Lambda

Call Verified Permissions from a Lambda function using an AWS SDK and an execution role with the required API permissions. For example, a document-update function can load ownership information, evaluate the edit action, and write the update only after an Allow decision. Handle authorization-service failures explicitly and avoid performing protected side effects before the check.

Open AWS Lambda →