Install
openclaw skills install auditclaw-azureAzure compliance evidence collection for auditclaw-grc. 12 read-only checks across storage, NSG, Key Vault, SQL, compute, App Service, and Defender for Cloud.
openclaw skills install auditclaw-azureCompanion skill for auditclaw-grc. Collects compliance evidence from Azure subscriptions using read-only API calls.
12 checks | Reader + Security Reader roles only | Evidence stored in shared GRC database
DefaultAzureCredential (service principal env vars, az login, or managed identity). No credentials stored by this skill.~/.openclaw/grc/compliance.sqlite via auditclaw-grcaz login)pip install -r scripts/requirements.txtAll 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/azure_evidence.py --db-path ~/.openclaw/grc/compliance.sqlite --all
To run specific checks:
python3 scripts/azure_evidence.py --db-path ~/.openclaw/grc/compliance.sqlite --checks storage,network,keyvault
To list available checks:
python3 scripts/azure_evidence.py --list-checks
| Check | What It Verifies |
|---|---|
| storage | HTTPS-only transfer, TLS 1.2+, public blob access disabled, network default deny |
| network | NSG no unrestricted SSH (port 22), no unrestricted RDP (port 3389) |
| keyvault | Soft delete + purge protection enabled |
| sql | Server auditing enabled, TDE encryption on all databases |
| compute | VM disk encryption (encryption at host) |
| appservice | HTTPS-only + TLS 1.2+ |
| defender | Defender plans enabled (Standard tier) for critical resource types |
Uses DefaultAzureCredential from azure-identity. Supports:
AZURE_CLIENT_ID + AZURE_TENANT_ID + AZURE_CLIENT_SECRETaz loginMinimum roles: Reader + Security Reader (subscription-level)
Each check produces evidence items stored with:
source: "azure"type: "automated"control_id: Mapped to relevant SOC2/ISO/HIPAA controlsdescription: Human-readable finding summaryfile_content: JSON details of the check resultWhen a user asks to set up Azure integration, guide them through these steps:
az ad sp create-for-rbac --name auditclaw-scanner --role Reader --scopes /subscriptions/<SUBSCRIPTION_ID>
az role assignment create --assignee <APP_ID> --role "Security Reader" --scope /subscriptions/<SUBSCRIPTION_ID>
Only 2 roles needed: Reader + Security Reader (subscription-level).
Set environment variables from the service principal output:
Run: python3 {baseDir}/scripts/azure_evidence.py --test-connection
The exact roles are documented in scripts/azure-roles.json. Show with:
python3 {baseDir}/../auditclaw-grc/scripts/db_query.py --action show-policy --provider azure