feat(compliance): add NCSC Cyber Essentials framework for Azure#11586
feat(compliance): add NCSC Cyber Essentials framework for Azure#11586AlexanderSanin wants to merge 1 commit into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
📝 WalkthroughWalkthroughA single changelog entry is added to the unreleased ChangesNCSC Cyber Essentials v3.1 Changelog Entry
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~1 minute Possibly related issues
Suggested reviewers
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Hey @danibarranqueroo @jfagoagas @HugoPBrito. Could you, please, have a look at this? |
|
✅ Conflict Markers Resolved All conflict markers have been successfully resolved in this pull request. |
c4782db to
c459deb
Compare
Codecov Report✅ All modified and coverable lines are covered by tests.
Additional details and impacted files@@ Coverage Diff @@
## master #11586 +/- ##
==========================================
- Coverage 93.96% 87.44% -6.53%
==========================================
Files 236 227 -9
Lines 34777 6004 -28773
==========================================
- Hits 32678 5250 -27428
+ Misses 2099 754 -1345
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
c459deb to
f83eae6
Compare
|
CI status update after fix:
Our change is only |
f83eae6 to
37bcf61
Compare
HugoPBrito
left a comment
There was a problem hiding this comment.
Thanks for the contribution. The framework structure is mostly fine, but the compliance definition should follow Prowler's compliance structure: include the full official framework, map only the checks that directly match each requirement, and leave the rest unassigned with Checks: [].
Please do not reduce the framework to only the requirements that Prowler can currently check, and also do not map indirectly related checks just to increase automated coverage. Requirements without a direct Prowler check should stay in the JSON with an empty Checks array.
Reference: Prowler compliance framework documentation.
| "Service": "network" | ||
| } | ||
| ], | ||
| "Checks": [ |
There was a problem hiding this comment.
This should likely be Checks: [].
Network Watcher and flow logs provide visibility, but they do not directly prove default-deny firewall behavior. Keep the requirement in the compliance file, but leave it unassigned unless there is a direct check for this control.
| "Service": "entra" | ||
| } | ||
| ], | ||
| "Checks": [ |
There was a problem hiding this comment.
This should likely be Checks: [].
These checks do not verify removal or disabling of unnecessary user accounts. Keep the requirement, but only map checks that directly validate account lifecycle cleanup.
| "Service": "entra" | ||
| } | ||
| ], | ||
| "Checks": [ |
There was a problem hiding this comment.
This should likely be Checks: [].
entra_security_defaults_enabled does not verify account auto-lock after inactivity. Keep the requirement in the framework, but leave it unassigned unless a direct inactivity-lock check exists.
| "Service": "defender" | ||
| } | ||
| ], | ||
| "Checks": [ |
There was a problem hiding this comment.
This should likely be Checks: [].
Defender plan enablement does not prove that all software is supported or licensed. Keep the official requirement, but do not map indirect checks to it.
| "Service": "defender" | ||
| } | ||
| ], | ||
| "Checks": [ |
There was a problem hiding this comment.
This should likely be Checks: [].
The mapped checks do not prove that high or critical updates are applied within 14 days of release. Keep the requirement, but leave it unassigned unless a check directly validates that timeframe.
| "Service": "iam" | ||
| } | ||
| ], | ||
| "Checks": [ |
There was a problem hiding this comment.
This should likely be Checks: [].
RBAC checks do not verify named approval, one account per identified individual, or account removal when no longer required. Keep the requirement, but only map direct lifecycle or approval checks.
| "Service": "entra" | ||
| } | ||
| ], | ||
| "Checks": [ |
There was a problem hiding this comment.
This should likely be Checks: [].
These checks do not prove that administrators use separate admin and standard user accounts. Keep the requirement, but leave it unassigned unless there is a direct check for account separation.
Adds the UK NCSC Cyber Essentials compliance framework (cyber_essentials_azure.json) covering all five official themes: - A.1 Firewalls (A.1.1–A.1.5): boundary firewall restrictions, network watcher, bastion host, blocking unauthenticated inbound access via storage/network controls - A.2 Secure Configuration (A.2.1–A.2.6): removing unnecessary accounts/services, enforcing SSH key auth, TLS, secure transfer, private endpoints - A.3 Security Update Management (A.3.1–A.3.3): Defender for Cloud coverage, vulnerability assessment automation, system update checks - A.4 User Access Control (A.4.1–A.4.5): RBAC enforcement, least privilege, admin account separation, MFA via Conditional Access - A.5 Malware Protection (A.5.1–A.5.3): endpoint protection, Defender for Containers, threat alerting 22 requirements mapping 74 unique existing Azure checks; no new checks or service changes are required. Closes prowler-cloud#11579 Signed-off-by: Oleksandr Sanin <alexaaander.sanin@gmail.com>
37bcf61 to
6839838
Compare
|
Addressed all 7 inline review comments from @HugoPBrito — thank you for the careful review. Cleared
Updated in commit 6839838. |
Summary
Adds the NCSC Cyber Essentials compliance framework for the Azure provider, resolving #11579.
Cyber Essentials is the UK government-backed baseline cybersecurity certification scheme, widely required for UK public sector contracts and beneficial for any UK-based Azure user. This implementation follows the official Cyber Essentials Requirements for IT Infrastructure v3.1 and maps all five control themes to existing Prowler Azure checks.
File added:
prowler/compliance/azure/cyber_essentials_azure.jsonCoverage: 22 requirements × 5 themes × 74 unique Azure checks
network_rdp_internet_access_restricted,network_ssh_internet_access_restricted,network_bastion_host_existsentra_security_defaults_enabled,storage_ensure_minimum_tls_version_12,app_ftp_deployment_disableddefender_ensure_system_updates_are_applied,defender_auto_provisioning_vulnerabilty_assessments_machines_onentra_privileged_user_has_mfa,iam_role_user_access_admin_restricted,entra_conditional_access_policy_require_mfa_for_admin_portalsdefender_assessments_vm_endpoint_protection_installed,defender_ensure_wdatp_is_enabled,defender_ensure_defender_for_containers_is_onRequirements that are device/endpoint-level controls with no Azure control-plane equivalent (e.g. A.2.2 remove unnecessary software, A.3.1/A.3.2 licensed-software inventory for on-prem) are included with the closest available Defender for Cloud checks.
No new checks, service changes, or additional API permissions are required — this PR only adds the framework JSON.
Test plan
prowler/providers/azure/services/prowler azure --compliance cyber_essentials_azureagainst a test Azure subscription to confirm framework loads and produces resultsSummary by CodeRabbit