AWS IAM Access Analyzer
Manage analyzer records and exercise the emulator's policy-validation responses.
Plan: Pro39 of 39 operations implemented2Known differences
Validation follows the emulator's own rules, and generated policies are synthetic: neither is a security assessment of real access.
Example checked on Vera 1.2.2, 8 November 2026. Each coverage note names its own evidence and date.
Connect
Section titled “Connect”Activate your license key and start the emulator with the Vera launcher, as in Activate Pro, then run this in a terminal of its own, from an empty scratch directory. It gives the official AWS CLI dummy credentials and a config file of its own, so no AWS account is needed and your own AWS profile isn't touched.
export VERA_ENDPOINT="http://localhost:5003"export AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=testexport AWS_REGION=us-east-1 AWS_DEFAULT_REGION=us-east-1export AWS_SHARED_CREDENTIALS_FILE=/dev/nullexport AWS_EC2_METADATA_DISABLED=trueexport AWS_PAGER="" AWS_CLI_AUTO_PROMPT=offunset AWS_PROFILE AWS_DEFAULT_PROFILEunset AWS_SESSION_TOKEN AWS_SECURITY_TOKENunset AWS_WEB_IDENTITY_TOKEN_FILE AWS_ROLE_ARN AWS_ROLE_SESSION_NAMEunset AWS_CONTAINER_CREDENTIALS_FULL_URIunset AWS_CONTAINER_CREDENTIALS_RELATIVE_URIcat > vera-aws-config <<'EOF'[default]region = us-east-1output = jsoncli_binary_format = base64s3 = addressing_style = pathEOFexport AWS_CONFIG_FILE="$PWD/vera-aws-config"When you've finished every example in this terminal, close it and delete vera-aws-config, not before.
The emulator serves IAM Access Analyzer’s 2019-11-01 API over the REST JSON protocol, through the AWS CLI’s accessanalyzer commands. Analyzer ARNs name the account configured on your Vera instance, such as arn:aws:access-analyzer:us-east-1:123456789012:analyzer/docs-example-analyzer.
Example
Section titled “Example”Create an account analyzer and read it back:
ANALYZER_ARN=$(aws --endpoint-url "$VERA_ENDPOINT" accessanalyzer create-analyzer \ --analyzer-name docs-example-analyzer --type ACCOUNT --tags '{"purpose":"documentation"}' \ --query arn --output text)aws --endpoint-url "$VERA_ENDPOINT" accessanalyzer get-analyzer --analyzer-name docs-example-analyzerThe analyzer is active at once. The output includes these fields, and createdAt differs on every run:
{ "analyzer": { "arn": "arn:aws:access-analyzer:us-east-1:123456789012:analyzer/docs-example-analyzer", "name": "docs-example-analyzer", "type": "ACCOUNT", "createdAt": "2026-11-03T18:09:54+00:00", "tags": { "purpose": "documentation" }, "status": "ACTIVE" }}List its findings, and validate an identity policy that allows reading objects from one bucket. The bucket ARN is only text in the policy, so no bucket has to exist.
aws --endpoint-url "$VERA_ENDPOINT" accessanalyzer list-findings --analyzer-arn "$ANALYZER_ARN"aws --endpoint-url "$VERA_ENDPOINT" accessanalyzer validate-policy --policy-type IDENTITY_POLICY \ --policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"s3:GetObject","Resource":"arn:aws:s3:::docs-example-bucket/*"}]}'Both return an empty list, {"findings":[]}. An empty list from the emulator doesn’t mean the policy is safe: see Limitations.
To clean up, delete the analyzer. The command prints nothing.
aws --endpoint-url "$VERA_ENDPOINT" accessanalyzer delete-analyzer --analyzer-name docs-example-analyzerSupported features
Section titled “Supported features”- Account analyzers, created with tags, read and deleted.
- Findings:
ListFindingsanswers for an analyzer. A new one’s list is empty. - Policy validation:
ValidatePolicyreturned no findings for the scoped policy above. For a second policy, with"Resource": "*", it returned oneSECURITY_WARNING, withissueCode: WILDCARD_RESOURCEandfindingDetails: "Allow statement at index 0 grants access to all resources." - Policy generation, synthetic: a job started with
StartPolicyGenerationfor a local IAM role that doesn’t exist completed asSUCCEEDED, andGetGeneratedPolicyreturned a template allowings3:GetObjecton*, withisComplete: true. No access history was needed. - Also served, not yet tested: archive rules, access previews, updating findings and their recommendations, custom policy checks such as
CheckNoNewAccessandCheckNoPublicAccess, resource scans, service-linked analyzers and tags.
Limitations
Section titled “Limitations”The main limits are below. A few more apply to every service, and the API coverage notes cover smaller differences.
- Validation isn’t AWS’s analysis. It follows the emulator’s own rules. Two policies were checked, a scoped one and a wildcard one, which doesn’t establish that results match AWS’s. No findings isn’t a clean bill of health.
- Generated policies are synthetic. A generation job completes without any access history, even for a role that doesn’t exist, and returns a template. Earlier source inspection, on 3 November 2026, found that it doesn’t derive permissions from CloudTrail activity.
- Analysis wasn’t tested. Scans of accounts and resources, organization analysis, archive rules, access previews, recommendations and custom policy checks weren’t verified, so don’t expect findings about real access to your resources.
API coverage
Section titled “API coverage”Every operation in AWS's published 2019-11-01 API (SDK model, botocore 1.43.105), and whether the emulator implements it. Availability combines the earlier implementation inventory with the dated observations below; checking a page's example does not verify every operation. Each note names its evidence first; an observation given without a build or date comes from earlier testing, on 3 November 2026. What the statuses mean
No operation matches .
Try part of a name, such as ApplyArchiveRule, or .
| Operation | Status | Notes |
|---|---|---|
| Apply | Implemented | |
| Cancel | Implemented | |
| Check | Implemented | |
| Check | Implemented | |
| Check | Implemented | |
| Create | Implemented | |
| Create | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — created an ACCOUNT analyzer with tags. |
| Create | Implemented | |
| Create | Implemented | |
| Delete | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — deleted the analyzer, with no response body. |
| Delete | Implemented | |
| Delete | Implemented | |
| Generate | Implemented | |
| Get | Implemented | |
| Get | Implemented | |
| Get | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — returned the analyzer's name, type: ACCOUNT, status: ACTIVE, its tags and a generated createdAt. |
| Get | Implemented | |
| Get | Implemented | |
| Get | Implemented | |
| Get | Implemented | |
| Get | Implemented | |
| Get | Known difference | Local observation: Vera 1.2.0 preview, 5 November 2026 — for that job, returned a template allowing s3:GetObject on *, with isComplete: true. Source inspection: 3 November 2026 — Builds policy output from a fixed S3 template, with limited changes for the request flags, rather than deriving permissions from observed access history. |
| List | Implemented | |
| List | Implemented | |
| List | Implemented | |
| List | Implemented | |
| List | Implemented | |
| List | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — returned an empty findings list for a new account analyzer. |
| List | Implemented | |
| List | Implemented | |
| List | Implemented | |
| Start | Known difference | Local observation: Vera 1.2.0 preview, 5 November 2026 — a job for a local IAM role that doesn't exist completed as SUCCEEDED, with no access history. Source inspection: 3 November 2026 — Immediately creates a SUCCEEDED job record; this path does not analyze CloudTrail activity to derive a policy. |
| Start | Implemented | |
| Tag | Implemented | |
| Untag | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Validate | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — returned no findings for an identity policy allowing s3:GetObject on one bucket's objects, and one SECURITY_WARNING with issueCode: WILDCARD_RESOURCE for a second policy, with Resource: *. Two policies don't establish parity with AWS's analysis. |