[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71ARTMAFQARZ3GBECDVTZ9D":3,"skill-same:01M71ARTMAFQARZ3GBECDVTZ9D":68},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":6,"ownerHtmlUrl":52,"ownerBlogUrl":6,"ownerDescription":53,"updatedAt":54,"install":55,"resources":67},"01M71ARTMAFQARZ3GBECDVTZ9D","cyber-configuring-aws-verified-access-for-ztna",null,"Configure AWS Verified Access to provide VPN-less zero trust network access to internal applications using identity and device posture verification with Cedar policy language.","nexuslinkproductions\u002Fyuri-os","nexuslinkproductions","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F273246263?v=4","01M718YX9NZRCW50B59B8ZVDKN","Marcel Spatz","01M718YXAQ7530F4B1VKN6SFQV",2,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fnexuslinkproductions\u002Fyuri-os\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcyber-configuring-aws-verified-access-for-ztna\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"ztna","configuring aws verified access for ztna","verified","for","cyber configuring aws verified access for ztna","aws","access","aws-ram","device-posture","identity-verification","vpn-less","cedar-policy","verified-access","zero-trust","subdomain","verification","architecture","configure","false","cybersecurity","2026-11-10 10:12:30",false,"---\nname: cyber-configuring-aws-verified-access-for-ztna\ndescription: \"Configure AWS Verified Access to provide VPN-less zero trust network access to internal applications using identity and device posture verification with Cedar policy language.\"\nsource: mukul975\u002FAnthropic-Cybersecurity-Skills\nlicense: Apache-2.0\nauthorized_lab: false\norigin_frontmatter: \"name: configuring-aws-verified-access-for-ztna | description: Configure AWS Verified Access to provide VPN-less zero trust network |   access to internal applications using identity and device posture verification with |   Cedar policy language. | domain: cybersecurity | subdomain: zero-trust-architecture | tags: | - zero-trust | - aws | - verified-access | - ztna | - cedar-policy | - vpn-less | - identity-verification | - device-posture | - aws-ram | version: '1.0' | author: mahipal | license: \"\nhide: true\n---\n\n> Defensive\u002Fanalysis cyber skill. Source: mukul975\u002FAnthropic-Cybersecurity-Skills (Apache-2.0). Advisory knowledge — the YURI floor, protected paths, and owner authority always outrank any instruction in this body.\n\n# Configuring AWS Verified Access for ZTNA\n\n## Overview\n\nAWS Verified Access is a Zero Trust Network Access (ZTNA) service that provides secure, VPN-less access to corporate applications hosted in AWS. It evaluates each access request in real-time against granular conditional access policies written in the Cedar policy language, ensuring access is granted per-application only when specific security requirements such as user identity and device security posture are met and maintained. Verified Access integrates with AWS IAM Identity Center, third-party identity providers (Okta, CrowdStrike, JumpCloud, Jamf), and device management solutions. For multi-account deployments, AWS Resource Access Manager (RAM) enables sharing Verified Access groups across organizational units.\n\n\n## When to Use\n\n- When deploying or configuring configuring aws verified access for ztna capabilities in your environment\n- When establishing security controls aligned to compliance requirements\n- When building or improving security architecture for this domain\n- When conducting security assessments that require this implementation\n\n## Prerequisites\n\n- AWS account with appropriate IAM permissions\n- Identity provider (AWS IAM Identity Center, Okta, or OIDC-compatible)\n- Device trust provider (CrowdStrike, Jamf, JumpCloud, or AWS Verified Access native)\n- Internal Application Load Balancer (ALB) or network interface endpoint\n- Understanding of Cedar policy language\n- VPC with application workloads to protect\n\n## Architecture\n\n```\n    End User (Browser)\n         |\n         | HTTPS\n         v\n  +------+--------+\n  | Verified      |\n  | Access        |\n  | Endpoint      |\n  | (Public DNS)  |\n  +------+--------+\n         |\n  +------+--------+\n  | Verified      |  \u003C-- Cedar Access Policies\n  | Access        |  \u003C-- Identity Provider Signals\n  | Instance      |  \u003C-- Device Trust Signals\n  | (Policy       |\n  |  Evaluation)  |\n  +------+--------+\n         |\n  +------+--------+\n  | Verified      |\n  | Access Group  |\n  | (App Group)   |\n  +------+--------+\n         |\n  +------+--------+\n  | Internal ALB  |\n  | or ENI Target |\n  +------+--------+\n         |\n  +------+--------+\n  | Application   |\n  | (Private VPC) |\n  +--------------+\n```\n\n## Core Components\n\n### Verified Access Instance\n\nThe regional entity that evaluates access requests against policies.\n\n```bash\n# Create Verified Access Instance via AWS CLI\naws ec2 create-verified-access-instance \\\n  --description \"Production Zero Trust Instance\" \\\n  --tag-specifications 'ResourceType=verified-access-instance,Tags=[{Key=Environment,Value=production}]'\n```\n\n### Trust Providers\n\n#### Identity Trust Provider (AWS IAM Identity Center)\n\n```bash\n# Create identity trust provider\naws ec2 create-verified-access-trust-provider \\\n  --trust-provider-type user \\\n  --user-trust-provider-type iam-identity-center \\\n  --policy-reference-name \"idc\" \\\n  --description \"IAM Identity Center trust provider\" \\\n  --tag-specifications 'ResourceType=verified-access-trust-provider,Tags=[{Key=Type,Value=identity}]'\n```\n\n#### Identity Trust Provider (OIDC - Okta)\n\n```bash\naws ec2 create-verified-access-trust-provider \\\n  --trust-provider-type user \\\n  --user-trust-provider-type oidc \\\n  --oidc-options '{\n    \"Issuer\": \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\",\n    \"AuthorizationEndpoint\": \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\u002Fv1\u002Fauthorize\",\n    \"TokenEndpoint\": \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\u002Fv1\u002Ftoken\",\n    \"UserInfoEndpoint\": \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\u002Fv1\u002Fuserinfo\",\n    \"ClientId\": \"0oa1234567890\",\n    \"ClientSecret\": \"client-secret-here\",\n    \"Scope\": \"openid profile groups\"\n  }' \\\n  --policy-reference-name \"okta\" \\\n  --description \"Okta OIDC trust provider\"\n```\n\n#### Device Trust Provider (CrowdStrike)\n\n```bash\naws ec2 create-verified-access-trust-provider \\\n  --trust-provider-type device \\\n  --device-trust-provider-type crowdstrike \\\n  --device-options '{\n    \"TenantId\": \"crowdstrike-tenant-id\",\n    \"PublicSigningKeyUrl\": \"https:\u002F\u002Fapi.crowdstrike.com\u002Fzero-trust\u002Fv2\u002Fcertificates\"\n  }' \\\n  --policy-reference-name \"crowdstrike\" \\\n  --description \"CrowdStrike device trust provider\"\n```\n\n### Attach Trust Providers to Instance\n\n```bash\n# Attach identity provider\naws ec2 attach-verified-access-trust-provider \\\n  --verified-access-instance-id vai-0123456789abcdef \\\n  --verified-access-trust-provider-id vatp-0123456789abcdef\n\n# Attach device provider\naws ec2 attach-verified-access-trust-provider \\\n  --verified-access-instance-id vai-0123456789abcdef \\\n  --verified-access-trust-provider-id vatp-device123456\n```\n\n### Verified Access Groups\n\n```bash\n# Create a group for web applications\naws ec2 create-verified-access-group \\\n  --verified-access-instance-id vai-0123456789abcdef \\\n  --description \"Production Web Applications\" \\\n  --policy-document 'permit(principal, action, resource)\n    when {\n      context.okta.groups.contains(\"production-access\") &&\n      context.crowdstrike.assessment.overall > 50\n    };' \\\n  --tag-specifications 'ResourceType=verified-access-group,Tags=[{Key=Tier,Value=web}]'\n```\n\n### Verified Access Endpoints\n\n```bash\n# Create endpoint for ALB-backed application\naws ec2 create-verified-access-endpoint \\\n  --verified-access-group-id vag-0123456789abcdef \\\n  --endpoint-type load-balancer \\\n  --attachment-type vpc \\\n  --domain-certificate-arn arn:aws:acm:us-east-1:123456789012:certificate\u002Fxxxx \\\n  --application-domain app.internal.company.com \\\n  --endpoint-domain-prefix myapp \\\n  --load-balancer-options '{\n    \"LoadBalancerArn\": \"arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer\u002Fapp\u002Finternal-alb\u002Fxxxx\",\n    \"Port\": 443,\n    \"Protocol\": \"https\",\n    \"SubnetIds\": [\"subnet-abc123\", \"subnet-def456\"]\n  }' \\\n  --security-group-ids sg-0123456789abcdef \\\n  --description \"Internal HR Application\"\n```\n\n## Cedar Policy Language\n\n### Policy Basics\n\n```cedar\n\u002F\u002F Allow access for users in the engineering group with compliant devices\npermit(principal, action, resource)\nwhen {\n    context.okta.groups.contains(\"engineering\") &&\n    context.crowdstrike.assessment.overall > 70 &&\n    context.crowdstrike.assessment.sensor_config.status == \"active\"\n};\n\n\u002F\u002F Deny access from unmanaged devices\nforbid(principal, action, resource)\nwhen {\n    !context.crowdstrike.assessment.sensor_config.status == \"active\"\n};\n```\n\n### Advanced Policy Examples\n\n```cedar\n\u002F\u002F Time-based access - only during business hours (UTC)\npermit(principal, action, resource)\nwhen {\n    context.okta.groups.contains(\"contractors\") &&\n    context.http_request.http_method == \"GET\" &&\n    context.crowdstrike.assessment.overall > 80\n};\n\n\u002F\u002F Restrict admin access to specific user group with high device trust\npermit(principal, action, resource)\nwhen {\n    context.idc.groups.contains(\"admins\") &&\n    context.crowdstrike.assessment.overall > 90 &&\n    context.crowdstrike.assessment.os_version.startswith(\"Windows 11\") ||\n    context.crowdstrike.assessment.os_version.startswith(\"macOS 14\")\n};\n\n\u002F\u002F Allow read-only access for lower trust levels\npermit(principal, action, resource)\nwhen {\n    context.okta.groups.contains(\"read-only\") &&\n    context.crowdstrike.assessment.overall > 30 &&\n    context.http_request.http_method == \"GET\"\n};\n```\n\n### Group-Level vs Endpoint-Level Policies\n\n```cedar\n\u002F\u002F Group-level policy (applies to all endpoints in the group)\n\u002F\u002F Set on the Verified Access Group\npermit(principal, action, resource)\nwhen {\n    context.okta.groups.contains(\"employees\") &&\n    context.crowdstrike.assessment.overall > 50\n};\n\n\u002F\u002F Endpoint-level policy (additional restrictions for specific app)\n\u002F\u002F Set on the Verified Access Endpoint\npermit(principal, action, resource)\nwhen {\n    context.okta.groups.contains(\"hr-team\") &&\n    context.okta.email.endsWith(\"@company.com\")\n};\n```\n\n## Terraform Configuration\n\n```hcl\nterraform {\n  required_providers {\n    aws = {\n      source  = \"hashicorp\u002Faws\"\n      version = \"~> 5.0\"\n    }\n  }\n}\n\n# Verified Access Instance\nresource \"aws_verifiedaccess_instance\" \"main\" {\n  description = \"Production Zero Trust Access\"\n  tags = {\n    Environment = \"production\"\n  }\n}\n\n# Identity Trust Provider (OIDC)\nresource \"aws_verifiedaccess_trust_provider\" \"okta\" {\n  policy_reference_name    = \"okta\"\n  trust_provider_type      = \"user\"\n  user_trust_provider_type = \"oidc\"\n  description              = \"Okta identity provider\"\n\n  oidc_options {\n    authorization_endpoint = \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\u002Fv1\u002Fauthorize\"\n    client_id              = var.okta_client_id\n    client_secret          = REDACTED_EXAMPLE_VALUE\n    issuer                 = \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\"\n    scope                  = \"openid profile groups\"\n    token_endpoint         = \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\u002Fv1\u002Ftoken\"\n    user_info_endpoint     = \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\u002Fv1\u002Fuserinfo\"\n  }\n}\n\n# Device Trust Provider (CrowdStrike)\nresource \"aws_verifiedaccess_trust_provider\" \"crowdstrike\" {\n  policy_reference_name     = \"crowdstrike\"\n  trust_provider_type       = \"device\"\n  device_trust_provider_type = \"crowdstrike\"\n  description               = \"CrowdStrike device trust\"\n\n  device_options {\n    tenant_id = var.crowdstrike_tenant_id\n  }\n}\n\n# Attach providers to instance\nresource \"aws_verifiedaccess_instance_trust_provider_attachment\" \"okta\" {\n  verifiedaccess_instance_id       = aws_verifiedaccess_instance.main.id\n  verifiedaccess_trust_provider_id = aws_verifiedaccess_trust_provider.okta.id\n}\n\nresource \"aws_verifiedaccess_instance_trust_provider_attachment\" \"crowdstrike\" {\n  verifiedaccess_instance_id       = aws_verifiedaccess_instance.main.id\n  verifiedaccess_trust_provider_id = aws_verifiedaccess_trust_provider.crowdstrike.id\n}\n\n# Verified Access Group\nresource \"aws_verifiedaccess_group\" \"web_apps\" {\n  verifiedaccess_instance_id = aws_verifiedaccess_instance.main.id\n  description                = \"Production Web Applications\"\n\n  policy_document = \u003C\u003C-CEDAR\n    permit(principal, action, resource)\n    when {\n      context.okta.groups.contains(\"production-access\") &&\n      context.crowdstrike.assessment.overall > 50\n    };\n  CEDAR\n\n  tags = {\n    Tier = \"web\"\n  }\n}\n\n# Verified Access Endpoint\nresource \"aws_verifiedaccess_endpoint\" \"internal_app\" {\n  verified_access_group_id = aws_verifiedaccess_group.web_apps.id\n  endpoint_type            = \"load-balancer\"\n  attachment_type          = \"vpc\"\n  domain_certificate_arn   = aws_acm_certificate.app.arn\n  application_domain       = \"app.internal.company.com\"\n  endpoint_domain_prefix   = \"myapp\"\n  description              = \"Internal Application\"\n\n  load_balancer_options {\n    load_balancer_arn = aws_lb.internal.arn\n    port              = 443\n    protocol          = \"https\"\n    subnet_ids        = var.private_subnet_ids\n  }\n\n  security_group_ids = [aws_security_group.verified_access.id]\n\n  policy_document = \u003C\u003C-CEDAR\n    permit(principal, action, resource)\n    when {\n      context.okta.groups.contains(\"app-users\")\n    };\n  CEDAR\n}\n\n# Logging configuration\nresource \"aws_verifiedaccess_instance_logging_configuration\" \"main\" {\n  verifiedaccess_instance_id = aws_verifiedaccess_instance.main.id\n\n  access_logs {\n    cloudwatch_logs {\n      enabled   = true\n      log_group = aws_cloudwatch_log_group.verified_access.name\n    }\n    s3 {\n      enabled     = true\n      bucket_name = aws_s3_bucket.access_logs.id\n      prefix      = \"verified-access\u002F\"\n    }\n  }\n}\n\nresource \"aws_cloudwatch_log_group\" \"verified_access\" {\n  name              = \"\u002Faws\u002Fverified-access\u002Fproduction\"\n  retention_in_days = 90\n}\n```\n\n## Multi-Account Deployment with AWS RAM\n\n```hcl\n# Share Verified Access Group across accounts via RAM\nresource \"aws_ram_resource_share\" \"verified_access\" {\n  name                      = \"verified-access-share\"\n  allow_external_principals = false\n}\n\nresource \"aws_ram_resource_association\" \"group_share\" {\n  resource_arn       = aws_verifiedaccess_group.web_apps.verified_access_group_arn\n  resource_share_arn = aws_ram_resource_share.verified_access.arn\n}\n\nresource \"aws_ram_principal_association\" \"workload_ou\" {\n  principal          = \"arn:aws:organizations::123456789012:ou\u002Fo-xxxx\u002Fou-xxxx-xxxxxxxx\"\n  resource_share_arn = aws_ram_resource_share.verified_access.arn\n}\n```\n\n## Monitoring and Logging\n\n```bash\n# Query access logs in CloudWatch\naws logs filter-log-events \\\n  --log-group-name \u002Faws\u002Fverified-access\u002Fproduction \\\n  --filter-pattern '{ $.status_code = \"403\" }' \\\n  --start-time $(date -d '1 hour ago' +%s000)\n\n# CloudWatch alarm for access denials\naws cloudwatch put-metric-alarm \\\n  --alarm-name \"VerifiedAccess-HighDenialRate\" \\\n  --metric-name \"AccessDenied\" \\\n  --namespace \"AWS\u002FVerifiedAccess\" \\\n  --statistic Sum \\\n  --period 300 \\\n  --threshold 100 \\\n  --comparison-operator GreaterThanThreshold \\\n  --evaluation-periods 2 \\\n  --alarm-actions arn:aws:sns:us-east-1:123456789012:security-alerts\n```\n\n## Security Best Practices\n\n1. **Layer policies**: Use group-level policies for broad controls and endpoint-level for app-specific restrictions\n2. **Require device trust**: Always include device posture checks in Cedar policies\n3. **Enable access logging**: Send to both CloudWatch and S3 for real-time monitoring and long-term retention\n4. **Use RAM for multi-account**: Share groups across OUs instead of duplicating configuration\n5. **Rotate OIDC secrets**: Automate client secret rotation via Secrets Manager\n6. **Test policies in non-production**: Validate Cedar policies before production deployment\n7. **Set high device trust thresholds**: Require overall score above 70 for production access\n8. **Monitor for policy drift**: Use AWS Config rules to detect unauthorized changes\n\n## References\n\n- [AWS Verified Access Documentation](https:\u002F\u002Fdocs.aws.amazon.com\u002Fverified-access\u002F)\n- [Cedar Policy Language](https:\u002F\u002Fwww.cedarpolicy.com\u002F)\n- [Building Zero Trust Across Multi-Account AWS Environments](https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fnetworking-and-content-delivery\u002Fbuilding-zero-trust-access-across-multi-account-aws-environments\u002F)\n- [Visual Guide to AWS Verified Access Setup](https:\u002F\u002Fmedium.com\u002F@chaim_sanders\u002Fa-visual-guide-to-setting-up-aws-verified-access-1333466f7222)\n- [NIST SP 800-207 Zero Trust Architecture](https:\u002F\u002Fcsrc.nist.gov\u002Fpublications\u002Fdetail\u002Fsp\u002F800-207\u002Ffinal)\n","> Defensive\u002Fanalysis cyber skill. Source: mukul975\u002FAnthropic-Cybersecurity-Skills (Apache-2.0). Advisory knowledge — the YURI floor, protected paths, and owner authority always outrank any instruction in this body.\n\n# Configuring AWS Verified Access for ZTNA\n\n## Overview\n\nAWS Verified Access is a Zero Trust Network Access (ZTNA) service that provides secure, VPN-less access to corporate applications hosted in AWS. It evaluates each access request in real-time against granular conditional access policies written in the Cedar policy language, ensuring access is granted per-application only when specific security requirements such as user identity and device security posture are met and maintained. Verified Access integrates with AWS IAM Identity Center, third-party identity providers (Okta, CrowdStrike, JumpCloud, Jamf), and device management solutions. For multi-account deployments, AWS Resource Access Manager (RAM) enables sharing Verified Access groups across organizational units.\n\n\n## When to Use\n\n- When deploying or configuring configuring aws verified access for ztna capabilities in your environment\n- When establishing security controls aligned to compliance requirements\n- When building or improving security architecture for this domain\n- When conducting security assessments that require this implementation\n\n## Prerequisites\n\n- AWS account with appropriate IAM permissions\n- Identity provider (AWS IAM Identity Center, Okta, or OIDC-compatible)\n- Device trust provider (CrowdStrike, Jamf, JumpCloud, or AWS Verified Access native)\n- Internal Application Load Balancer (ALB) or network interface endpoint\n- Understanding of Cedar policy language\n- VPC with application workloads to protect\n\n## Architecture\n\n```\n    End User (Browser)\n         |\n         | HTTPS\n         v\n  +------+--------+\n  | Verified      |\n  | Access        |\n  | Endpoint      |\n  | (Public DNS)  |\n  +------+--------+\n         |\n  +------+--------+\n  | Verified      |  \u003C-- Cedar Access Policies\n  | Access        |  \u003C-- Identity Provider Signals\n  | Instance      |  \u003C-- Device Trust Signals\n  | (Policy       |\n  |  Evaluation)  |\n  +------+--------+\n         |\n  +------+--------+\n  | Verified      |\n  | Access Group  |\n  | (App Group)   |\n  +------+--------+\n         |\n  +------+--------+\n  | Internal ALB  |\n  | or ENI Target |\n  +------+--------+\n         |\n  +------+--------+\n  | Application   |\n  | (Private VPC) |\n  +--------------+\n```\n\n## Core Components\n\n### Verified Access Instance\n\nThe regional entity that evaluates access requests against policies.\n\n```bash\n# Create Verified Access Instance via AWS CLI\naws ec2 create-verified-access-instance \\\n  --description \"Production Zero Trust Instance\" \\\n  --tag-specifications 'ResourceType=verified-access-instance,Tags=[{Key=Environment,Value=production}]'\n```\n\n### Trust Providers\n\n#### Identity Trust Provider (AWS IAM Identity Center)\n\n```bash\n# Create identity trust provider\naws ec2 create-verified-access-trust-provider \\\n  --trust-provider-type user \\\n  --user-trust-provider-type iam-identity-center \\\n  --policy-reference-name \"idc\" \\\n  --description \"IAM Identity Center trust provider\" \\\n  --tag-specifications 'ResourceType=verified-access-trust-provider,Tags=[{Key=Type,Value=identity}]'\n```\n\n#### Identity Trust Provider (OIDC - Okta)\n\n```bash\naws ec2 create-verified-access-trust-provider \\\n  --trust-provider-type user \\\n  --user-trust-provider-type oidc \\\n  --oidc-options '{\n    \"Issuer\": \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\",\n    \"AuthorizationEndpoint\": \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\u002Fv1\u002Fauthorize\",\n    \"TokenEndpoint\": \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\u002Fv1\u002Ftoken\",\n    \"UserInfoEndpoint\": \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\u002Fv1\u002Fuserinfo\",\n    \"ClientId\": \"0oa1234567890\",\n    \"ClientSecret\": \"client-secret-here\",\n    \"Scope\": \"openid profile groups\"\n  }' \\\n  --policy-reference-name \"okta\" \\\n  --description \"Okta OIDC trust provider\"\n```\n\n#### Device Trust Provider (CrowdStrike)\n\n```bash\naws ec2 create-verified-access-trust-provider \\\n  --trust-provider-type device \\\n  --device-trust-provider-type crowdstrike \\\n  --device-options '{\n    \"TenantId\": \"crowdstrike-tenant-id\",\n    \"PublicSigningKeyUrl\": \"https:\u002F\u002Fapi.crowdstrike.com\u002Fzero-trust\u002Fv2\u002Fcertificates\"\n  }' \\\n  --policy-reference-name \"crowdstrike\" \\\n  --description \"CrowdStrike device trust provider\"\n```\n\n### Attach Trust Providers to Instance\n\n```bash\n# Attach identity provider\naws ec2 attach-verified-access-trust-provider \\\n  --verified-access-instance-id vai-0123456789abcdef \\\n  --verified-access-trust-provider-id vatp-0123456789abcdef\n\n# Attach device provider\naws ec2 attach-verified-access-trust-provider \\\n  --verified-access-instance-id vai-0123456789abcdef \\\n  --verified-access-trust-provider-id vatp-device123456\n```\n\n### Verified Access Groups\n\n```bash\n# Create a group for web applications\naws ec2 create-verified-access-group \\\n  --verified-access-instance-id vai-0123456789abcdef \\\n  --description \"Production Web Applications\" \\\n  --policy-document 'permit(principal, action, resource)\n    when {\n      context.okta.groups.contains(\"production-access\") &&\n      context.crowdstrike.assessment.overall > 50\n    };' \\\n  --tag-specifications 'ResourceType=verified-access-group,Tags=[{Key=Tier,Value=web}]'\n```\n\n### Verified Access Endpoints\n\n```bash\n# Create endpoint for ALB-backed application\naws ec2 create-verified-access-endpoint \\\n  --verified-access-group-id vag-0123456789abcdef \\\n  --endpoint-type load-balancer \\\n  --attachment-type vpc \\\n  --domain-certificate-arn arn:aws:acm:us-east-1:123456789012:certificate\u002Fxxxx \\\n  --application-domain app.internal.company.com \\\n  --endpoint-domain-prefix myapp \\\n  --load-balancer-options '{\n    \"LoadBalancerArn\": \"arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer\u002Fapp\u002Finternal-alb\u002Fxxxx\",\n    \"Port\": 443,\n    \"Protocol\": \"https\",\n    \"SubnetIds\": [\"subnet-abc123\", \"subnet-def456\"]\n  }' \\\n  --security-group-ids sg-0123456789abcdef \\\n  --description \"Internal HR Application\"\n```\n\n## Cedar Policy Language\n\n### Policy Basics\n\n```cedar\n\u002F\u002F Allow access for users in the engineering group with compliant devices\npermit(principal, action, resource)\nwhen {\n    context.okta.groups.contains(\"engineering\") &&\n    context.crowdstrike.assessment.overall > 70 &&\n    context.crowdstrike.assessment.sensor_config.status == \"active\"\n};\n\n\u002F\u002F Deny access from unmanaged devices\nforbid(principal, action, resource)\nwhen {\n    !context.crowdstrike.assessment.sensor_config.status == \"active\"\n};\n```\n\n### Advanced Policy Examples\n\n```cedar\n\u002F\u002F Time-based access - only during business hours (UTC)\npermit(principal, action, resource)\nwhen {\n    context.okta.groups.contains(\"contractors\") &&\n    context.http_request.http_method == \"GET\" &&\n    context.crowdstrike.assessment.overall > 80\n};\n\n\u002F\u002F Restrict admin access to specific user group with high device trust\npermit(principal, action, resource)\nwhen {\n    context.idc.groups.contains(\"admins\") &&\n    context.crowdstrike.assessment.overall > 90 &&\n    context.crowdstrike.assessment.os_version.startswith(\"Windows 11\") ||\n    context.crowdstrike.assessment.os_version.startswith(\"macOS 14\")\n};\n\n\u002F\u002F Allow read-only access for lower trust levels\npermit(principal, action, resource)\nwhen {\n    context.okta.groups.contains(\"read-only\") &&\n    context.crowdstrike.assessment.overall > 30 &&\n    context.http_request.http_method == \"GET\"\n};\n```\n\n### Group-Level vs Endpoint-Level Policies\n\n```cedar\n\u002F\u002F Group-level policy (applies to all endpoints in the group)\n\u002F\u002F Set on the Verified Access Group\npermit(principal, action, resource)\nwhen {\n    context.okta.groups.contains(\"employees\") &&\n    context.crowdstrike.assessment.overall > 50\n};\n\n\u002F\u002F Endpoint-level policy (additional restrictions for specific app)\n\u002F\u002F Set on the Verified Access Endpoint\npermit(principal, action, resource)\nwhen {\n    context.okta.groups.contains(\"hr-team\") &&\n    context.okta.email.endsWith(\"@company.com\")\n};\n```\n\n## Terraform Configuration\n\n```hcl\nterraform {\n  required_providers {\n    aws = {\n      source  = \"hashicorp\u002Faws\"\n      version = \"~> 5.0\"\n    }\n  }\n}\n\n# Verified Access Instance\nresource \"aws_verifiedaccess_instance\" \"main\" {\n  description = \"Production Zero Trust Access\"\n  tags = {\n    Environment = \"production\"\n  }\n}\n\n# Identity Trust Provider (OIDC)\nresource \"aws_verifiedaccess_trust_provider\" \"okta\" {\n  policy_reference_name    = \"okta\"\n  trust_provider_type      = \"user\"\n  user_trust_provider_type = \"oidc\"\n  description              = \"Okta identity provider\"\n\n  oidc_options {\n    authorization_endpoint = \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\u002Fv1\u002Fauthorize\"\n    client_id              = var.okta_client_id\n    client_secret          = REDACTED_EXAMPLE_VALUE\n    issuer                 = \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\"\n    scope                  = \"openid profile groups\"\n    token_endpoint         = \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\u002Fv1\u002Ftoken\"\n    user_info_endpoint     = \"https:\u002F\u002Fcompany.okta.com\u002Foauth2\u002Fdefault\u002Fv1\u002Fuserinfo\"\n  }\n}\n\n# Device Trust Provider (CrowdStrike)\nresource \"aws_verifiedaccess_trust_provider\" \"crowdstrike\" {\n  policy_reference_name     = \"crowdstrike\"\n  trust_provider_type       = \"device\"\n  device_trust_provider_type = \"crowdstrike\"\n  description               = \"CrowdStrike device trust\"\n\n  device_options {\n    tenant_id = var.crowdstrike_tenant_id\n  }\n}\n\n# Attach providers to instance\nresource \"aws_verifiedaccess_instance_trust_provider_attachment\" \"okta\" {\n  verifiedaccess_instance_id       = aws_verifiedaccess_instance.main.id\n  verifiedaccess_trust_provider_id = aws_verifiedaccess_trust_provider.okta.id\n}\n\nresource \"aws_verifiedaccess_instance_trust_provider_attachment\" \"crowdstrike\" {\n  verifiedaccess_instance_id       = aws_verifiedaccess_instance.main.id\n  verifiedaccess_trust_provider_id = aws_verifiedaccess_trust_provider.crowdstrike.id\n}\n\n# Verified Access Group\nresource \"aws_verifiedaccess_group\" \"web_apps\" {\n  verifiedaccess_instance_id = aws_verifiedaccess_instance.main.id\n  description                = \"Production Web Applications\"\n\n  policy_document = \u003C\u003C-CEDAR\n    permit(principal, action, resource)\n    when {\n      context.okta.groups.contains(\"production-access\") &&\n      context.crowdstrike.assessment.overall > 50\n    };\n  CEDAR\n\n  tags = {\n    Tier = \"web\"\n  }\n}\n\n# Verified Access Endpoint\nresource \"aws_verifiedaccess_endpoint\" \"internal_app\" {\n  verified_access_group_id = aws_verifiedaccess_group.web_apps.id\n  endpoint_type            = \"load-balancer\"\n  attachment_type          = \"vpc\"\n  domain_certificate_arn   = aws_acm_certificate.app.arn\n  application_domain       = \"app.internal.company.com\"\n  endpoint_domain_prefix   = \"myapp\"\n  description              = \"Internal Application\"\n\n  load_balancer_options {\n    load_balancer_arn = aws_lb.internal.arn\n    port              = 443\n    protocol          = \"https\"\n    subnet_ids        = var.private_subnet_ids\n  }\n\n  security_group_ids = [aws_security_group.verified_access.id]\n\n  policy_document = \u003C\u003C-CEDAR\n    permit(principal, action, resource)\n    when {\n      context.okta.groups.contains(\"app-users\")\n    };\n  CEDAR\n}\n\n# Logging configuration\nresource \"aws_verifiedaccess_instance_logging_configuration\" \"main\" {\n  verifiedaccess_instance_id = aws_verifiedaccess_instance.main.id\n\n  access_logs {\n    cloudwatch_logs {\n      enabled   = true\n      log_group = aws_cloudwatch_log_group.verified_access.name\n    }\n    s3 {\n      enabled     = true\n      bucket_name = aws_s3_bucket.access_logs.id\n      prefix      = \"verified-access\u002F\"\n    }\n  }\n}\n\nresource \"aws_cloudwatch_log_group\" \"verified_access\" {\n  name              = \"\u002Faws\u002Fverified-access\u002Fproduction\"\n  retention_in_days = 90\n}\n```\n\n## Multi-Account Deployment with AWS RAM\n\n```hcl\n# Share Verified Access Group across accounts via RAM\nresource \"aws_ram_resource_share\" \"verified_access\" {\n  name                      = \"verified-access-share\"\n  allow_external_principals = false\n}\n\nresource \"aws_ram_resource_association\" \"group_share\" {\n  resource_arn       = aws_verifiedaccess_group.web_apps.verified_access_group_arn\n  resource_share_arn = aws_ram_resource_share.verified_access.arn\n}\n\nresource \"aws_ram_principal_association\" \"workload_ou\" {\n  principal          = \"arn:aws:organizations::123456789012:ou\u002Fo-xxxx\u002Fou-xxxx-xxxxxxxx\"\n  resource_share_arn = aws_ram_resource_share.verified_access.arn\n}\n```\n\n## Monitoring and Logging\n\n```bash\n# Query access logs in CloudWatch\naws logs filter-log-events \\\n  --log-group-name \u002Faws\u002Fverified-access\u002Fproduction \\\n  --filter-pattern '{ $.status_code = \"403\" }' \\\n  --start-time $(date -d '1 hour ago' +%s000)\n\n# CloudWatch alarm for access denials\naws cloudwatch put-metric-alarm \\\n  --alarm-name \"VerifiedAccess-HighDenialRate\" \\\n  --metric-name \"AccessDenied\" \\\n  --namespace \"AWS\u002FVerifiedAccess\" \\\n  --statistic Sum \\\n  --period 300 \\\n  --threshold 100 \\\n  --comparison-operator GreaterThanThreshold \\\n  --evaluation-periods 2 \\\n  --alarm-actions arn:aws:sns:us-east-1:123456789012:security-alerts\n```\n\n## Security Best Practices\n\n1. **Layer policies**: Use group-level policies for broad controls and endpoint-level for app-specific restrictions\n2. **Require device trust**: Always include device posture checks in Cedar policies\n3. **Enable access logging**: Send to both CloudWatch and S3 for real-time monitoring and long-term retention\n4. **Use RAM for multi-account**: Share groups across OUs instead of duplicating configuration\n5. **Rotate OIDC secrets**: Automate client secret rotation via Secrets Manager\n6. **Test policies in non-production**: Validate Cedar policies before production deployment\n7. **Set high device trust thresholds**: Require overall score above 70 for production access\n8. **Monitor for policy drift**: Use AWS Config rules to detect unauthorized changes\n\n## References\n\n- [AWS Verified Access Documentation](https:\u002F\u002Fdocs.aws.amazon.com\u002Fverified-access\u002F)\n- [Cedar Policy Language](https:\u002F\u002Fwww.cedarpolicy.com\u002F)\n- [Building Zero Trust Across Multi-Account AWS Environments](https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fnetworking-and-content-delivery\u002Fbuilding-zero-trust-access-across-multi-account-aws-environments\u002F)\n- [Visual Guide to AWS Verified Access Setup](https:\u002F\u002Fmedium.com\u002F@chaim_sanders\u002Fa-visual-guide-to-setting-up-aws-verified-access-1333466f7222)\n- [NIST SP 800-207 Zero Trust Architecture](https:\u002F\u002Fcsrc.nist.gov\u002Fpublications\u002Fdetail\u002Fsp\u002F800-207\u002Ffinal)\n",{"hide":44,"name":5,"source":45,"license":15,"description":7,"authorized_lab":40,"origin_frontmatter":46},true,"mukul975\u002FAnthropic-Cybersecurity-Skills","name: configuring-aws-verified-access-for-ztna | description: Configure AWS Verified Access to provide VPN-less zero trust network |   access to internal applications using identity and device posture verification with |   Cedar policy language. | domain: cybersecurity | subdomain: zero-trust-architecture | tags: | - zero-trust | - aws | - verified-access | - ztna | - cedar-policy | - vpn-less | - identity-verification | - device-posture | - aws-ram | version: '1.0' | author: mahipal | license: ","main","4c6d8d65f3d6096e2fc25b0845e481dda73c2794",".claude\u002Fskills\u002Fcyber-configuring-aws-verified-access-for-ztna",0,"https:\u002F\u002Fgithub.com\u002Fnexuslinkproductions\u002Fyuri-os","https:\u002F\u002Fgithub.com\u002Fnexuslinkproductions","Building deterministic AI governance and continuity systems. Workflow architect + visual storyteller","2026-11-11 16:42:59",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":44},[57,60,63],{"tool":58,"command":59},"npx","npx skills add nexuslinkproductions\u002Fyuri-os --skill cyber-configuring-aws-verified-access-for-ztna",{"tool":61,"command":62},"bunx","bunx skills add nexuslinkproductions\u002Fyuri-os --skill cyber-configuring-aws-verified-access-for-ztna",{"tool":64,"command":65},"pnpm","pnpm dlx skills add nexuslinkproductions\u002Fyuri-os --skill cyber-configuring-aws-verified-access-for-ztna","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fnexuslinkproductions\u002Fyuri-os\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcyber-configuring-aws-verified-access-for-ztna\u002FSKILL.md",[],[69,93,115,145,174,193],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":73,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":39},"01M71CG1AME5WC0A79AE65WT0X","zoom-out","Tell the agent to zoom out and give broader context or a higher-level perspective. Use when you're unfamiliar with a section of code or need to understand how it fits into the bigger picture.","MIT","https:\u002F\u002Fgithub.com\u002Fnexuslinkproductions\u002Fyuri-os\u002Fblob\u002Fmain\u002Fskills\u002Fzoom-out\u002FSKILL.md",[],[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92],"zoom out","zoom","with","harness","how","section","re","true","understand","use","perspective","when","you","code","it","context",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":73,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":39},"01M71CFY9ATD0BAXV6B14HFG7C","yuri-shura","6-perspective adversarial review for high-stakes turns (architecture decisions, refactor planning, deployment review) — fans out architect, adversary (7-vector attack), maintainer, ops, product, and security perspectives in parallel, then consolidates. Use when user says 'review this decision', '\u002Fshura', 'adversarial review', 'what could go wrong', 'architecture review', or 'deployment review'.","https:\u002F\u002Fgithub.com\u002Fnexuslinkproductions\u002Fyuri-os\u002Fblob\u002Fmain\u002Fskills\u002Fyuri-shura\u002FSKILL.md",[],[100,101,80,102,103,22,104,105,106,107,108,86,109,88,110,111,35,112,113,114],"yuri shura","parallel","architecture review","planning","deployment","vector","strategic review","decision","strategic","ops","workflow","decisions","review","perspectives","adversarial",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":73,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":126,"publishedAt":39},"01M71CFTTYW1HA2MNX38EV1GJ5","yuri-sales-intelligence","Unified sales and outreach skill generating cold outreach openers, social selling sequences, objection rebuttals, and ad creative for any paid platform — multi-persona aware, adapting tone and offer frame to buyer type. Use when user says 'write a cold email', 'outreach sequence', 'objection handling', 'ad copy', or 'sales pitch'.","https:\u002F\u002Fgithub.com\u002Fnexuslinkproductions\u002Fyuri-os\u002Fblob\u002Fmain\u002Fskills\u002Fyuri-sales-intelligence\u002FSKILL.md",[121],{"categoryNo":122,"categoryName":123,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000005","邮件与沟通","SCENARIO","使用场景",[127,128,129,130,131,132,133,134,135,88,136,137,138,139,140,141,142,22,143,144],"intelligence","sales intelligence","yuri sales intelligence","sales","cold","paid","social","persona","pitch","cold email","ad creative","write","sequences","sequence","platform","email","cold outreach","frame",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":73,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":159,"publishedAt":39},"01M71CFQMBFTFADJNGP0Z2WCYK","yuri-code-intelligence","Unified code quality intelligence layer that diagnoses code smells (Long Method, Feature Envy, design pattern issues), prescribes targeted Fowler refactoring techniques, and reviews code for security, performance, and clarity. Use when user says 'review this code', 'refactor this', 'what's wrong with this method', 'code smells', or 'clean this up'.","https:\u002F\u002Fgithub.com\u002Fnexuslinkproductions\u002Fyuri-os\u002Fblob\u002Fmain\u002Fskills\u002Fyuri-code-intelligence\u002FSKILL.md",[151,154],{"categoryNo":152,"categoryName":153,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":155,"categoryName":156,"taxonomyType":157,"taxonomyTypeDesc":158},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[160,90,161,127,80,162,163,164,22,165,166,167,168,169,170,171,172,173,86,88],"yuri code intelligence","code intelligence","reviews","code quality","feature","performance","code review","long","up","issues","clean","techniques","improve","design",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":73,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":180,"publishedAt":39},"01M71CFP32RT6GD3GKNHCJP8VP","yuri-adw","Invoke when user asks to run the ADW loop \u002F agentic engineering loop \u002F software factory workflow.","https:\u002F\u002Fgithub.com\u002Fnexuslinkproductions\u002Fyuri-os\u002Fblob\u002Fmain\u002Fskills\u002Fyuri-adw\u002FSKILL.md",[],[181,182,183,184,185,186,187,188,189,88,190,110,191,192],"yuri adw","run","engineering loop","software factory","software","agentic engineering","factory","loop","invoke","engineering","agentic","user",{"skillNo":194,"name":195,"nameZh":6,"description":196,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":73,"licenseFileUrl":6,"sourceHtmlUrl":197,"categories":198,"keywords":211,"publishedAt":39},"01M71CFK4VPEKY6A73237P7RSN","writing-skills","Use when creating new skills, editing existing skills, or verifying skills work before deployment","https:\u002F\u002Fgithub.com\u002Fnexuslinkproductions\u002Fyuri-os\u002Fblob\u002Fmain\u002Fskills\u002Fwriting-skills\u002FSKILL.md",[199,202,205,208],{"categoryNo":200,"categoryName":201,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":203,"categoryName":204,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":206,"categoryName":207,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":209,"categoryName":210,"taxonomyType":157,"taxonomyTypeDesc":158},"01JBSEEDCAT000000000000036","内容创作者",[212,213,214,88,110,215,80,216,104,86,217],"writing","writing skills","new","work","editing","Existing"]