Skip to main content
Latest Documentation
This is the latest documentation for the Cloud Posse Reference Architecture. To determine which version you're currently using, please see Version Identification.

AWS IAM Access Analyzer

AWS IAM Access Analyzer identifies resources shared with external entities and detects unused IAM permissions, enabling you to implement least-privilege access and identify unintended access to your resources.

Overview

Access Analyzer provides:

  • External Access Analysis: Identifies resources shared with external principals outside your organization
  • Unused Access Analysis: Detects unused IAM roles, users, and permissions
  • Policy Validation: Validates IAM policies against best practices
  • Policy Generation: Generates least-privilege policies based on CloudTrail activity
  • Multi-account Coverage: Organization-wide analysis from a central account

Analyzer Types

This component creates two types of organization-wide analyzers:

Analyzer TypePurposeFindings
ORGANIZATIONExternal access analysisPublic access, cross-account access, cross-organization access
ORGANIZATION_UNUSED_ACCESSUnused access analysisUnused roles, users, permissions (configurable threshold)

Supported Resources

External access analyzer monitors:

  • Amazon S3 buckets and access points
  • IAM roles and policies
  • AWS KMS keys
  • AWS Lambda functions and layers
  • Amazon SQS queues
  • AWS Secrets Manager secrets
  • Amazon SNS topics
  • Amazon EBS volume snapshots
  • Amazon RDS DB snapshots
  • Amazon ECR repositories
  • Amazon EFS file systems

Architecture

Deployment

Access Analyzer uses a 2-step delegated administrator deployment model.

Step 1: Deploy to Organization Management Account

Root Access Required:

This step requires root account access (such as with the managers profile).

# core-gbl-root
components:
terraform:
aws-access-analyzer/root:
metadata:
component: aws-access-analyzer
backend:
s3:
role_arn: null
vars:
enabled: true
delegated_administrator_account_name: core-security
organizations_delegated_administrator_enabled: true
service_linked_role_enabled: true
# Analyzers created in security account
accessanalyzer_organization_enabled: false
accessanalyzer_organization_unused_access_enabled: false
atmos terraform apply aws-access-analyzer/root -s core-gbl-root

Step 2: Deploy Organization Analyzers

# core-ue1-security
components:
terraform:
aws-access-analyzer/org-settings:
metadata:
component: aws-access-analyzer
vars:
enabled: true
delegated_administrator_account_name: core-security
environment: ue1
region: us-east-1
# Create organization analyzers
accessanalyzer_organization_enabled: true
accessanalyzer_organization_unused_access_enabled: true
unused_access_age: 30
# Already delegated
organizations_delegated_administrator_enabled: false
atmos terraform apply aws-access-analyzer/org-settings -s core-ue1-security

Multi-Region Deployment

Access Analyzer is a regional service. Deploy analyzers to each region:

# Delegation (once, globally)
atmos terraform apply aws-access-analyzer/root -s core-gbl-root

# Analyzers per region
atmos terraform apply aws-access-analyzer/org-settings -s core-ue1-security
atmos terraform apply aws-access-analyzer/org-settings -s core-uw2-security

Unused Access Configuration

Configure the threshold for unused access findings:

components:
terraform:
aws-access-analyzer/org-settings:
vars:
accessanalyzer_organization_unused_access_enabled: true
# Days without use before generating findings (default: 30)
unused_access_age: 30

Key Variables

VariableDescriptionDefault
organizations_delegated_administrator_enabledEnable delegation to security accountfalse
service_linked_role_enabledCreate the service-linked roletrue
accessanalyzer_organization_enabledEnable external access analyzerfalse
accessanalyzer_organization_unused_access_enabledEnable unused access analyzerfalse
unused_access_ageDays without use before generating findings30

Cost Considerations

  • External Access Analyzer: No additional charge (included with AWS account)
  • Unused Access Analyzer: Charged per IAM role or user analyzed per month

Security Hub Integration

Access Analyzer findings are automatically sent to Security Hub when both services are enabled.

See Also

References