Skip to content

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:

score = (Σ weight × passed) / (Σ weight × all_applicable) × 100

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:

  1. CC operator audit log (hash-chained, HMAC-manifest signed)
  2. Full rotation event population over an audit period
  3. Per-vault RBAC + network posture snapshot
  4. Dependency / blast-radius bulk export
  5. Multi-cloud sync provenance (source + target hashes)
  6. Recoverability posture per vault
  7. Compliance rule violation report with affected-asset samples
  8. Cryptoperiod conformance (asset age vs declared cadence)
  9. Algorithm strength conformance (FIPS 140-3 / PCI minimums)
  10. 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:

  1. Enable Azure Diagnostic Settings on every Key Vault in scope.
  2. 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).
  3. Configure Azure Defender for Key Vault for anomalous-access alerts.
  4. 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:

  1. Configure Entra ID Conditional Access requiring MFA on all users with Key Vault Reader / Secret User / Crypto User roles.
  2. Use Privileged Identity Management for time-bound elevated roles.
  3. 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:

  1. Audit each in-scope service's encryption-at-rest configuration.
  2. 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:

  1. Scope statement - produce a written list of in-scope Azure subscriptions / Key Vaults / App Registrations. Reconcile against az resource list to prove completeness.
  2. Evidence generation - generate the per-control evidence reports for the audit period via the CertifyClouds Compliance tab → Generate Evidence Bundle.
  3. 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.
  4. Hand off to auditor - provide the signed bundles + your scope statement. The auditor will validate the SHA-256 / HMAC manifest against the included CSV.
  5. 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).