AWS Verified Access provides secure access to corporate applications without requiring a VPN. It evaluates each access request in real time against Cedar policies, using identity and device posture data from configured trust providers.
Verified Access Instance (top-level resource), Trust Provider (identity via IAM Identity Center/OIDC or device posture via CrowdStrike/Jamf/JumpCloud), Group (collection of endpoints sharing a Cedar policy), and Endpoint (single application: load-balancer, network-interface, rds, cidr).
Attack note: Compromising Verified Access means bypassing zero-trust enforcement entirely. Modifying group or endpoint policies grants access to every protected application.
Cedar policies default to implicit deny. Group-level policies are inherited by all endpoints. Endpoint-level policies are evaluated in addition to the group policy. An overly broad permit at the group level with no endpoint-level restrictions grants access to all endpoints in that group.
Attack note: A blanket "permit(principal, action, resource);" at the group level with no conditions allows any authenticated user to access all endpoints in the group.
Verified Access is a protective control, not a data store. The primary risk is misconfiguration that weakens or bypasses access enforcement. Compromise of the trust provider or overly permissive Cedar policies can expose all protected applications.
aws ec2 describe-verified-access-instancesaws ec2 describe-verified-access-trust-providersaws ec2 describe-verified-access-groupsaws ec2 describe-verified-access-endpointsaws ec2 get-verified-access-group-policy \
--verified-access-group-id vagr-0dbe967baf14b7235aws ec2 describe-verified-access-instance-logging-configurations \
--verified-access-instance-ids vai-0ce000c0b7643abeaKey insight: ModifyVerifiedAccessGroupPolicy is the most critical permission — it can replace Cedar policies to grant blanket access to all endpoints in a group.
aws ec2 get-verified-access-endpoint-policy \
--verified-access-endpoint-id vae-066fac616d4d546f2aws ec2 describe-verified-access-instance-logging-configurations \
--verified-access-instance-ids vai-0ce000c0b7643abea{
"Effect": "Allow",
"Action": [
"ec2:ModifyVerifiedAccessGroupPolicy",
"ec2:ModifyVerifiedAccessEndpointPolicy",
"ec2:CreateVerifiedAccessTrustProvider",
"ec2:AttachVerifiedAccessTrustProvider"
],
"Resource": "*"
}Grants unrestricted ability to rewrite Cedar policies and attach arbitrary trust providers, allowing an attacker to bypass all Verified Access controls.
{
"Effect": "Allow",
"Action": [
"ec2:DescribeVerifiedAccessInstances",
"ec2:DescribeVerifiedAccessGroups",
"ec2:DescribeVerifiedAccessEndpoints",
"ec2:DescribeVerifiedAccessTrustProviders",
"ec2:GetVerifiedAccessGroupPolicy",
"ec2:GetVerifiedAccessEndpointPolicy",
"ec2:DescribeVerifiedAccessInstanceLoggingConfigurations"
],
"Resource": "*"
}Permits enumeration and policy review without the ability to modify any access control configuration.
permit(principal, action, resource);Allows any authenticated user from any trust provider to access all endpoints in the group, regardless of group membership, device posture, or any other attribute.
permit(principal, action, resource)
when {
context.idc.groups has "c242c5b0-6081-1845-6fa8-6e0d9513c107" &&
context.jamf.risk == "LOW"
};Requires the user to be in a specific IAM Identity Center group AND have a Jamf-assessed low-risk device before access is granted.
Send Verified Access access logs to CloudWatch Logs, S3, or Kinesis Data Firehose for audit and incident response.
aws ec2 modify-verified-access-instance-logging-configuration \
--verified-access-instance-id vai-0ce000c0b7643abea \
--access-logs S3={Enabled=true,BucketName=my-va-logs-bucket,Prefix=verified-access/}Never rely on identity alone. Attach at least one device trust provider (CrowdStrike, Jamf, or JumpCloud) to enforce device posture checks.
Use group-level policies for broad requirements (identity group membership) and endpoint-level policies for application-specific conditions (MFA, device compliance).
Limit ec2:ModifyVerifiedAccess*, ec2:CreateVerifiedAccess*, and ec2:AttachVerifiedAccessTrustProvider to a small set of administrators. Use SCPs to prevent unauthorized changes.
Set up alarms for ModifyVerifiedAccessGroupPolicy, ModifyVerifiedAccessEndpointPolicy, CreateVerifiedAccessTrustProvider, AttachVerifiedAccessTrustProvider, and DeleteVerifiedAccessEndpoint.
Audit that OIDC issuer URL, client ID, and scopes point to your organization's IdP. Verify device trust provider integrations are active and reporting current posture data.
AWS Verified Access Security Card • Toc Consulting
Always obtain proper authorization before testing