Compliance Evidence¶
CertifyClouds produces audit-grade technical evidence for the narrow slice of cryptographic key + system-credential lifecycle controls in your Azure environment. CertifyClouds is not a compliance platform - your auditor determines compliance. CertifyClouds is one input to that determination.
Read first - what CertifyClouds is and is not
- CertifyClouds is not HIPAA-, PCI-, SOC 2-, ISO 27001-, NIST-, or CIS-certified. None of its outputs constitute an Attestation of Compliance.
- CertifyClouds does not see Protected Health Information, Cardholder Data, or any customer business data. It ingests Azure resource metadata (names, tags, configuration, dependencies) and operates against Azure SDK endpoints.
- CertifyClouds does not collect Azure Diagnostic Settings logs, does not enforce MFA, and does not see access events against protected data. Customers must layer Azure Monitor / Defender for Cloud / Entra ID controls on top.
- Coverage indicators ("Direct technical evidence", "Supporting technical evidence", "Customer responsibility") describe CertifyClouds' technical contribution to the named control. They are not legal compliance assertions and not a substitute for your auditor.
See the Compliance disclaimer for the full legal framing.
What CertifyClouds evaluates¶
Five frameworks are mapped to CertifyClouds' rule engine. For each, the controls below cite the canonical control text and the CertifyClouds rule IDs that supply evidence. Coverage indicates how CertifyClouds' technical evidence aligns with the control:
- Direct technical evidence - the rule(s) directly demonstrate the control requirement in CertifyClouds' scope.
- Supporting technical evidence - the rule(s) contribute to but do not fully satisfy the control; your auditor will require additional evidence layered on top.
- Customer responsibility - CertifyClouds does not contribute evidence; the control depends on your Azure Monitor, Entra ID, SIEM, or organisational programme. The framework entry is included only to document the gap.
The authoritative mapping lives in backend/src/domains/compliance/constants.py (FRAMEWORK_CONTROLS). The list below is generated from that source.
CIS Microsoft Azure Foundations Benchmark v2.0.0¶
Section 8 - Key Vault.
| Control | Description | Rule IDs | Coverage |
|---|---|---|---|
| 8.1 | Secret Expiry Dates Set | P001 | Direct |
| 8.3 | Key Expiry Dates Set | K001 | Direct |
| 8.5 | Soft Delete Enabled | CIS-8.5 | Direct |
| 8.6 | Purge Protection Enabled | CIS-8.6 | Direct |
| 8.7 | Private Network Access | CIS-8.7 | Direct |
| RBAC | RBAC Authorization | CIS-RBAC | Direct |
| 7.4 | Managed Identity Usage | VM002 | Supporting |
CertifyClouds verifies 7 of 8 CIS Azure Key Vault controls. CIS 8.2 (non-RBAC vaults) and 8.4 (non-RBAC secrets) require manual verification outside CertifyClouds.
SOC 2 Type II (2017 Trust Services Criteria)¶
CC6 - Logical and Physical Access. CC7 - System Operations.
| Control | Description | Rule IDs | Coverage |
|---|---|---|---|
| CC6.1 | Access Control | CIS-RBAC, VM001, VM002 | Supporting |
| CC6.2 | Credential Lifecycle | P001, P002, P003, P007, P008, P012, P013, P014, VM003, VM004 | Direct |
| CC6.3 | Data Protection (destruction protection) | CIS-8.5, CIS-8.6 | Direct |
| CC7.1 | Security Configuration | VM002, CIS-8.7 | Supporting |
| CC7.2 | System Monitoring | VM003, VM004, P009, P010 | Supporting |
CertifyClouds provides technical evidence for 5 SOC 2 controls in the CC6 / CC7 families. Full SOC 2 compliance requires organisational policies, periodic access reviews, incident-response procedures, and audit attestation, all of which sit outside CertifyClouds.
ISO/IEC 27001:2022¶
Annex A.9 / A.10 - Cryptography.
| Control | Description | Rule IDs | Coverage |
|---|---|---|---|
| A.10.1.2-keys | Key Management | K001, K002, K003, K005, K006, P003 | Direct |
| A.10.1.2-certs | Certificate Management | C001, C002, C003, C005, C006 | Direct |
| A.9.4.3 | Password Management System | VM001, VM004 | Supporting |
ISO 27001 contains 93 Annex A controls; CertifyClouds verifies the cryptographic + secret-management subset. Full certification requires implementing all relevant Annex A controls and a third-party certification body audit.
NIST SP 800-53 Rev. 5¶
SC - System and Communications Protection. IA - Identification and Authentication. CM - Configuration Management.
| Control | Description | Rule IDs | Coverage |
|---|---|---|---|
| SC-12 | Cryptographic Key Establishment | K001, K002, K003, K005, P001, P002, P007, VM001 | Supporting |
| SC-13 | Cryptographic Protection | K006, C006 | Supporting |
| IA-5 | Authenticator Management | P001, P007, P008, P012, P013, P014, VM003, VM004 | Direct |
| CM-2 | Baseline Configuration | VM001, VM005 | Supporting |
| CM-3 | Configuration Change Control | VM004, P009, P010 | Supporting |
| CM-8 | System Component Inventory | VM001, VM002, VM003 | Direct |
NIST 800-53 has 20 control families and ~1000 controls. CertifyClouds contributes to 6 controls across SC / IA / CM. Full coverage requires comprehensive organisational implementation.
HIPAA Security Rule §164.312 (1.4.14)¶
45 CFR §164.312 - Technical Safeguards. Evidence mappings, not framework support. CertifyClouds is not a HIPAA-compliant data processor and is not a Business Associate. See the Compliance disclaimer for the full legal framing including the conditional BAA clause.
| Control | Description | Rule IDs | Coverage |
|---|---|---|---|
| 164.312(a)(1) | Access Control | CIS-RBAC, CIS-8.7, VM002 | Supporting |
| 164.312(a)(2)(iv) | Encryption and Decryption (Addressable) | K006, C006, CIS-8.5, CIS-8.6, KMS-HSM | Supporting |
| 164.312(b) | Audit Controls | (none - enable Azure Diagnostic Settings + SIEM) | Customer responsibility |
| 164.312(c)(1) | Integrity | CIS-8.5, CIS-8.6, K005, C005, P007 | Supporting |
| 164.312(d) | Person or Entity Authentication | (none - configure Entra ID Conditional Access + MFA) | Customer responsibility |
| 164.312(e)(1) | Transmission Security | K006, C006 | Supporting |
CertifyClouds provides technical evidence for 4 of 5 §164.312 subsections with partial coverage. §164.312(b) and §164.312(d) are Customer responsibility - see the customer-action audit logging and customer-action authentication enforcement sections below.
PCI-DSS v4.0 (1.4.14)¶
PCI-DSS v4.0 - Cryptographic Key Management (Req 3) + System Account Credentials (Req 8.6). Evidence mappings, not certification. CertifyClouds is not a PCI-DSS certified service provider; a Qualified Security Assessor (QSA) audit is required for an Attestation of Compliance.
| Requirement | Description | Rule IDs | Coverage |
|---|---|---|---|
| 3.5 | Cryptographic Keys Used to Protect Account Data | K001-K003, K005, K006, CIS-8.5, CIS-8.6, KMS-HSM | Supporting |
| 3.6 | Cryptographic Keys Are Secured Against Disclosure | CIS-RBAC, CIS-8.7, K006, KMS-HSM | Supporting |
| 3.7 | Key Management Lifecycle | K001, K002, K005, P001, P002, P007, P008 | Direct |
| 8.3.9 | Authentication Factor Rotation | P001, P002, P007, P008 | Supporting |
| 8.6.1 | Interactive Use of System/Application Accounts | VM002, VM003 | Supporting |
| 8.6.2 | No Hardcoded Credentials | VM002 | Direct |
| 8.6.3 | Application/System Account Credential Rotation | P009, P010, P012, P013, P014, VM004 | Direct |
| 10.x | Log and Monitor All Access | (none - enable Azure Diagnostic Settings + 1y retention) | Customer responsibility |
CertifyClouds provides direct or partial technical evidence for 7 PCI-DSS v4.0 requirements. Requirement 10 (audit logging of CHD-system access) is Customer responsibility - see customer-action audit logging. Requirements 1, 2, 4, 5, 6, 7, 9, 11, and 12 are out of scope.
Azure Security Benchmark v3.0¶
Microsoft's own benchmark - correlates with Defender for Cloud recommendations. Visible in Azure Portal → Defender for Cloud → Regulatory Compliance.
| Control | Description | Rule IDs | Coverage |
|---|---|---|---|
| DP-5 | Sensitive Data Classification | K006, C006 | Supporting |
| DP-6 | Secure Key Management Process | K001, K002, K003, K005, P001, P002, P007, P008, CIS-8.5, CIS-8.6 | Direct |
| DP-7 | Secure Certificate Management | C001, C002, C003, C005, C006 | Direct |
| IM-3 | Manage Application Identities | VM002, VM003, P009, P010, VM004 | Direct |
| IM-7 | Restrict Resource Access | CIS-RBAC, CIS-8.7 | Direct |
| BR-4 | Mitigate Risk of Lost Keys | CIS-8.5, CIS-8.6 | Direct |
| PA-7 | Just Enough Administration | CIS-RBAC | Direct |
| NS-2 | Secure Cloud Services with Network Controls | CIS-8.7 | Supporting |
| AM-2 | Use Only Approved Services | VM001, VM002, VM005 | Supporting |
| AM-3 | Asset Lifecycle Management | VM001, VM003, VM004, P009, P010, SYN001, SYN002, SYN004 | Direct |
| LT-3 | Enable Logging for Security Investigation | (none) | Customer responsibility |
LT-3 is explicitly marked Customer responsibility because CertifyClouds does not collect Azure Diagnostic Settings logs. Enable diagnostic logging on every Key Vault in scope and forward to Log Analytics; see Customer action - audit logging below.
Compliance rules¶
CertifyClouds ships 40 built-in rules. The rule engine runs them against every scan, weights pass/fail by severity, and computes a 0–100 score. Rules fall into two classes:
- Framework-mapped rules - referenced by at least one framework control (above). Contribute to per-framework evidence packets.
- Operational hygiene rules - not bound to any compliance framework. Surface in operational dashboards, custom-rule UIs, and the overall score, but deliberately do not appear in framework evidence packets (no compliance framework actually requires them).
Secret rules¶
| Rule ID | Name | Description | Severity | Class |
|---|---|---|---|---|
| P001 | All Secrets Have Expiry Dates | All secrets should have an expiration date set to ensure regular rotation | High | Framework |
| P002 | No Secrets Expiring Within 7 Days | Secrets should be renewed before they expire to prevent service disruptions | Critical | Framework |
| P003 | No Secrets Expiring Within 30 Days | Secrets should have at least 30 days until expiration for planning rotation | High | Framework (1.4.14) |
| P004 | No Disabled Secrets | Disabled secrets should be removed to reduce clutter and security risk | Medium | Operational |
| P005 | All Vaults Accessible | All Key Vaults should be accessible without firewall or permission errors | High | Operational |
| P006 | Secrets Are Tagged | Secrets should have tags for organization and lifecycle management | Low | Operational |
| P007 | No Expired Secrets | Expired secrets should be renewed or removed immediately | Critical | Framework |
| P008 | Recent Secret Updates | Secrets should be updated regularly (within last 90 days) | Medium | Framework |
| P015 | Secret Naming Convention | Secrets should use descriptive names, not generic names like 'password', 'key1' | Low | Operational |
Certificate rules¶
| Rule ID | Name | Description | Severity | Class |
|---|---|---|---|---|
| C001 | All Certificates Have Expiry Dates | All certificates should have an expiration date set | High | Framework |
| C002 | No Certificates Expiring Within 7 Days | Certificates should be renewed before they expire to prevent service disruptions | Critical | Framework |
| C003 | No Certificates Expiring Within 30 Days | Certificates should have at least 30 days until expiration for planning renewal | High | Framework |
| C004 | No Disabled Certificates | Disabled certificates should be removed to reduce clutter and security risk | Medium | Operational |
| C005 | No Expired Certificates | Expired certificates should be renewed or removed immediately | Critical | Framework |
| C006 | Certificate Key Size Requirements | RSA certificates should use at least 2048-bit keys, EC should use P-256 or higher | High | Framework |
Key rules¶
| Rule ID | Name | Description | Severity | Class |
|---|---|---|---|---|
| K001 | All Keys Have Expiry Dates | All cryptographic keys should have an expiration date set | High | Framework |
| K002 | No Keys Expiring Within 7 Days | Keys should be rotated before they expire to prevent service disruptions | Critical | Framework |
| K003 | No Keys Expiring Within 30 Days | Keys should have at least 30 days until expiration for planning rotation | High | Framework |
| K004 | No Disabled Keys | Disabled keys should be removed to reduce clutter and security risk | Medium | Operational |
| K005 | No Expired Keys | Expired keys should be rotated or removed immediately | Critical | Framework |
| K006 | Key Size Requirements | RSA keys should use at least 2048-bit, EC keys should use P-256 or higher | High | Framework |
Rotation rules¶
| Rule ID | Name | Description | Severity | Class |
|---|---|---|---|---|
| P009 | Rotation Coverage Enabled | At least 80% of discovered App Registration secrets have rotation enabled | High | Framework |
| P010 | Rotation Ready Records | At least 60% of enabled rotation records have verified, non-excluded Key Vault matches | High | Framework |
| P012 | Rotation Unverified Matches Cleared | All matches for enabled policies are verified or excluded | Medium | Framework (1.4.14) |
| P013 | Rotation Targets Set | Enabled rotation policies must have a target vault configured | High | Framework (1.4.14) |
| P014 | Rotation Verified Matches | Enabled policies should have at least one verified, non-excluded Key Vault match | High | Framework (1.4.14) |
CIS Key Vault rules¶
| Rule ID | Name | Description | Severity | Class |
|---|---|---|---|---|
| CIS-8.5 | Soft Delete Enabled | Key Vault soft-delete should be enabled to protect against accidental or malicious deletion | Critical | Framework |
| CIS-8.6 | Purge Protection Enabled | Key Vault purge protection should be enabled to prevent permanent deletion during retention period | Critical | Framework |
| CIS-8.7 | Private Network Access | Key Vault should restrict public network access for enhanced security | High | Framework |
| CIS-RBAC | RBAC Authorization Enabled | Key Vault should use RBAC for access control instead of access policies | Medium | Framework |
Key Management Service (KMS) rules¶
| Rule ID | Name | Description | Severity | Class |
|---|---|---|---|---|
| KMS-HSM | Premium SKU for HSM-Backed Keys | Key Vault should use Premium SKU to enable HSM-backed key operations (FIPS 140-2 Level 2+). Required precondition for HIPAA §164.312(a)(2)(iv) HSM evidence and PCI-DSS Req 3.5 with HSM. Whether HSM is actually used for the customer's in-scope workloads is a separate customer-responsibility check. | Medium | Framework (1.4.14) |
Dependency rules¶
| Rule ID | Name | Description | Severity | Class |
|---|---|---|---|---|
| VM001 | Dependency Mapping Coverage | Resources with Key Vault references should have mapped dependencies | High | Framework |
| VM002 | Hardcoded Credential Detection | Azure resources should use Key Vault references instead of hardcoded connection strings | Critical | Framework |
| VM003 | Orphaned Credential Detection | Credentials with no mapped dependencies may be stale and should be reviewed | Medium | Framework |
| VM004 | Full-Stack Rotation Success Rate | Full-stack credential rotations should complete without failures | High | Framework |
| VM005 | Low Confidence Dependencies Reviewed | Dependencies with match confidence below 70% should be manually verified | Medium | Framework |
Multi-cloud sync rules¶
| Rule ID | Name | Description | Severity | Class |
|---|---|---|---|---|
| SYN001 | Sync Coverage Active | At least 80% of sync records should be active to ensure consistent multi-cloud secret distribution | High | Framework (1.4.14) |
| SYN002 | Sync Success Rate | 24-hour sync success rate should be at least 90% to ensure reliable multi-cloud synchronization | High | Framework (1.4.14) |
| SYN003 | Sync Worker Running | Sync worker must be running when active sync records exist to process scheduled syncs | Critical | Operational |
| SYN004 | No Failed Syncs (24h) | No sync operations should have failed in the last 24 hours | Medium | Framework (1.4.14) |
Compliance score¶
The compliance score is the weighted percentage of passing rules:
Each rule has a weight (1–30) reflecting its impact. Severity is indicative; the weight governs the math. Custom rules contribute too.
| Score range | Rating | Interpretation |
|---|---|---|
| 90 – 100 | Strong | Your evidence posture for the mapped controls is solid. |
| 75 – 89 | Healthy | Minor evidence gaps; address before next audit window. |
| 50 – 74 | Significant gaps | Multiple controls have incomplete evidence; review priority actions. |
| < 50 | Weak | Critical evidence gaps; remediation required before audit. |
The score is a technical evidence score, not a compliance rating. A score of 100 means CertifyClouds' rules all pass; it does not mean you are HIPAA-, PCI-, or any-framework compliant.
Custom rules¶
PRO tier supports creating custom compliance rules with a structured condition predicate (no scripting, no DSL). The evaluator is sandboxed by a whitelist of operators, asset fields, and scopes - there is no code-execution surface.
Condition shape¶
A custom rule's condition is a JSON object with four fields:
| Field | Allowed values | Notes |
|---|---|---|
operator | equals, not_equals, greater_than, less_than, exists, not_exists | Whitelist enforced server-side |
asset_field | expires_within_days, tag_present, enabled, name_contains, vault_name, asset_type | Whitelist enforced server-side |
asset_scope | secrets, certificates, keys | Which asset class the rule applies to |
value | number, string, or boolean | Type depends on the field |
Examples¶
Flag secrets without a production tag:
{
"operator": "not_exists",
"asset_field": "tag_present",
"asset_scope": "secrets",
"value": "env=production"
}
Warn on certificates older than 365 days:
{
"operator": "less_than",
"asset_field": "expires_within_days",
"asset_scope": "certificates",
"value": 30
}
API¶
GET /api/compliance/rules- list all rules (built-in + custom)POST /api/compliance/rules- create custom rule (admin, 10/min)PUT /api/compliance/rules/{rule_id}- update custom rule (admin, 20/min)DELETE /api/compliance/rules/{rule_id}- delete custom rule (admin, 10/min)
Built-in rule IDs (P*, C*, K*, VM*, SYN*, CIS-*) are read-only and cannot be modified via the API.
Evidence reports (1.4.14)¶
CertifyClouds produces auditor-grade evidence packets in CSV + PDF bundle form. Each report contains the data CSV, a PDF wrapper with cover page (tenant, scope, CertifyClouds version, RFC 3161 cryptographic timestamp, SHA-256 hash manifest), and a signed customer management assertion block.
Report types available:
- CC operator audit log (hash-chained, HMAC-manifest signed)
- Full rotation event population over an audit period
- Per-vault RBAC + network posture snapshot
- Dependency / blast-radius bulk export
- Multi-cloud sync provenance (source + target hashes)
- Recoverability posture per vault
- Compliance rule violation report with affected-asset samples
- Cryptoperiod conformance (asset age vs declared cadence)
- Algorithm strength conformance (FIPS 140-3 / PCI minimums)
- KV asset inventory (algorithm, key size, expiry, last rotated)
Each report exposes a format=csv or format=pdf query parameter and accepts from/to ISO 8601 timestamps for audit-period filtering. All reports are admin-gated.
See Generating evidence reports for the per-report schema and customer management assertion template.
What CertifyClouds does NOT evaluate¶
These belong to your overall compliance programme. CertifyClouds does not contribute evidence and does not claim to.
Customer action - audit logging¶
CertifyClouds does not collect Azure Key Vault access logs. HIPAA §164.312(b), PCI-DSS Requirement 10, SOC 2 CC7.2, and Azure Security Benchmark LT-3 all require access logging on data stores.
To close the gap:
- Enable Azure Diagnostic Settings on every Key Vault in scope.
- Forward to a Log Analytics Workspace with retention per your framework (HIPAA: 1 year minimum; PCI: 1 year online + 3 months hot per Req 10.5.1).
- Configure Azure Defender for Key Vault for anomalous-access alerts.
- Connect Log Analytics to your SIEM for cross-system correlation.
Customer action - authentication enforcement¶
CertifyClouds does not enforce MFA and does not see Entra ID sign-in events. HIPAA §164.312(d), PCI 8.3, SOC 2 CC6.1, and ASB IM-* require this.
To close the gap:
- Configure Entra ID Conditional Access requiring MFA on all users with Key Vault Reader / Secret User / Crypto User roles.
- Use Privileged Identity Management for time-bound elevated roles.
- Document break-glass procedures.
Customer action - encryption at rest beyond Key Vault¶
CertifyClouds verifies Key Vault key strength and recoverability. It does not verify encryption configurations on Storage Accounts, Azure SQL, managed disks, Cosmos DB, or other Azure services.
To close the gap:
- Audit each in-scope service's encryption-at-rest configuration.
- Adopt customer-managed keys (CMK) backed by Premium-SKU Key Vaults for highest-trust workloads. (CertifyClouds 1.4.14 adds a CMK-detection rule for Key Vaults; see release notes.)
Customer action - organisational policies¶
CertifyClouds is a technical evidence aggregator, not a policy authoring or training tool. Your compliance programme also requires:
- A documented information security policy
- Security Officer / Privacy Officer assignment (HIPAA §164.308(a)(2))
- Annual risk assessment
- Workforce training records
- Incident response procedures
- Business Associate Agreements with downstream processors (HIPAA)
- Key custodian acknowledgement forms with split-knowledge attestation (PCI 3.6.1.1)
These artefacts are produced by your compliance team or a qualified service provider, not by CertifyClouds.
Audit workflow with CertifyClouds¶
The recommended workflow for using CertifyClouds output during an audit:
- Scope statement - produce a written list of in-scope Azure subscriptions / Key Vaults / App Registrations. Reconcile against
az resource listto prove completeness. - Evidence generation - generate the per-control evidence reports for the audit period via the CertifyClouds Compliance tab → Generate Evidence Bundle.
- Management assertion - sign the assertion block in each PDF bundle, stating that the scan covered the listed scope, was run by the named actor, and the output reflects system state at the timestamp shown.
- Hand off to auditor - provide the signed bundles + your scope statement. The auditor will validate the SHA-256 / HMAC manifest against the included CSV.
- Audit determination - the auditor combines CertifyClouds' evidence with your other controls (audit logs, MFA configuration, organisational policies, etc.) and makes the compliance determination.
CertifyClouds is one input to step 5. The determination itself is outside CertifyClouds' scope.
Disclaimer¶
See the full legal framing on the Compliance disclaimer page, including:
- Customer responsibility for placing Protected Health Information, Cardholder Data, or other regulated content into Azure resource names or tags;
- The conditional Business Associate Agreement clause;
- The explicit reliance disclaimer (no customer may rely on CertifyClouds reports as a determination of compliance).