This guide explains the enhanced NIST 800-53 control status reporting feature of the Security Hub Compliance Analyzer, which directly retrieves and reports on control compliance status for more accurate cATO reporting.
The Security Hub Compliance Analyzer now offers two distinct approaches for NIST 800-53 reporting:
- Finding-based Reporting (Original): Reports based on active Security Hub findings that have failed
- Control Status Reporting (New): Reports based on actual control status in Security Hub
The new control status reporting provides a more comprehensive view of your NIST 800-53 compliance posture by:
- Showing passed, failed, and not applicable controls
- Calculating actual compliance percentages
- Breaking down compliance by control family
- Providing tailored cATO recommendations based on current status
When you request a NIST 800-53 report, the analyzer:
- Searches for the NIST 800-53 standard in enabled Security Hub standards
- Retrieves all control details directly from the Security Hub API
- Organizes controls by family (AC, CM, IA, etc.)
- Calculates compliance percentages for each family and overall
- Generates a comprehensive report with control status visualizations
The enhanced NIST 800-53 email report includes:
- Overall Compliance Status: Shows percentage of controls passing
- Control Family Breakdown: Table showing compliance by control family
- Visual Progress Indicators: Visual representation of compliance status
- cATO Readiness Assessment: Automatic assessment of current cATO phase
- Tailored Recommendations: Action items based on current compliance status
The report includes a detailed breakdown of compliance by NIST 800-53 control family:
- Family Identification: Automatically detects control families like AC, CM, IA, etc.
- Compliance Percentages: Shows what percentage of controls are passing in each family
- Visual Indicators: Color-coded statuses (red, orange, yellow, green) for quick assessment
- Progress Meters: Visual bars showing compliance level for each family
- Sorting: Families are sorted with lowest compliance first to highlight areas needing attention
This visualization makes it easy to:
- Identify which control families are most problematic
- Track progress toward compliance by family
- Prioritize remediation efforts on specific control categories
- Demonstrate continuous improvement over time
The report automatically determines your cATO implementation phase based on overall compliance percentage:
-
Initial Phase (< 50% compliance)
- Focus on establishing baseline controls
- Emphasis on critical control families (AC, IA, SC)
- Development of System Security Plan and POA&M
- Setting up basic security monitoring
-
Intermediate Phase (50-80% compliance)
- Remediation of failed controls in priority order
- Implementation of automated continuous monitoring
- Evidence collection process documentation
- Development of authorization packages
-
Advanced Phase (> 80% compliance)
- Complete automation of control assessments
- Implementation of deviation detection
- Established processes for maintaining cATO
- Integration with agency risk management systems
The report provides tailored recommendations based on your detected phase to help guide your cATO journey.
Before testing, you may need to set up a Python virtual environment:
# Create a new virtual environment
python3 -m venv nist_venv
# Activate the environment
source nist_venv/bin/activate
# Install dependencies
pip install -r debug_requirements.txt
pip install -e . # Install the package in development modeThere are multiple ways to test this feature, depending on your needs:
If you have deployed the application to AWS:
# Set your email and AWS profile
export RECIPIENT_EMAIL="your-verified-email@example.com"
export AWS_PROFILE="your-aws-profile" # defaults to "sandbox" if not set
# Run the test script
./test_nist_direct_controls.shFor local testing and HTML inspection:
# First, activate the virtual environment
source nist_venv/bin/activate
# Generate the HTML report
./debug_email_output.py
# The HTML report will be saved as debug_email.html
# You can open this file in a web browser to preview it
# To send the email directly:
./send_debug_email.py --sender your-verified@email.com --recipient your-verified@email.comFor developers who want to test specific functions:
# First, activate the virtual environment
source nist_venv/bin/activate
# Run the test script for control status retrieval
./test_nist_control_functions.py --controls
# Run the test script for report generation
./test_nist_control_functions.py --report
# Run both tests
./test_nist_control_functions.py --all| Feature | Finding-based Reporting | Control Status Reporting |
|---|---|---|
| Focus | Active failed findings | All control statuses |
| Completeness | Only shows problems | Shows full compliance picture |
| cATO Accuracy | Limited (based on findings) | High (based on actual status) |
| Control Families | Limited coverage | Complete coverage |
| Compliance % | Estimated | Actual |
-
Security Hub Requirements:
- Security Hub must be enabled in your AWS account
- NIST 800-53 standard must be enabled
- Controls must have had time to evaluate
-
API Permissions:
- AWS role requires
securityhub:GetEnabledStandardsandsecurityhub:DescribeStandardsControlspermissions
- AWS role requires
-
Limitations:
- Control status may not be immediately available after enabling
- Very large environments may have pagination considerations
The implementation retrieves control status directly from Security Hub using:
# Get list of enabled standards
standards_response = securityhub.get_enabled_standards()
# Find NIST 800-53 standard
for standard in standards_response.get("StandardsSubscriptions", []):
if "nist" in standard.get("StandardsArn", "").lower() and "800-53" in standard.get("StandardsArn", ""):
nist_standard = standard
# Get controls for the standard
controls_response = securityhub.describe_standards_controls(
StandardsSubscriptionArn=nist_standard['StandardsSubscriptionArn']
)If you encounter issues with the control status reporting:
- Verify NIST 800-53 is enabled in Security Hub
- Check IAM permissions for Security Hub APIs
- Verify that controls have had time to evaluate (can take 24+ hours initially)
- Run the analyzer in diagnostic mode to see detailed API responses
For detailed assistance, see our troubleshooting guide.
Planned enhancements for control status reporting include:
- Control-specific remediation guidance
- Trend analysis of control status over time
- Risk-based prioritization of failed controls
- Integration with POA&M automation tools