runbooks 1.1.3__py3-none-any.whl → 1.1.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- runbooks/__init__.py +31 -2
- runbooks/__init___optimized.py +18 -4
- runbooks/_platform/__init__.py +1 -5
- runbooks/_platform/core/runbooks_wrapper.py +141 -138
- runbooks/aws2/accuracy_validator.py +812 -0
- runbooks/base.py +7 -0
- runbooks/cfat/WEIGHT_CONFIG_README.md +1 -1
- runbooks/cfat/assessment/compliance.py +8 -8
- runbooks/cfat/assessment/runner.py +1 -0
- runbooks/cfat/cloud_foundations_assessment.py +227 -239
- runbooks/cfat/models.py +6 -2
- runbooks/cfat/tests/__init__.py +6 -1
- runbooks/cli/__init__.py +13 -0
- runbooks/cli/commands/cfat.py +274 -0
- runbooks/cli/commands/finops.py +1164 -0
- runbooks/cli/commands/inventory.py +379 -0
- runbooks/cli/commands/operate.py +239 -0
- runbooks/cli/commands/security.py +248 -0
- runbooks/cli/commands/validation.py +825 -0
- runbooks/cli/commands/vpc.py +310 -0
- runbooks/cli/registry.py +107 -0
- runbooks/cloudops/__init__.py +23 -30
- runbooks/cloudops/base.py +96 -107
- runbooks/cloudops/cost_optimizer.py +549 -547
- runbooks/cloudops/infrastructure_optimizer.py +5 -4
- runbooks/cloudops/interfaces.py +226 -227
- runbooks/cloudops/lifecycle_manager.py +5 -4
- runbooks/cloudops/mcp_cost_validation.py +252 -235
- runbooks/cloudops/models.py +78 -53
- runbooks/cloudops/monitoring_automation.py +5 -4
- runbooks/cloudops/notebook_framework.py +179 -215
- runbooks/cloudops/security_enforcer.py +125 -159
- runbooks/common/accuracy_validator.py +11 -0
- runbooks/common/aws_pricing.py +349 -326
- runbooks/common/aws_pricing_api.py +211 -212
- runbooks/common/aws_profile_manager.py +341 -0
- runbooks/common/aws_utils.py +75 -80
- runbooks/common/business_logic.py +127 -105
- runbooks/common/cli_decorators.py +36 -60
- runbooks/common/comprehensive_cost_explorer_integration.py +456 -464
- runbooks/common/cross_account_manager.py +198 -205
- runbooks/common/date_utils.py +27 -39
- runbooks/common/decorators.py +235 -0
- runbooks/common/dry_run_examples.py +173 -208
- runbooks/common/dry_run_framework.py +157 -155
- runbooks/common/enhanced_exception_handler.py +15 -4
- runbooks/common/enhanced_logging_example.py +50 -64
- runbooks/common/enhanced_logging_integration_example.py +65 -37
- runbooks/common/env_utils.py +16 -16
- runbooks/common/error_handling.py +40 -38
- runbooks/common/lazy_loader.py +41 -23
- runbooks/common/logging_integration_helper.py +79 -86
- runbooks/common/mcp_cost_explorer_integration.py +478 -495
- runbooks/common/mcp_integration.py +63 -74
- runbooks/common/memory_optimization.py +140 -118
- runbooks/common/module_cli_base.py +37 -58
- runbooks/common/organizations_client.py +176 -194
- runbooks/common/patterns.py +204 -0
- runbooks/common/performance_monitoring.py +67 -71
- runbooks/common/performance_optimization_engine.py +283 -274
- runbooks/common/profile_utils.py +248 -39
- runbooks/common/rich_utils.py +643 -92
- runbooks/common/sre_performance_suite.py +177 -186
- runbooks/enterprise/__init__.py +1 -1
- runbooks/enterprise/logging.py +144 -106
- runbooks/enterprise/security.py +187 -204
- runbooks/enterprise/validation.py +43 -56
- runbooks/finops/__init__.py +29 -33
- runbooks/finops/account_resolver.py +1 -1
- runbooks/finops/advanced_optimization_engine.py +980 -0
- runbooks/finops/automation_core.py +268 -231
- runbooks/finops/business_case_config.py +184 -179
- runbooks/finops/cli.py +660 -139
- runbooks/finops/commvault_ec2_analysis.py +157 -164
- runbooks/finops/compute_cost_optimizer.py +336 -320
- runbooks/finops/config.py +20 -20
- runbooks/finops/cost_optimizer.py +488 -622
- runbooks/finops/cost_processor.py +332 -214
- runbooks/finops/dashboard_runner.py +1006 -172
- runbooks/finops/ebs_cost_optimizer.py +991 -657
- runbooks/finops/elastic_ip_optimizer.py +317 -257
- runbooks/finops/enhanced_mcp_integration.py +340 -0
- runbooks/finops/enhanced_progress.py +40 -37
- runbooks/finops/enhanced_trend_visualization.py +3 -2
- runbooks/finops/enterprise_wrappers.py +230 -292
- runbooks/finops/executive_export.py +203 -160
- runbooks/finops/helpers.py +130 -288
- runbooks/finops/iam_guidance.py +1 -1
- runbooks/finops/infrastructure/__init__.py +80 -0
- runbooks/finops/infrastructure/commands.py +506 -0
- runbooks/finops/infrastructure/load_balancer_optimizer.py +866 -0
- runbooks/finops/infrastructure/vpc_endpoint_optimizer.py +832 -0
- runbooks/finops/markdown_exporter.py +338 -175
- runbooks/finops/mcp_validator.py +1952 -0
- runbooks/finops/nat_gateway_optimizer.py +1513 -482
- runbooks/finops/network_cost_optimizer.py +657 -587
- runbooks/finops/notebook_utils.py +226 -188
- runbooks/finops/optimization_engine.py +1136 -0
- runbooks/finops/optimizer.py +25 -29
- runbooks/finops/rds_snapshot_optimizer.py +367 -411
- runbooks/finops/reservation_optimizer.py +427 -363
- runbooks/finops/scenario_cli_integration.py +77 -78
- runbooks/finops/scenarios.py +1278 -439
- runbooks/finops/schemas.py +218 -182
- runbooks/finops/snapshot_manager.py +2289 -0
- runbooks/finops/tests/test_finops_dashboard.py +3 -3
- runbooks/finops/tests/test_reference_images_validation.py +2 -2
- runbooks/finops/tests/test_single_account_features.py +17 -17
- runbooks/finops/tests/validate_test_suite.py +1 -1
- runbooks/finops/types.py +3 -3
- runbooks/finops/validation_framework.py +263 -269
- runbooks/finops/vpc_cleanup_exporter.py +191 -146
- runbooks/finops/vpc_cleanup_optimizer.py +593 -575
- runbooks/finops/workspaces_analyzer.py +171 -182
- runbooks/hitl/enhanced_workflow_engine.py +1 -1
- runbooks/integration/__init__.py +89 -0
- runbooks/integration/mcp_integration.py +1920 -0
- runbooks/inventory/CLAUDE.md +816 -0
- runbooks/inventory/README.md +3 -3
- runbooks/inventory/Tests/common_test_data.py +30 -30
- runbooks/inventory/__init__.py +2 -2
- runbooks/inventory/cloud_foundations_integration.py +144 -149
- runbooks/inventory/collectors/aws_comprehensive.py +28 -11
- runbooks/inventory/collectors/aws_networking.py +111 -101
- runbooks/inventory/collectors/base.py +4 -0
- runbooks/inventory/core/collector.py +495 -313
- runbooks/inventory/discovery.md +2 -2
- runbooks/inventory/drift_detection_cli.py +69 -96
- runbooks/inventory/find_ec2_security_groups.py +1 -1
- runbooks/inventory/inventory_mcp_cli.py +48 -46
- runbooks/inventory/list_rds_snapshots_aggregator.py +192 -208
- runbooks/inventory/mcp_inventory_validator.py +549 -465
- runbooks/inventory/mcp_vpc_validator.py +359 -442
- runbooks/inventory/organizations_discovery.py +56 -52
- runbooks/inventory/rich_inventory_display.py +33 -32
- runbooks/inventory/unified_validation_engine.py +278 -251
- runbooks/inventory/vpc_analyzer.py +733 -696
- runbooks/inventory/vpc_architecture_validator.py +293 -348
- runbooks/inventory/vpc_dependency_analyzer.py +382 -378
- runbooks/inventory/vpc_flow_analyzer.py +3 -3
- runbooks/main.py +152 -9147
- runbooks/main_final.py +91 -60
- runbooks/main_minimal.py +22 -10
- runbooks/main_optimized.py +131 -100
- runbooks/main_ultra_minimal.py +7 -2
- runbooks/mcp/__init__.py +36 -0
- runbooks/mcp/integration.py +679 -0
- runbooks/metrics/dora_metrics_engine.py +2 -2
- runbooks/monitoring/performance_monitor.py +9 -4
- runbooks/operate/dynamodb_operations.py +3 -1
- runbooks/operate/ec2_operations.py +145 -137
- runbooks/operate/iam_operations.py +146 -152
- runbooks/operate/mcp_integration.py +1 -1
- runbooks/operate/networking_cost_heatmap.py +33 -10
- runbooks/operate/privatelink_operations.py +1 -1
- runbooks/operate/rds_operations.py +223 -254
- runbooks/operate/s3_operations.py +107 -118
- runbooks/operate/vpc_endpoints.py +1 -1
- runbooks/operate/vpc_operations.py +648 -618
- runbooks/remediation/base.py +1 -1
- runbooks/remediation/commons.py +10 -7
- runbooks/remediation/commvault_ec2_analysis.py +71 -67
- runbooks/remediation/ec2_unattached_ebs_volumes.py +1 -0
- runbooks/remediation/multi_account.py +24 -21
- runbooks/remediation/rds_snapshot_list.py +91 -65
- runbooks/remediation/remediation_cli.py +92 -146
- runbooks/remediation/universal_account_discovery.py +83 -79
- runbooks/remediation/workspaces_list.py +49 -44
- runbooks/security/__init__.py +19 -0
- runbooks/security/assessment_runner.py +1150 -0
- runbooks/security/baseline_checker.py +812 -0
- runbooks/security/cloudops_automation_security_validator.py +509 -535
- runbooks/security/compliance_automation_engine.py +17 -17
- runbooks/security/config/__init__.py +2 -2
- runbooks/security/config/compliance_config.py +50 -50
- runbooks/security/config_template_generator.py +63 -76
- runbooks/security/enterprise_security_framework.py +1 -1
- runbooks/security/executive_security_dashboard.py +519 -508
- runbooks/security/integration_test_enterprise_security.py +5 -3
- runbooks/security/multi_account_security_controls.py +959 -1210
- runbooks/security/real_time_security_monitor.py +422 -444
- runbooks/security/run_script.py +1 -1
- runbooks/security/security_baseline_tester.py +1 -1
- runbooks/security/security_cli.py +143 -112
- runbooks/security/test_2way_validation.py +439 -0
- runbooks/security/two_way_validation_framework.py +852 -0
- runbooks/sre/mcp_reliability_engine.py +6 -6
- runbooks/sre/production_monitoring_framework.py +167 -177
- runbooks/tdd/__init__.py +15 -0
- runbooks/tdd/cli.py +1071 -0
- runbooks/utils/__init__.py +14 -17
- runbooks/utils/logger.py +7 -2
- runbooks/utils/version_validator.py +51 -48
- runbooks/validation/__init__.py +6 -6
- runbooks/validation/cli.py +9 -3
- runbooks/validation/comprehensive_2way_validator.py +754 -708
- runbooks/validation/mcp_validator.py +906 -228
- runbooks/validation/terraform_citations_validator.py +104 -115
- runbooks/validation/terraform_drift_detector.py +447 -451
- runbooks/vpc/README.md +617 -0
- runbooks/vpc/__init__.py +8 -1
- runbooks/vpc/analyzer.py +577 -0
- runbooks/vpc/cleanup_wrapper.py +476 -413
- runbooks/vpc/cli_cloudtrail_commands.py +339 -0
- runbooks/vpc/cli_mcp_validation_commands.py +480 -0
- runbooks/vpc/cloudtrail_audit_integration.py +717 -0
- runbooks/vpc/config.py +92 -97
- runbooks/vpc/cost_engine.py +411 -148
- runbooks/vpc/cost_explorer_integration.py +553 -0
- runbooks/vpc/cross_account_session.py +101 -106
- runbooks/vpc/enhanced_mcp_validation.py +917 -0
- runbooks/vpc/eni_gate_validator.py +961 -0
- runbooks/vpc/heatmap_engine.py +190 -162
- runbooks/vpc/mcp_no_eni_validator.py +681 -640
- runbooks/vpc/nat_gateway_optimizer.py +358 -0
- runbooks/vpc/networking_wrapper.py +15 -8
- runbooks/vpc/pdca_remediation_planner.py +528 -0
- runbooks/vpc/performance_optimized_analyzer.py +219 -231
- runbooks/vpc/runbooks_adapter.py +1167 -241
- runbooks/vpc/tdd_red_phase_stubs.py +601 -0
- runbooks/vpc/test_data_loader.py +358 -0
- runbooks/vpc/tests/conftest.py +314 -4
- runbooks/vpc/tests/test_cleanup_framework.py +1022 -0
- runbooks/vpc/tests/test_cost_engine.py +0 -2
- runbooks/vpc/topology_generator.py +326 -0
- runbooks/vpc/unified_scenarios.py +1302 -1129
- runbooks/vpc/vpc_cleanup_integration.py +1943 -1115
- runbooks-1.1.5.dist-info/METADATA +328 -0
- {runbooks-1.1.3.dist-info → runbooks-1.1.5.dist-info}/RECORD +233 -200
- runbooks/finops/README.md +0 -414
- runbooks/finops/accuracy_cross_validator.py +0 -647
- runbooks/finops/business_cases.py +0 -950
- runbooks/finops/dashboard_router.py +0 -922
- runbooks/finops/ebs_optimizer.py +0 -956
- runbooks/finops/embedded_mcp_validator.py +0 -1629
- runbooks/finops/enhanced_dashboard_runner.py +0 -527
- runbooks/finops/finops_dashboard.py +0 -584
- runbooks/finops/finops_scenarios.py +0 -1218
- runbooks/finops/legacy_migration.py +0 -730
- runbooks/finops/multi_dashboard.py +0 -1519
- runbooks/finops/single_dashboard.py +0 -1113
- runbooks/finops/unlimited_scenarios.py +0 -393
- runbooks-1.1.3.dist-info/METADATA +0 -799
- {runbooks-1.1.3.dist-info → runbooks-1.1.5.dist-info}/WHEEL +0 -0
- {runbooks-1.1.3.dist-info → runbooks-1.1.5.dist-info}/entry_points.txt +0 -0
- {runbooks-1.1.3.dist-info → runbooks-1.1.5.dist-info}/licenses/LICENSE +0 -0
- {runbooks-1.1.3.dist-info → runbooks-1.1.5.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,248 @@
|
|
1
|
+
"""
|
2
|
+
Security Commands Module - Security Assessment & Compliance
|
3
|
+
|
4
|
+
KISS Principle: Focused on security assessment and compliance operations
|
5
|
+
DRY Principle: Centralized security patterns and compliance frameworks
|
6
|
+
|
7
|
+
Extracted from main.py lines 4500-6000 for modular architecture.
|
8
|
+
Preserves 100% functionality while reducing main.py context overhead.
|
9
|
+
"""
|
10
|
+
|
11
|
+
import click
|
12
|
+
from rich.console import Console
|
13
|
+
|
14
|
+
# Import common utilities and decorators
|
15
|
+
from runbooks.common.decorators import common_aws_options, common_output_options
|
16
|
+
|
17
|
+
console = Console()
|
18
|
+
|
19
|
+
|
20
|
+
def create_security_group():
|
21
|
+
"""
|
22
|
+
Create the security command group with all subcommands.
|
23
|
+
|
24
|
+
Returns:
|
25
|
+
Click Group object with all security commands
|
26
|
+
|
27
|
+
Performance: Lazy creation only when needed by DRYCommandRegistry
|
28
|
+
Context Reduction: ~1500 lines extracted from main.py
|
29
|
+
"""
|
30
|
+
|
31
|
+
@click.group(invoke_without_command=True)
|
32
|
+
@common_aws_options
|
33
|
+
@click.pass_context
|
34
|
+
def security(ctx, profile, region, dry_run):
|
35
|
+
"""
|
36
|
+
Security assessment and compliance operations.
|
37
|
+
|
38
|
+
Comprehensive security baseline assessment with multi-framework compliance
|
39
|
+
and enterprise-grade reporting capabilities.
|
40
|
+
|
41
|
+
Compliance Frameworks:
|
42
|
+
• SOC2, PCI-DSS, HIPAA, ISO 27001
|
43
|
+
• AWS Well-Architected Security Pillar
|
44
|
+
• NIST Cybersecurity Framework
|
45
|
+
• CIS Benchmarks
|
46
|
+
|
47
|
+
Examples:
|
48
|
+
runbooks security assess --framework soc2
|
49
|
+
runbooks security baseline --all-checks
|
50
|
+
runbooks security report --format pdf --compliance hipaa
|
51
|
+
"""
|
52
|
+
ctx.obj.update({"profile": profile, "region": region, "dry_run": dry_run})
|
53
|
+
|
54
|
+
if ctx.invoked_subcommand is None:
|
55
|
+
click.echo(ctx.get_help())
|
56
|
+
|
57
|
+
@security.command()
|
58
|
+
@common_aws_options
|
59
|
+
@click.option(
|
60
|
+
"--framework",
|
61
|
+
type=click.Choice(["soc2", "pci-dss", "hipaa", "iso27001", "well-architected"]),
|
62
|
+
multiple=True,
|
63
|
+
help="Compliance frameworks to assess",
|
64
|
+
)
|
65
|
+
@click.option("--all-checks", is_flag=True, help="Run all available security checks")
|
66
|
+
@click.option(
|
67
|
+
"--severity", type=click.Choice(["critical", "high", "medium", "low"]), help="Filter by minimum severity level"
|
68
|
+
)
|
69
|
+
@click.option(
|
70
|
+
"--export-format", type=click.Choice(["json", "csv", "pdf", "markdown"]), help="Export format for results"
|
71
|
+
)
|
72
|
+
@click.option(
|
73
|
+
"--language",
|
74
|
+
type=click.Choice(["en", "ja", "ko", "vi"]),
|
75
|
+
default="en",
|
76
|
+
help="Report language (English, Japanese, Korean, Vietnamese)",
|
77
|
+
)
|
78
|
+
@click.option("--all", is_flag=True, help="Use all available AWS profiles for multi-account security assessment")
|
79
|
+
@click.pass_context
|
80
|
+
def assess(ctx, profile, region, dry_run, framework, all_checks, severity, export_format, language, all):
|
81
|
+
"""
|
82
|
+
Comprehensive security assessment with multi-framework compliance and universal profile support.
|
83
|
+
|
84
|
+
Enterprise Features:
|
85
|
+
• 15+ security checks across multiple frameworks
|
86
|
+
• Multi-language reporting (EN/JP/KR/VN)
|
87
|
+
• Risk scoring and prioritization
|
88
|
+
• Remediation recommendations with business impact
|
89
|
+
• Multi-account security assessment with --all flag
|
90
|
+
|
91
|
+
Examples:
|
92
|
+
runbooks security assess --framework soc2,pci-dss
|
93
|
+
runbooks security assess --all-checks --export-format pdf
|
94
|
+
runbooks security assess --severity critical --language ja
|
95
|
+
runbooks security assess --all --framework soc2 # Multi-account assessment
|
96
|
+
"""
|
97
|
+
try:
|
98
|
+
from runbooks.security.assessment_runner import SecurityAssessmentRunner
|
99
|
+
from runbooks.common.profile_utils import get_profile_for_operation
|
100
|
+
|
101
|
+
# Use ProfileManager for dynamic profile resolution
|
102
|
+
resolved_profile = get_profile_for_operation("operational", profile)
|
103
|
+
|
104
|
+
assessment = SecurityAssessmentRunner(
|
105
|
+
profile=resolved_profile,
|
106
|
+
region=region,
|
107
|
+
frameworks=list(framework) if framework else None,
|
108
|
+
all_checks=all_checks,
|
109
|
+
severity_filter=severity,
|
110
|
+
language=language,
|
111
|
+
)
|
112
|
+
|
113
|
+
results = assessment.run_comprehensive_assessment()
|
114
|
+
|
115
|
+
if export_format:
|
116
|
+
assessment.export_results(results, format=export_format)
|
117
|
+
|
118
|
+
return results
|
119
|
+
|
120
|
+
except ImportError as e:
|
121
|
+
console.print(f"[red]❌ Security assessment module not available: {e}[/red]")
|
122
|
+
raise click.ClickException("Security assessment functionality not available")
|
123
|
+
except Exception as e:
|
124
|
+
console.print(f"[red]❌ Security assessment failed: {e}[/red]")
|
125
|
+
raise click.ClickException(str(e))
|
126
|
+
|
127
|
+
@security.command()
|
128
|
+
@common_aws_options
|
129
|
+
@click.option(
|
130
|
+
"--check-type",
|
131
|
+
type=click.Choice(["baseline", "advanced", "enterprise"]),
|
132
|
+
default="baseline",
|
133
|
+
help="Security check depth level",
|
134
|
+
)
|
135
|
+
@click.option("--include-remediation", is_flag=True, help="Include remediation recommendations")
|
136
|
+
@click.option("--auto-fix", is_flag=True, help="Automatically fix low-risk issues (with approval)")
|
137
|
+
@click.option("--all", is_flag=True, help="Use all available AWS profiles for multi-account baseline assessment")
|
138
|
+
@click.pass_context
|
139
|
+
def baseline(ctx, profile, region, dry_run, check_type, include_remediation, auto_fix, all):
|
140
|
+
"""
|
141
|
+
Security baseline assessment and configuration validation with universal profile support.
|
142
|
+
|
143
|
+
Baseline Security Checks:
|
144
|
+
• IAM policy analysis and least privilege validation
|
145
|
+
• S3 bucket public access and encryption assessment
|
146
|
+
• VPC security group and NACL configuration review
|
147
|
+
• CloudTrail and logging configuration verification
|
148
|
+
• Encryption at rest and in transit validation
|
149
|
+
|
150
|
+
Examples:
|
151
|
+
runbooks security baseline --check-type enterprise
|
152
|
+
runbooks security baseline --include-remediation --auto-fix
|
153
|
+
runbooks security baseline --all --check-type enterprise # Multi-account assessment
|
154
|
+
"""
|
155
|
+
try:
|
156
|
+
from runbooks.security.baseline_checker import SecurityBaselineChecker
|
157
|
+
from runbooks.common.profile_utils import get_profile_for_operation
|
158
|
+
|
159
|
+
# Use ProfileManager for dynamic profile resolution
|
160
|
+
resolved_profile = get_profile_for_operation("operational", profile)
|
161
|
+
|
162
|
+
baseline_checker = SecurityBaselineChecker(
|
163
|
+
profile=resolved_profile,
|
164
|
+
region=region,
|
165
|
+
check_type=check_type,
|
166
|
+
include_remediation=include_remediation,
|
167
|
+
auto_fix=auto_fix and not dry_run,
|
168
|
+
)
|
169
|
+
|
170
|
+
baseline_results = baseline_checker.run_baseline_assessment()
|
171
|
+
|
172
|
+
return baseline_results
|
173
|
+
|
174
|
+
except ImportError as e:
|
175
|
+
console.print(f"[red]❌ Security baseline module not available: {e}[/red]")
|
176
|
+
raise click.ClickException("Security baseline functionality not available")
|
177
|
+
except Exception as e:
|
178
|
+
console.print(f"[red]❌ Security baseline assessment failed: {e}[/red]")
|
179
|
+
raise click.ClickException(str(e))
|
180
|
+
|
181
|
+
@security.command()
|
182
|
+
@common_aws_options
|
183
|
+
@click.option(
|
184
|
+
"--format",
|
185
|
+
"report_format",
|
186
|
+
type=click.Choice(["pdf", "html", "markdown", "json"]),
|
187
|
+
multiple=True,
|
188
|
+
default=["pdf"],
|
189
|
+
help="Report formats",
|
190
|
+
)
|
191
|
+
@click.option(
|
192
|
+
"--compliance",
|
193
|
+
type=click.Choice(["soc2", "pci-dss", "hipaa", "iso27001"]),
|
194
|
+
multiple=True,
|
195
|
+
help="Include compliance mapping",
|
196
|
+
)
|
197
|
+
@click.option("--executive-summary", is_flag=True, help="Generate executive summary")
|
198
|
+
@click.option("--output-dir", default="./security_reports", help="Output directory")
|
199
|
+
@click.option("--all", is_flag=True, help="Use all available AWS profiles for multi-account security reporting")
|
200
|
+
@click.pass_context
|
201
|
+
def report(ctx, profile, region, dry_run, report_format, compliance, executive_summary, output_dir, all):
|
202
|
+
"""
|
203
|
+
Generate comprehensive security compliance reports with universal profile support.
|
204
|
+
|
205
|
+
Enterprise Reporting Features:
|
206
|
+
• Executive-ready summary with risk quantification
|
207
|
+
• Compliance framework mapping and gap analysis
|
208
|
+
• Multi-language support for global enterprises
|
209
|
+
• Audit trail documentation and evidence collection
|
210
|
+
• Multi-account security reporting with --all flag
|
211
|
+
|
212
|
+
Examples:
|
213
|
+
runbooks security report --format pdf,html --executive-summary
|
214
|
+
runbooks security report --compliance soc2,hipaa --output-dir ./audit
|
215
|
+
runbooks security report --all --compliance soc2 # Multi-account reporting
|
216
|
+
"""
|
217
|
+
try:
|
218
|
+
from runbooks.security.report_generator import SecurityReportGenerator
|
219
|
+
from runbooks.common.profile_utils import get_profile_for_operation
|
220
|
+
|
221
|
+
# Use ProfileManager for dynamic profile resolution
|
222
|
+
resolved_profile = get_profile_for_operation("operational", profile)
|
223
|
+
|
224
|
+
report_generator = SecurityReportGenerator(
|
225
|
+
profile=resolved_profile,
|
226
|
+
output_dir=output_dir,
|
227
|
+
compliance_frameworks=list(compliance) if compliance else None,
|
228
|
+
executive_summary=executive_summary,
|
229
|
+
)
|
230
|
+
|
231
|
+
report_results = {}
|
232
|
+
for format_type in report_format:
|
233
|
+
result = report_generator.generate_report(format=format_type)
|
234
|
+
report_results[format_type] = result
|
235
|
+
|
236
|
+
console.print(f"[green]✅ Successfully generated {len(report_format)} report format(s)[/green]")
|
237
|
+
console.print(f"[dim]Output directory: {output_dir}[/dim]")
|
238
|
+
|
239
|
+
return report_results
|
240
|
+
|
241
|
+
except ImportError as e:
|
242
|
+
console.print(f"[red]❌ Security report module not available: {e}[/red]")
|
243
|
+
raise click.ClickException("Security report functionality not available")
|
244
|
+
except Exception as e:
|
245
|
+
console.print(f"[red]❌ Security report generation failed: {e}[/red]")
|
246
|
+
raise click.ClickException(str(e))
|
247
|
+
|
248
|
+
return security
|