AuditClaw AWS
Companion skill for auditclaw-grc. Collects compliance evidence from AWS accounts using read-only API calls.
15 checks | Read-only IAM policy | Evidence stored in shared GRC database
Security Model
- Read-only access: Custom IAM policy with 43 read-only API actions. No write/modify/delete permissions.
- Credentials: Uses standard AWS credential chain (
aws configure, env vars, or IAM instance role). No credentials stored by this skill.
- Dependencies:
boto3==1.34.46 (pinned)
- Data flow: Check results stored as evidence in
~/.openclaw/grc/compliance.sqlite via auditclaw-grc
Prerequisites
- AWS credentials configured (
aws configure or IAM instance role)
pip install -r scripts/requirements.txt
- auditclaw-grc skill installed and initialized
Commands
- "Run AWS evidence sweep": Run all checks, store results in GRC database
- "Check S3 encryption": Run S3-specific checks
- "Check IAM compliance": Run IAM-specific checks
- "Check CloudTrail status": Verify CloudTrail configuration
- "Check VPC security": Review VPC flow logs and security groups
- "Show AWS integration health": Last sync, errors, evidence count
Usage
All evidence is stored in the shared GRC database at ~/.openclaw/grc/compliance.sqlite
via the auditclaw-grc skill's db_query.py script.
To run a full evidence sweep:
python3 scripts/aws_evidence.py --db-path ~/.openclaw/grc/compliance.sqlite --all
To run specific checks:
python3 scripts/aws_evidence.py --db-path ~/.openclaw/grc/compliance.sqlite --checks iam,s3,cloudtrail
Check Categories (15)
| Check |
What It Verifies |
| iam |
Password policy, MFA enforcement, access key rotation, unused credentials |
| s3 |
Default encryption, public access blocks, versioning, access logging |
| cloudtrail |
Trail enabled, multi-region, log validation, S3 delivery |
| vpc |
Flow logs enabled, security group rules, NACL configuration |
| kms |
Key rotation enabled, key policies, key usage |
| ec2 |
IMDSv2 enforcement, EBS encryption, public IP exposure |
| rds |
Storage encryption, automated backups, public accessibility |
| security_hub |
Security Hub enabled, active findings by severity |
| guardduty |
Detector enabled, active findings, threat intelligence |
| lambda |
Runtime currency, public access, VPC attachment |
| cloudwatch |
Log group retention policies, metric alarm coverage |
| config |
Config recorder active, rule compliance status |
| eks_ecs |
Container cluster encryption, logging, network policies |
| elb |
HTTPS listeners, WAF association, access logging |
| credential_report |
Full IAM credential report analysis |
Evidence Storage
Each check produces evidence items stored with:
source: "aws"
type: "automated"
control_id: Mapped to relevant SOC2/ISO/HIPAA controls
description: Human-readable finding summary
file_content: JSON details of the check result
IAM Policy
See scripts/iam-policy.json for the minimum IAM permissions needed.
Use the principle of least privilege; the policy uses read-only permissions only.
Setup Guide
When a user asks to set up AWS integration, guide them through these steps:
Step 1: Create IAM Policy
Direct the user to AWS Console → IAM → Policies → Create Policy → JSON tab.
The exact policy is in scripts/iam-policy.json. Show it with:
python3 {baseDir}/../auditclaw-grc/scripts/db_query.py --action show-policy --provider aws
The policy contains 43 read-only API actions across 14 AWS services. No write/modify/delete permissions.
Step 2: Create IAM User
Name: auditclaw-scanner. Attach the AuditClawReadOnly policy.
CLI: aws iam create-user --user-name auditclaw-scanner
Step 3: Generate Access Keys
Security Credentials → Create Access Key → CLI use case.
CLI: aws iam create-access-key --user-name auditclaw-scanner
Step 4: Configure Credentials
Store credentials: aws configure or set AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY env vars.
Step 5: Verify Connection
Run: python3 {baseDir}/scripts/aws_evidence.py --test-connection
This probes each AWS service and reports accessibility.
Do NOT recommend SecurityAudit or ViewOnlyAccess managed policies. They grant far more access than needed. Always use our custom policy from scripts/iam-policy.json.
1---2name: auditclaw-aws3description: AWS compliance evidence collection for auditclaw-grc. 15 read-only checks across S3, IAM, CloudTrail, VPC, KMS, EC2, RDS, Lambda, EBS, SQS, SNS, Secrets Manager, Config, GuardDuty, and Security Hub.4---56# AuditClaw AWS78Companion skill for auditclaw-grc. Collects compliance evidence from AWS accounts using read-only API calls.910**15 checks | Read-only IAM policy | Evidence stored in shared GRC database**1112## Security Model13- **Read-only access**: Custom IAM policy with 43 read-only API actions. No write/modify/delete permissions.14- **Credentials**: Uses standard AWS credential chain (`aws configure`, env vars, or IAM instance role). No credentials stored by this skill.15- **Dependencies**: `boto3==1.34.46` (pinned)16- **Data flow**: Check results stored as evidence in `~/.openclaw/grc/compliance.sqlite` via auditclaw-grc1718## Prerequisites19- AWS credentials configured (`aws configure` or IAM instance role)20- `pip install -r scripts/requirements.txt`21- auditclaw-grc skill installed and initialized2223## Commands24- "Run AWS evidence sweep": Run all checks, store results in GRC database25- "Check S3 encryption": Run S3-specific checks26- "Check IAM compliance": Run IAM-specific checks27- "Check CloudTrail status": Verify CloudTrail configuration28- "Check VPC security": Review VPC flow logs and security groups29- "Show AWS integration health": Last sync, errors, evidence count3031## Usage32All evidence is stored in the shared GRC database at ~/.openclaw/grc/compliance.sqlite33via the auditclaw-grc skill's db_query.py script.3435To run a full evidence sweep:36```37python3 scripts/aws_evidence.py --db-path ~/.openclaw/grc/compliance.sqlite --all38```3940To run specific checks:41```42python3 scripts/aws_evidence.py --db-path ~/.openclaw/grc/compliance.sqlite --checks iam,s3,cloudtrail43```4445## Check Categories (15)4647| Check | What It Verifies |48|-------|-----------------|49| **iam** | Password policy, MFA enforcement, access key rotation, unused credentials |50| **s3** | Default encryption, public access blocks, versioning, access logging |51| **cloudtrail** | Trail enabled, multi-region, log validation, S3 delivery |52| **vpc** | Flow logs enabled, security group rules, NACL configuration |53| **kms** | Key rotation enabled, key policies, key usage |54| **ec2** | IMDSv2 enforcement, EBS encryption, public IP exposure |55| **rds** | Storage encryption, automated backups, public accessibility |56| **security_hub** | Security Hub enabled, active findings by severity |57| **guardduty** | Detector enabled, active findings, threat intelligence |58| **lambda** | Runtime currency, public access, VPC attachment |59| **cloudwatch** | Log group retention policies, metric alarm coverage |60| **config** | Config recorder active, rule compliance status |61| **eks_ecs** | Container cluster encryption, logging, network policies |62| **elb** | HTTPS listeners, WAF association, access logging |63| **credential_report** | Full IAM credential report analysis |6465## Evidence Storage66Each check produces evidence items stored with:67- `source: "aws"`68- `type: "automated"`69- `control_id`: Mapped to relevant SOC2/ISO/HIPAA controls70- `description`: Human-readable finding summary71- `file_content`: JSON details of the check result7273## IAM Policy74See `scripts/iam-policy.json` for the minimum IAM permissions needed.75Use the principle of least privilege; the policy uses read-only permissions only.7677## Setup Guide7879When a user asks to set up AWS integration, guide them through these steps:8081### Step 1: Create IAM Policy82Direct the user to AWS Console → IAM → Policies → Create Policy → JSON tab.83The exact policy is in `scripts/iam-policy.json`. Show it with:84 python3 {baseDir}/../auditclaw-grc/scripts/db_query.py --action show-policy --provider aws8586The policy contains 43 read-only API actions across 14 AWS services. No write/modify/delete permissions.8788### Step 2: Create IAM User89Name: `auditclaw-scanner`. Attach the AuditClawReadOnly policy.90CLI: `aws iam create-user --user-name auditclaw-scanner`9192### Step 3: Generate Access Keys93Security Credentials → Create Access Key → CLI use case.94CLI: `aws iam create-access-key --user-name auditclaw-scanner`9596### Step 4: Configure Credentials97Store credentials: `aws configure` or set AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY env vars.9899### Step 5: Verify Connection100Run: `python3 {baseDir}/scripts/aws_evidence.py --test-connection`101This probes each AWS service and reports accessibility.102103**Do NOT recommend SecurityAudit or ViewOnlyAccess managed policies.** They grant far more access than needed. Always use our custom policy from `scripts/iam-policy.json`.