fedramp-20x-mcp 0.4.8__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.
- fedramp_20x_mcp/__init__.py +14 -0
- fedramp_20x_mcp/__main__.py +12 -0
- fedramp_20x_mcp/data_loader.py +673 -0
- fedramp_20x_mcp/prompts/__init__.py +62 -0
- fedramp_20x_mcp/prompts/api_design_guide.txt +432 -0
- fedramp_20x_mcp/prompts/ato_package_checklist.txt +75 -0
- fedramp_20x_mcp/prompts/audit_preparation.txt +592 -0
- fedramp_20x_mcp/prompts/authorization_boundary_review.txt +76 -0
- fedramp_20x_mcp/prompts/azure_ksi_automation.txt +997 -0
- fedramp_20x_mcp/prompts/continuous_monitoring_setup.txt +61 -0
- fedramp_20x_mcp/prompts/documentation_generator.txt +499 -0
- fedramp_20x_mcp/prompts/gap_analysis.txt +25 -0
- fedramp_20x_mcp/prompts/initial_assessment_roadmap.txt +202 -0
- fedramp_20x_mcp/prompts/ksi_implementation_priorities.txt +283 -0
- fedramp_20x_mcp/prompts/migration_from_rev5.txt +440 -0
- fedramp_20x_mcp/prompts/quarterly_review_checklist.txt +231 -0
- fedramp_20x_mcp/prompts/significant_change_assessment.txt +50 -0
- fedramp_20x_mcp/prompts/vendor_evaluation.txt +349 -0
- fedramp_20x_mcp/prompts/vulnerability_remediation_timeline.txt +45 -0
- fedramp_20x_mcp/server.py +270 -0
- fedramp_20x_mcp/templates/__init__.py +75 -0
- fedramp_20x_mcp/templates/bicep/afr.txt +33 -0
- fedramp_20x_mcp/templates/bicep/cna.txt +48 -0
- fedramp_20x_mcp/templates/bicep/generic.txt +47 -0
- fedramp_20x_mcp/templates/bicep/iam.txt +211 -0
- fedramp_20x_mcp/templates/bicep/mla.txt +82 -0
- fedramp_20x_mcp/templates/bicep/rpl.txt +44 -0
- fedramp_20x_mcp/templates/bicep/svc.txt +54 -0
- fedramp_20x_mcp/templates/code/generic_csharp.txt +65 -0
- fedramp_20x_mcp/templates/code/generic_powershell.txt +65 -0
- fedramp_20x_mcp/templates/code/generic_python.txt +63 -0
- fedramp_20x_mcp/templates/code/iam_csharp.txt +150 -0
- fedramp_20x_mcp/templates/code/iam_powershell.txt +162 -0
- fedramp_20x_mcp/templates/code/iam_python.txt +224 -0
- fedramp_20x_mcp/templates/code/mla_python.txt +124 -0
- fedramp_20x_mcp/templates/terraform/afr.txt +29 -0
- fedramp_20x_mcp/templates/terraform/cna.txt +50 -0
- fedramp_20x_mcp/templates/terraform/generic.txt +40 -0
- fedramp_20x_mcp/templates/terraform/iam.txt +219 -0
- fedramp_20x_mcp/templates/terraform/mla.txt +29 -0
- fedramp_20x_mcp/templates/terraform/rpl.txt +32 -0
- fedramp_20x_mcp/templates/terraform/svc.txt +46 -0
- fedramp_20x_mcp/tools/__init__.py +167 -0
- fedramp_20x_mcp/tools/definitions.py +154 -0
- fedramp_20x_mcp/tools/documentation.py +155 -0
- fedramp_20x_mcp/tools/enhancements.py +2256 -0
- fedramp_20x_mcp/tools/evidence.py +701 -0
- fedramp_20x_mcp/tools/export.py +753 -0
- fedramp_20x_mcp/tools/ksi.py +90 -0
- fedramp_20x_mcp/tools/requirements.py +163 -0
- fedramp_20x_mcp-0.4.8.dist-info/METADATA +877 -0
- fedramp_20x_mcp-0.4.8.dist-info/RECORD +55 -0
- fedramp_20x_mcp-0.4.8.dist-info/WHEEL +4 -0
- fedramp_20x_mcp-0.4.8.dist-info/entry_points.txt +2 -0
- fedramp_20x_mcp-0.4.8.dist-info/licenses/LICENSE +27 -0
|
@@ -0,0 +1,2256 @@
|
|
|
1
|
+
"""
|
|
2
|
+
FedRAMP 20x MCP Server - Enhancements Tools
|
|
3
|
+
|
|
4
|
+
This module contains tool implementation functions for enhancements.
|
|
5
|
+
"""
|
|
6
|
+
import json
|
|
7
|
+
import logging
|
|
8
|
+
from typing import Any
|
|
9
|
+
|
|
10
|
+
logger = logging.getLogger(__name__)
|
|
11
|
+
|
|
12
|
+
async def compare_with_rev4_impl(requirement_area: str, data_loader) -> str:
|
|
13
|
+
"""
|
|
14
|
+
Compare FedRAMP 20x requirements to Rev 4/Rev 5 to understand changes.
|
|
15
|
+
|
|
16
|
+
Args:
|
|
17
|
+
requirement_area: Area to compare (e.g., "continuous monitoring", "vulnerability management",
|
|
18
|
+
"authorization boundary", "evidence collection")
|
|
19
|
+
|
|
20
|
+
Returns:
|
|
21
|
+
Key differences between Rev 4/5 and 20x for the specified area
|
|
22
|
+
"""
|
|
23
|
+
comparisons = {
|
|
24
|
+
"continuous monitoring": """# Continuous Monitoring: Rev 4/5 vs 20x
|
|
25
|
+
|
|
26
|
+
**Rev 4/5 Approach:**
|
|
27
|
+
- Annual assessments by 3PAO
|
|
28
|
+
- Monthly ConMon scans
|
|
29
|
+
- Quarterly deliverables to FedRAMP PMO
|
|
30
|
+
- Document-based evidence packages
|
|
31
|
+
- POA&M tracking in Excel/Word
|
|
32
|
+
|
|
33
|
+
**FedRAMP 20x Changes:**
|
|
34
|
+
- **Collaborative Continuous Monitoring (CCM)**: Real-time data sharing via APIs (FRR-CCM)
|
|
35
|
+
- **Quarterly Reviews**: Structured review process (FRR-CCM-QR-01 through QR-11)
|
|
36
|
+
- **Key Security Indicators**: 72 KSIs to track continuously
|
|
37
|
+
- **Authorization Data Sharing**: Machine-readable data instead of documents (FRR-ADS)
|
|
38
|
+
- **Persistent Validation**: Continuous assessment, not annual (FRR-PVA)
|
|
39
|
+
|
|
40
|
+
**Key Requirements:**
|
|
41
|
+
- FRR-CCM-01 through CCM-07: Base continuous monitoring
|
|
42
|
+
- KSI-MLA-01: SIEM requirement
|
|
43
|
+
- KSI-CMT-01: Log and monitor all changes
|
|
44
|
+
- FRR-PVA-01 through PVA-18: Persistent validation standards""",
|
|
45
|
+
|
|
46
|
+
"vulnerability management": """# Vulnerability Management: Rev 4/5 vs 20x
|
|
47
|
+
|
|
48
|
+
**Rev 4/5 Approach:**
|
|
49
|
+
- 30-day remediation for High vulnerabilities
|
|
50
|
+
- POA&M tracking
|
|
51
|
+
- Monthly ConMon scans
|
|
52
|
+
- Risk-based decisions on false positives
|
|
53
|
+
|
|
54
|
+
**FedRAMP 20x Changes:**
|
|
55
|
+
- **Vulnerability Detection & Response Standard (VDR)**: Comprehensive timeframes by severity
|
|
56
|
+
- **Automated Detection**: Emphasis on continuous scanning
|
|
57
|
+
- **Risk-Based Timeframes**: Different deadlines based on impact level and CVSS
|
|
58
|
+
- **Exception Process**: Formal process for remediation extensions (FRR-VDR-EX)
|
|
59
|
+
- **Agency Reporting**: Must report vulnerabilities affecting agencies (FRR-VDR-RP)
|
|
60
|
+
|
|
61
|
+
**Key Timeframes (FRR-VDR-TF):**
|
|
62
|
+
- Critical/High + High Impact: 7-15 days
|
|
63
|
+
- Medium: 30-90 days
|
|
64
|
+
- Low: 180 days
|
|
65
|
+
- Zero-day: Immediate response required
|
|
66
|
+
|
|
67
|
+
**Key Requirements:**
|
|
68
|
+
- FRR-VDR-01 through VDR-11: Detection and response
|
|
69
|
+
- FRR-VDR-TF-HI-01 through HI-09: High impact timeframes
|
|
70
|
+
- KSI-PIY-03: Vulnerability Disclosure Program""",
|
|
71
|
+
|
|
72
|
+
"authorization boundary": """# Authorization Boundary: Rev 4/5 vs 20x
|
|
73
|
+
|
|
74
|
+
**Rev 4/5 Approach:**
|
|
75
|
+
- Static boundary in SSP
|
|
76
|
+
- Annual updates
|
|
77
|
+
- Network diagrams in Visio/Word
|
|
78
|
+
- Manual tracking of components
|
|
79
|
+
|
|
80
|
+
**FedRAMP 20x Changes:**
|
|
81
|
+
- **Minimum Assessment Scope (MAS)**: Clear definition of what must be included (FRR-MAS)
|
|
82
|
+
- **Information Resources**: Broader definition including non-machine resources
|
|
83
|
+
- **Automated Inventory**: Required automated asset discovery (KSI-PIY-01)
|
|
84
|
+
- **Dynamic Boundaries**: Support for elastic/cloud-native architectures
|
|
85
|
+
- **API-Based Documentation**: Machine-readable boundary definitions
|
|
86
|
+
|
|
87
|
+
**Must Include:**
|
|
88
|
+
- All systems processing Federal Customer Data
|
|
89
|
+
- Development/staging if they use production data
|
|
90
|
+
- All third-party services
|
|
91
|
+
- Monitoring and logging systems
|
|
92
|
+
- Backup/DR systems
|
|
93
|
+
- Non-machine resources (policies, procedures)
|
|
94
|
+
|
|
95
|
+
**Key Requirements:**
|
|
96
|
+
- FRR-MAS-01 through MAS-05: Minimum scope
|
|
97
|
+
- FRR-MAS-AY-01 through AY-06: Assessment year specifics
|
|
98
|
+
- KSI-PIY-01: Automated inventory
|
|
99
|
+
- KSI-CNA-02: Minimize attack surface""",
|
|
100
|
+
|
|
101
|
+
"evidence collection": """# Evidence Collection: Rev 4/5 vs 20x
|
|
102
|
+
|
|
103
|
+
**Rev 4/5 Approach:**
|
|
104
|
+
- Document-based evidence packages
|
|
105
|
+
- Manual collection for annual assessments
|
|
106
|
+
- Screenshots and exports
|
|
107
|
+
- Emailed to FedRAMP PMO
|
|
108
|
+
|
|
109
|
+
**FedRAMP 20x Changes:**
|
|
110
|
+
- **Authorization Data Sharing (ADS)**: API-based continuous data sharing (FRR-ADS)
|
|
111
|
+
- **Machine-Readable**: JSON/XML instead of Word/PDF
|
|
112
|
+
- **Automated Collection**: "Automatically if possible" per FRD-ALL-07
|
|
113
|
+
- **Continuous Updates**: Real-time data instead of annual snapshots
|
|
114
|
+
- **Key Security Indicators**: 72 KSIs define what to track
|
|
115
|
+
|
|
116
|
+
**What to Track:**
|
|
117
|
+
- All 72 KSI metrics continuously
|
|
118
|
+
- Vulnerability scan results (API)
|
|
119
|
+
- Configuration baselines (IaC)
|
|
120
|
+
- Access logs (SIEM integration)
|
|
121
|
+
- Change records (automated from CI/CD)
|
|
122
|
+
- Incident response data
|
|
123
|
+
- Training completion records
|
|
124
|
+
|
|
125
|
+
**Key Requirements:**
|
|
126
|
+
- FRR-ADS-01 through ADS-10: Data sharing standards
|
|
127
|
+
- FRR-KSI-01 & KSI-02: KSI tracking requirements
|
|
128
|
+
- KSI-MLA-05: Infrastructure as Code
|
|
129
|
+
- Definition FRD-ALL-07: "Regularly" means automated""",
|
|
130
|
+
|
|
131
|
+
"change management": """# Change Management: Rev 4/5 vs 20x
|
|
132
|
+
|
|
133
|
+
**Rev 4/5 Approach:**
|
|
134
|
+
- Change requests documented
|
|
135
|
+
- CAB approval process
|
|
136
|
+
- Significant changes reported to FedRAMP
|
|
137
|
+
- Manual change logs
|
|
138
|
+
|
|
139
|
+
**FedRAMP 20x Changes:**
|
|
140
|
+
- **Significant Change Notifications (SCN)**: Structured notification process (FRR-SCN)
|
|
141
|
+
- **Automated Change Tracking**: Required logging of all changes (KSI-CMT-01)
|
|
142
|
+
- **CI/CD Integration**: Automated testing and validation (KSI-CMT-03)
|
|
143
|
+
- **Change Types**: Clear categorization (routine/recurring, administrative, transformative, impact)
|
|
144
|
+
- **Immutable Infrastructure**: Emphasis on cloud-native patterns (KSI-CNA-04)
|
|
145
|
+
|
|
146
|
+
**What Triggers Notification:**
|
|
147
|
+
- New services/components
|
|
148
|
+
- Architecture changes
|
|
149
|
+
- New vulnerabilities affecting agencies
|
|
150
|
+
- Cryptographic changes
|
|
151
|
+
- Boundary modifications
|
|
152
|
+
|
|
153
|
+
**Key Requirements:**
|
|
154
|
+
- FRR-SCN-01 through SCN-10: Base notification requirements
|
|
155
|
+
- FRR-SCN-TR-01 through TR-07: Transformative changes
|
|
156
|
+
- KSI-CMT-01 through CMT-05: Change management KSIs
|
|
157
|
+
- KSI-CMT-02: Redeployment procedures""",
|
|
158
|
+
|
|
159
|
+
"incident response": """# Incident Response: Rev 4/5 vs 20x
|
|
160
|
+
|
|
161
|
+
**Rev 4/5 Approach:**
|
|
162
|
+
- Incident response plan in SSP
|
|
163
|
+
- Report to US-CERT within 1 hour
|
|
164
|
+
- Document lessons learned
|
|
165
|
+
- Annual plan testing
|
|
166
|
+
|
|
167
|
+
**FedRAMP 20x Changes:**
|
|
168
|
+
- **Incident Communications Procedures (ICP)**: Structured communication requirements (FRR-ICP)
|
|
169
|
+
- **FedRAMP Security Inbox**: Central reporting mechanism (FRR-FSI, KSI-AFR-08)
|
|
170
|
+
- **Continuous Logging**: All incidents logged automatically (KSI-INR-02)
|
|
171
|
+
- **After Action Reports**: Required for significant incidents (KSI-INR-03)
|
|
172
|
+
- **Agency Coordination**: Must notify affected agencies
|
|
173
|
+
|
|
174
|
+
**Reporting Requirements:**
|
|
175
|
+
- Use FedRAMP Security Inbox for all security reports
|
|
176
|
+
- Report within required timeframes based on severity
|
|
177
|
+
- Include impact to Federal Customer Data
|
|
178
|
+
- Coordinate with affected agencies
|
|
179
|
+
|
|
180
|
+
**Key Requirements:**
|
|
181
|
+
- FRR-ICP-01 through ICP-09: Communication procedures
|
|
182
|
+
- FRR-FSI-01 through FSI-16: Security inbox usage
|
|
183
|
+
- KSI-INR-01 through INR-03: Incident response KSIs
|
|
184
|
+
- KSI-MLA-02: Audit logging"""
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
area_lower = requirement_area.lower()
|
|
188
|
+
|
|
189
|
+
# Try to match the area
|
|
190
|
+
for key, comparison in comparisons.items():
|
|
191
|
+
if key in area_lower or area_lower in key:
|
|
192
|
+
return comparison
|
|
193
|
+
|
|
194
|
+
# No match found, provide overview
|
|
195
|
+
return f"""# Rev 4/5 to 20x Comparison
|
|
196
|
+
|
|
197
|
+
I don't have specific comparison data for "{requirement_area}".
|
|
198
|
+
|
|
199
|
+
**Available comparison areas:**
|
|
200
|
+
- continuous monitoring
|
|
201
|
+
- vulnerability management
|
|
202
|
+
- authorization boundary
|
|
203
|
+
- evidence collection
|
|
204
|
+
- change management
|
|
205
|
+
- incident response
|
|
206
|
+
|
|
207
|
+
**Major Changes Across All Areas:**
|
|
208
|
+
1. **Document-based → API-based**: Everything shifts to machine-readable data
|
|
209
|
+
2. **Annual → Continuous**: Assessment and monitoring are now continuous
|
|
210
|
+
3. **Manual → Automated**: Strong emphasis on automation ("automatically if possible")
|
|
211
|
+
4. **Static → Dynamic**: Support for cloud-native, elastic architectures
|
|
212
|
+
5. **72 Key Security Indicators**: New framework defining what to track
|
|
213
|
+
6. **Collaborative Model**: CSP, agencies, and FedRAMP share data continuously
|
|
214
|
+
|
|
215
|
+
Try searching with one of the available areas, or use search_requirements to find specific requirements."""
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
async def get_implementation_examples_impl(requirement_id: str, data_loader) -> str:
|
|
220
|
+
"""
|
|
221
|
+
Provide practical implementation examples for a specific requirement.
|
|
222
|
+
|
|
223
|
+
Args:
|
|
224
|
+
requirement_id: The requirement ID (e.g., "FRR-VDR-01", "KSI-IAM-01")
|
|
225
|
+
|
|
226
|
+
Returns:
|
|
227
|
+
Practical implementation guidance and examples
|
|
228
|
+
"""
|
|
229
|
+
examples = {
|
|
230
|
+
"KSI-IAM-01": """# Implementation Example: KSI-IAM-01 (Phishing-Resistant MFA)
|
|
231
|
+
|
|
232
|
+
**Requirement:** Implement phishing-resistant multi-factor authentication
|
|
233
|
+
|
|
234
|
+
**Good Implementations:**
|
|
235
|
+
|
|
236
|
+
1. **FIDO2/WebAuthn Hardware Keys**
|
|
237
|
+
```
|
|
238
|
+
- YubiKey 5 Series
|
|
239
|
+
- Google Titan Security Keys
|
|
240
|
+
- Configuration: Require security key for all privileged access
|
|
241
|
+
- No SMS or TOTP allowed for admin accounts
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
2. **Platform Authenticators**
|
|
245
|
+
```
|
|
246
|
+
- Windows Hello for Business
|
|
247
|
+
- Touch ID/Face ID on macOS
|
|
248
|
+
- Android/iOS biometric authentication
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
3. **Cloud Provider Solutions**
|
|
252
|
+
```
|
|
253
|
+
Azure: Conditional Access with FIDO2 keys (recommended)
|
|
254
|
+
Microsoft Entra ID: Passwordless authentication
|
|
255
|
+
Okta: FIDO2 WebAuthn support
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
**Implementation Steps:**
|
|
259
|
+
1. Purchase FIDO2 security keys for all users
|
|
260
|
+
2. Configure IdP (Microsoft Entra ID, Okta, Auth0) for FIDO2
|
|
261
|
+
3. Enroll users with backup keys
|
|
262
|
+
4. Disable SMS/TOTP for privileged accounts
|
|
263
|
+
5. Document in security procedures
|
|
264
|
+
|
|
265
|
+
**Anti-Patterns (Not Phishing-Resistant):**
|
|
266
|
+
❌ SMS one-time codes
|
|
267
|
+
❌ TOTP apps (Google Authenticator, Authy)
|
|
268
|
+
❌ Email verification codes
|
|
269
|
+
❌ Push notifications without device binding
|
|
270
|
+
|
|
271
|
+
**Evidence to Collect:**
|
|
272
|
+
- MFA configuration screenshots
|
|
273
|
+
- List of users with security keys
|
|
274
|
+
- IdP audit logs showing FIDO2 usage""",
|
|
275
|
+
|
|
276
|
+
"KSI-MLA-01": """# Implementation Example: KSI-MLA-01 (SIEM)
|
|
277
|
+
|
|
278
|
+
**Requirement:** Implement Security Information and Event Management
|
|
279
|
+
|
|
280
|
+
**Good Implementations:**
|
|
281
|
+
|
|
282
|
+
1. **Cloud-Native SIEM**
|
|
283
|
+
```
|
|
284
|
+
Microsoft Sentinel:
|
|
285
|
+
- Azure-native SIEM/SOAR solution
|
|
286
|
+
- Integrate with Microsoft Entra ID, Defender for Cloud
|
|
287
|
+
- Create dashboards for FedRAMP KSIs
|
|
288
|
+
- Set up analytics rules for security events
|
|
289
|
+
|
|
290
|
+
Splunk Cloud:
|
|
291
|
+
- Forward all logs via Splunk Universal Forwarder
|
|
292
|
+
- Create dashboards for FedRAMP KSIs
|
|
293
|
+
- Set up alerts for security events
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
2. **Log Sources to Include**
|
|
297
|
+
```
|
|
298
|
+
✓ Application logs (stdout/stderr)
|
|
299
|
+
✓ Web server access/error logs
|
|
300
|
+
✓ Database audit logs
|
|
301
|
+
✓ Cloud provider logs (Azure Activity Log, Azure Resource logs)
|
|
302
|
+
✓ Container/Kubernetes logs
|
|
303
|
+
✓ Authentication logs (IdP)
|
|
304
|
+
✓ Network flow logs
|
|
305
|
+
✓ Security tool output (vulnerability scanners)
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
3. **Architecture Example**
|
|
309
|
+
```
|
|
310
|
+
Application → Azure Monitor Agent → Log Analytics → Sentinel
|
|
311
|
+
Azure Activity Log → Log Analytics → Sentinel
|
|
312
|
+
Kubernetes (AKS) → Container Insights → Sentinel
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
**Retention Requirements:**
|
|
316
|
+
- Security logs: 1 year minimum
|
|
317
|
+
- Audit logs: Per NARA requirements (usually 3+ years)
|
|
318
|
+
- Configure automated archival to Azure Blob Storage
|
|
319
|
+
|
|
320
|
+
**Evidence to Collect:**
|
|
321
|
+
- SIEM architecture diagram
|
|
322
|
+
- List of all log sources
|
|
323
|
+
- Retention policy documentation
|
|
324
|
+
- Sample SIEM queries/dashboards""",
|
|
325
|
+
|
|
326
|
+
"FRR-VDR-01": """# Implementation Example: FRR-VDR-01 (Vulnerability Detection)
|
|
327
|
+
|
|
328
|
+
**Requirement:** Implement automated vulnerability detection
|
|
329
|
+
|
|
330
|
+
**Good Implementations:**
|
|
331
|
+
|
|
332
|
+
1. **Multi-Layer Scanning**
|
|
333
|
+
```
|
|
334
|
+
Infrastructure: Microsoft Defender for Cloud, Tenable.io, Qualys
|
|
335
|
+
Container Images: Trivy, Microsoft Defender for Containers, Snyk
|
|
336
|
+
Code: GitHub Advanced Security, Snyk Code, SonarQube
|
|
337
|
+
Dependencies: Dependabot, Snyk, WhiteSource
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
2. **Continuous Scanning Pipeline**
|
|
341
|
+
```
|
|
342
|
+
git push → GitHub Actions →
|
|
343
|
+
├─ Trivy scan (container images)
|
|
344
|
+
├─ Snyk scan (dependencies)
|
|
345
|
+
├─ SonarQube (code quality/security)
|
|
346
|
+
└─ Block deployment if Critical/High found
|
|
347
|
+
|
|
348
|
+
Production: Tenable.io scans every 24 hours
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
3. **Configuration Example (GitHub Actions)**
|
|
352
|
+
```yaml
|
|
353
|
+
- name: Run Trivy vulnerability scanner
|
|
354
|
+
uses: aquasecurity/trivy-action@master
|
|
355
|
+
with:
|
|
356
|
+
scan-type: 'image'
|
|
357
|
+
image-ref: ${{ env.IMAGE }}
|
|
358
|
+
severity: 'CRITICAL,HIGH'
|
|
359
|
+
exit-code: '1' # Fail build on findings
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
**Integration with VDR Timeframes:**
|
|
363
|
+
```
|
|
364
|
+
Critical/High → Create ticket automatically
|
|
365
|
+
Auto-assign to security team
|
|
366
|
+
Set due date per FRR-VDR-TF requirements
|
|
367
|
+
Send alert to Slack/PagerDuty
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
**Evidence to Collect:**
|
|
371
|
+
- Vulnerability scan reports
|
|
372
|
+
- CI/CD pipeline configurations
|
|
373
|
+
- Remediation tracking (Jira/GitHub Issues)
|
|
374
|
+
- Scan frequency proof""",
|
|
375
|
+
|
|
376
|
+
"KSI-SVC-06": """# Implementation Example: KSI-SVC-06 (Secret Management)
|
|
377
|
+
|
|
378
|
+
**Requirement:** Implement secure secret management
|
|
379
|
+
|
|
380
|
+
**Good Implementations:**
|
|
381
|
+
|
|
382
|
+
1. **Vault Solutions**
|
|
383
|
+
```
|
|
384
|
+
Azure Key Vault:
|
|
385
|
+
- Azure-native secret management solution
|
|
386
|
+
- Integrate with Managed Identity for authentication
|
|
387
|
+
- Automatic rotation support for Azure services
|
|
388
|
+
- Audit all access via Azure Monitor
|
|
389
|
+
|
|
390
|
+
HashiCorp Vault:
|
|
391
|
+
- Store all secrets in Vault
|
|
392
|
+
- Use Kubernetes auth method
|
|
393
|
+
- Rotate secrets automatically
|
|
394
|
+
- Audit all access
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
2. **Application Integration**
|
|
398
|
+
```python
|
|
399
|
+
# Good: Load from Azure Key Vault
|
|
400
|
+
from azure.identity import DefaultAzureCredential
|
|
401
|
+
from azure.keyvault.secrets import SecretClient
|
|
402
|
+
|
|
403
|
+
credential = DefaultAzureCredential()
|
|
404
|
+
client = SecretClient(vault_url="https://myvault.vault.azure.net/", credential=credential)
|
|
405
|
+
db_password = client.get_secret("prod-db-password").value
|
|
406
|
+
|
|
407
|
+
# Bad: Hardcoded
|
|
408
|
+
db_password = "MyPassword123" # ❌ Never do this
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
3. **Kubernetes Example (AKS)**
|
|
412
|
+
```yaml
|
|
413
|
+
# Use Azure Key Vault Provider for Secrets Store CSI Driver
|
|
414
|
+
apiVersion: secrets-store.csi.x-k8s.io/v1
|
|
415
|
+
kind: SecretProviderClass
|
|
416
|
+
metadata:
|
|
417
|
+
name: azure-keyvault-secrets
|
|
418
|
+
spec:
|
|
419
|
+
provider: azure
|
|
420
|
+
parameters:
|
|
421
|
+
keyvaultName: "myvault"
|
|
422
|
+
objects: |
|
|
423
|
+
array:
|
|
424
|
+
- |
|
|
425
|
+
objectName: prod-db-password
|
|
426
|
+
objectType: secret
|
|
427
|
+
tenantId: "<tenant-id>"
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
**Anti-Patterns:**
|
|
431
|
+
❌ Secrets in environment variables
|
|
432
|
+
❌ Secrets in source code
|
|
433
|
+
❌ Secrets in container images
|
|
434
|
+
❌ Secrets in ConfigMaps (use Secrets with encryption)
|
|
435
|
+
|
|
436
|
+
**Evidence to Collect:**
|
|
437
|
+
- Secret manager architecture
|
|
438
|
+
- Rotation policies
|
|
439
|
+
- Access audit logs
|
|
440
|
+
- No secrets in git (use git-secrets, truffleHog)""",
|
|
441
|
+
|
|
442
|
+
"FRR-ADS-01": """# Implementation Example: FRR-ADS-01 (Authorization Data Sharing)
|
|
443
|
+
|
|
444
|
+
**Requirement:** Share authorization data via API
|
|
445
|
+
|
|
446
|
+
**Good Implementation:**
|
|
447
|
+
|
|
448
|
+
1. **REST API Design**
|
|
449
|
+
```
|
|
450
|
+
GET /api/v1/authorization-boundary
|
|
451
|
+
GET /api/v1/vulnerabilities
|
|
452
|
+
GET /api/v1/ksi-metrics
|
|
453
|
+
GET /api/v1/incidents
|
|
454
|
+
GET /api/v1/change-notifications
|
|
455
|
+
|
|
456
|
+
Authentication: OAuth 2.0 or mTLS
|
|
457
|
+
Format: Machine-readable (JSON/XML required; OSCAL is one optional NIST standard approach)
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
2. **OSCAL Format Example**
|
|
461
|
+
```json
|
|
462
|
+
{
|
|
463
|
+
"system-security-plan": {
|
|
464
|
+
"uuid": "...",
|
|
465
|
+
"metadata": {...},
|
|
466
|
+
"system-characteristics": {
|
|
467
|
+
"system-information": {...},
|
|
468
|
+
"authorization-boundary": {
|
|
469
|
+
"diagrams": [...],
|
|
470
|
+
"components": [...]
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
3. **Architecture**
|
|
478
|
+
```
|
|
479
|
+
FedRAMP Portal ←→ API Gateway ←→ Lambda Functions
|
|
480
|
+
├─ Read from Databases
|
|
481
|
+
├─ Query SIEM
|
|
482
|
+
└─ Aggregate KSI data
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
**Data to Expose:**
|
|
486
|
+
- System boundary (OSCAL SSP format)
|
|
487
|
+
- Current vulnerabilities (OSCAL Assessment Results)
|
|
488
|
+
- KSI metrics (JSON)
|
|
489
|
+
- POA&Ms (OSCAL POA&M format)
|
|
490
|
+
- Recent changes/incidents
|
|
491
|
+
|
|
492
|
+
**Security:**
|
|
493
|
+
- Require mTLS or OAuth 2.0
|
|
494
|
+
- Rate limiting
|
|
495
|
+
- Audit all access
|
|
496
|
+
- Only expose to FedRAMP and authorizing agencies
|
|
497
|
+
|
|
498
|
+
**Evidence to Collect:**
|
|
499
|
+
- API documentation (OpenAPI/Swagger)
|
|
500
|
+
- Authentication configuration
|
|
501
|
+
- Sample API responses
|
|
502
|
+
- Access logs"""
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
if requirement_id in examples:
|
|
506
|
+
return examples[requirement_id]
|
|
507
|
+
|
|
508
|
+
# Try to provide general guidance based on requirement type
|
|
509
|
+
if "IAM" in requirement_id:
|
|
510
|
+
return "For IAM requirements, see KSI-IAM-01 example using get_implementation_examples('KSI-IAM-01')"
|
|
511
|
+
elif "VDR" in requirement_id:
|
|
512
|
+
return "For VDR requirements, see FRR-VDR-01 example using get_implementation_examples('FRR-VDR-01')"
|
|
513
|
+
elif "MLA" in requirement_id:
|
|
514
|
+
return "For monitoring/logging, see KSI-MLA-01 example using get_implementation_examples('KSI-MLA-01')"
|
|
515
|
+
elif "SVC" in requirement_id:
|
|
516
|
+
return "For service requirements, see KSI-SVC-06 example using get_implementation_examples('KSI-SVC-06')"
|
|
517
|
+
elif "ADS" in requirement_id:
|
|
518
|
+
return "For data sharing, see FRR-ADS-01 example using get_implementation_examples('FRR-ADS-01')"
|
|
519
|
+
|
|
520
|
+
return f"""# Implementation Examples Not Available
|
|
521
|
+
|
|
522
|
+
I don't have specific implementation examples for {requirement_id} yet.
|
|
523
|
+
|
|
524
|
+
**Available examples:**
|
|
525
|
+
- KSI-IAM-01: Phishing-resistant MFA
|
|
526
|
+
- KSI-MLA-01: SIEM implementation
|
|
527
|
+
- FRR-VDR-01: Vulnerability scanning
|
|
528
|
+
- KSI-SVC-06: Secret management
|
|
529
|
+
- FRR-ADS-01: Authorization data sharing API
|
|
530
|
+
|
|
531
|
+
**General Implementation Steps:**
|
|
532
|
+
1. Use get_control('{requirement_id}') to see requirement details
|
|
533
|
+
2. Search for cloud-native implementations of the requirement
|
|
534
|
+
3. Consider automation opportunities ("automatically if possible")
|
|
535
|
+
4. Document your implementation for 3PAO assessment
|
|
536
|
+
5. Set up continuous evidence collection
|
|
537
|
+
|
|
538
|
+
Use search_requirements to find related requirements."""
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
async def check_requirement_dependencies_impl(requirement_id: str, data_loader) -> str:
|
|
543
|
+
"""
|
|
544
|
+
Show which requirements are related or dependent on a specific requirement.
|
|
545
|
+
|
|
546
|
+
Args:
|
|
547
|
+
requirement_id: The requirement ID to check dependencies for
|
|
548
|
+
|
|
549
|
+
Returns:
|
|
550
|
+
List of related and dependent requirements
|
|
551
|
+
"""
|
|
552
|
+
dependencies = {
|
|
553
|
+
"FRR-VDR": ["KSI-PIY-03 (Vulnerability Disclosure Program)", "KSI-SVC-07 (Patching)",
|
|
554
|
+
"FRR-FSI (Security Inbox)", "FRR-CCM (Continuous Monitoring)"],
|
|
555
|
+
"FRR-ADS": ["FRR-KSI (KSI Tracking)", "FRR-CCM (Continuous Monitoring)",
|
|
556
|
+
"All KSI metrics must be shareable via API"],
|
|
557
|
+
"FRR-CCM": ["FRR-ADS (Data Sharing)", "FRR-PVA (Persistent Validation)",
|
|
558
|
+
"KSI-MLA-01 (SIEM)", "All 72 KSIs"],
|
|
559
|
+
"FRR-MAS": ["KSI-PIY-01 (Automated Inventory)", "FRR-SCN (Change Notifications)",
|
|
560
|
+
"KSI-CNA-02 (Attack Surface)"],
|
|
561
|
+
"KSI-MLA-01": ["KSI-MLA-02 through MLA-08 (Related logging requirements)",
|
|
562
|
+
"FRR-CCM (Continuous Monitoring)", "KSI-INR-02 (Incident Logging)"],
|
|
563
|
+
"KSI-IAM-01": ["KSI-IAM-02 through IAM-07 (Related identity requirements)",
|
|
564
|
+
"KSI-IAM-06 (Suspicious Activity)", "KSI-MLA-02 (Audit Logging)"],
|
|
565
|
+
"FRR-SCN": ["FRR-MAS (Boundary Changes)", "FRR-VDR (New Vulnerabilities)",
|
|
566
|
+
"KSI-CMT (Change Management)", "FRR-FSI (Notification Channel)"],
|
|
567
|
+
"FRR-ICP": ["FRR-FSI (Security Inbox)", "KSI-INR (Incident Response)",
|
|
568
|
+
"FRR-VDR (Vulnerability Reporting)"],
|
|
569
|
+
"FRR-PVA": ["FRR-CCM (Continuous Monitoring)", "KSI-CNA-08 (Persistent Assessment)",
|
|
570
|
+
"All 72 KSIs must be validated continuously"],
|
|
571
|
+
"KSI-CMT-01": ["KSI-CMT-02 through CMT-05", "FRR-SCN (Change Notifications)",
|
|
572
|
+
"KSI-MLA-02 (Audit Logging)", "KSI-CMT-03 (Automated Testing)"]
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
# Check for family match
|
|
576
|
+
for family, deps in dependencies.items():
|
|
577
|
+
if requirement_id.startswith(family):
|
|
578
|
+
result = f"# Dependencies for {requirement_id}\n\n"
|
|
579
|
+
result += f"**Related/Dependent Requirements:**\n\n"
|
|
580
|
+
for dep in deps:
|
|
581
|
+
result += f"- {dep}\n"
|
|
582
|
+
result += f"\n**Implementation Order:**\n"
|
|
583
|
+
result += f"These requirements should typically be implemented together or in sequence.\n"
|
|
584
|
+
result += f"\nUse get_control() to see details for each related requirement."
|
|
585
|
+
return result
|
|
586
|
+
|
|
587
|
+
return f"""# Dependencies for {requirement_id}
|
|
588
|
+
|
|
589
|
+
No specific dependency mappings available for this requirement.
|
|
590
|
+
|
|
591
|
+
**General Dependency Patterns:**
|
|
592
|
+
|
|
593
|
+
**FRR-VDR** (Vulnerability) depends on:
|
|
594
|
+
- Vulnerability scanning tools
|
|
595
|
+
- FedRAMP Security Inbox for reporting
|
|
596
|
+
- Patching processes
|
|
597
|
+
|
|
598
|
+
**FRR-CCM** (Continuous Monitoring) depends on:
|
|
599
|
+
- Authorization Data Sharing API
|
|
600
|
+
- All 72 KSI metrics
|
|
601
|
+
- SIEM implementation
|
|
602
|
+
|
|
603
|
+
**FRR-ADS** (Data Sharing) depends on:
|
|
604
|
+
- All requirements generating data
|
|
605
|
+
- API infrastructure
|
|
606
|
+
- OSCAL format adoption
|
|
607
|
+
|
|
608
|
+
**KSI-* (Key Security Indicators)** depend on:
|
|
609
|
+
- Automated collection tools
|
|
610
|
+
- SIEM/monitoring platform
|
|
611
|
+
- Continuous data pipelines
|
|
612
|
+
|
|
613
|
+
Use search_requirements to find requirements that mention '{requirement_id}'."""
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
async def estimate_implementation_effort_impl(requirement_id: str, data_loader) -> str:
|
|
618
|
+
"""
|
|
619
|
+
Provide rough effort estimates for implementing a specific requirement.
|
|
620
|
+
|
|
621
|
+
Args:
|
|
622
|
+
requirement_id: The requirement ID to estimate
|
|
623
|
+
|
|
624
|
+
Returns:
|
|
625
|
+
Effort estimation and timeline guidance
|
|
626
|
+
"""
|
|
627
|
+
estimates = {
|
|
628
|
+
"KSI-IAM-01": """# Effort Estimate: KSI-IAM-01 (Phishing-Resistant MFA)
|
|
629
|
+
|
|
630
|
+
**Timeline:** 2-4 weeks
|
|
631
|
+
|
|
632
|
+
**Effort Breakdown:**
|
|
633
|
+
- Planning & key procurement: 3-5 days
|
|
634
|
+
- IdP configuration: 2-3 days
|
|
635
|
+
- User enrollment: 1-2 weeks (depends on user count)
|
|
636
|
+
- Documentation: 2-3 days
|
|
637
|
+
- Testing & validation: 3-5 days
|
|
638
|
+
|
|
639
|
+
**Team Required:**
|
|
640
|
+
- Identity/Access Management engineer (lead)
|
|
641
|
+
- Security engineer (validation)
|
|
642
|
+
- IT support (user enrollment)
|
|
643
|
+
|
|
644
|
+
**Costs:**
|
|
645
|
+
- Hardware keys: $20-50 per user
|
|
646
|
+
- IdP licensing: May require higher tier (check current plan)
|
|
647
|
+
- Staff time: ~2-3 person-weeks
|
|
648
|
+
|
|
649
|
+
**Complexity:** Medium
|
|
650
|
+
**Blocker Risk:** Low - well-established technology""",
|
|
651
|
+
|
|
652
|
+
"KSI-MLA-01": """# Effort Estimate: KSI-MLA-01 (SIEM Implementation)
|
|
653
|
+
|
|
654
|
+
**Timeline:** 6-12 weeks
|
|
655
|
+
|
|
656
|
+
**Effort Breakdown:**
|
|
657
|
+
- SIEM selection/procurement: 2-3 weeks
|
|
658
|
+
- Architecture design: 1 week
|
|
659
|
+
- Log source integration: 3-4 weeks
|
|
660
|
+
- Dashboard/alert creation: 2-3 weeks
|
|
661
|
+
- Retention configuration: 1 week
|
|
662
|
+
- Documentation: 1 week
|
|
663
|
+
- Testing: 1-2 weeks
|
|
664
|
+
|
|
665
|
+
**Team Required:**
|
|
666
|
+
- Security engineer (lead)
|
|
667
|
+
- DevOps/SRE (log integration)
|
|
668
|
+
- Cloud architect (design)
|
|
669
|
+
- Application teams (log format standardization)
|
|
670
|
+
|
|
671
|
+
**Costs:**
|
|
672
|
+
- SIEM licensing: $50K-200K+/year (depends on log volume)
|
|
673
|
+
- Implementation services: $30K-100K (if using vendor)
|
|
674
|
+
- Staff time: ~8-12 person-weeks
|
|
675
|
+
|
|
676
|
+
**Complexity:** High
|
|
677
|
+
**Blocker Risk:** Medium - requires coordination across teams""",
|
|
678
|
+
|
|
679
|
+
"FRR-VDR-01": """# Effort Estimate: FRR-VDR-01 (Vulnerability Detection)
|
|
680
|
+
|
|
681
|
+
**Timeline:** 4-8 weeks
|
|
682
|
+
|
|
683
|
+
**Effort Breakdown:**
|
|
684
|
+
- Tool selection: 1-2 weeks
|
|
685
|
+
- Scanner deployment: 1 week
|
|
686
|
+
- CI/CD integration: 2-3 weeks
|
|
687
|
+
- Baseline scan & triage: 2-3 weeks
|
|
688
|
+
- Remediation workflow: 1 week
|
|
689
|
+
- Documentation: 1 week
|
|
690
|
+
|
|
691
|
+
**Team Required:**
|
|
692
|
+
- Security engineer (lead)
|
|
693
|
+
- DevOps engineer (CI/CD integration)
|
|
694
|
+
- Development team (remediation)
|
|
695
|
+
|
|
696
|
+
**Costs:**
|
|
697
|
+
- Scanning tools: $10K-50K/year
|
|
698
|
+
- Staff time: ~6-10 person-weeks
|
|
699
|
+
|
|
700
|
+
**Complexity:** Medium
|
|
701
|
+
**Blocker Risk:** High - initial scan will find many vulnerabilities requiring remediation""",
|
|
702
|
+
|
|
703
|
+
"FRR-ADS-01": """# Effort Estimate: FRR-ADS-01 (Authorization Data Sharing API)
|
|
704
|
+
|
|
705
|
+
**Timeline:** 12-16 weeks
|
|
706
|
+
|
|
707
|
+
**Effort Breakdown:**
|
|
708
|
+
- API design (OSCAL format): 2-3 weeks
|
|
709
|
+
- Backend development: 4-6 weeks
|
|
710
|
+
- Authentication/authorization: 2 weeks
|
|
711
|
+
- Data aggregation from sources: 3-4 weeks
|
|
712
|
+
- Testing: 2 weeks
|
|
713
|
+
- Documentation: 1-2 weeks
|
|
714
|
+
- FedRAMP review: 2-3 weeks
|
|
715
|
+
|
|
716
|
+
**Team Required:**
|
|
717
|
+
- Backend developer (lead)
|
|
718
|
+
- Security engineer (authentication)
|
|
719
|
+
- DevOps (deployment)
|
|
720
|
+
- Compliance PM (requirements)
|
|
721
|
+
|
|
722
|
+
**Costs:**
|
|
723
|
+
- Infrastructure: $500-2000/month
|
|
724
|
+
- Staff time: ~16-20 person-weeks
|
|
725
|
+
|
|
726
|
+
**Complexity:** High
|
|
727
|
+
**Blocker Risk:** High - requires all other data sources to be ready""",
|
|
728
|
+
|
|
729
|
+
"FRR-CCM": """# Effort Estimate: FRR-CCM (Collaborative Continuous Monitoring)
|
|
730
|
+
|
|
731
|
+
**Timeline:** 16-24 weeks (most complex)
|
|
732
|
+
|
|
733
|
+
**Effort Breakdown:**
|
|
734
|
+
- Planning & architecture: 3-4 weeks
|
|
735
|
+
- KSI metric collection: 6-8 weeks
|
|
736
|
+
- Data sharing API: 4-6 weeks
|
|
737
|
+
- Quarterly review process: 2 weeks
|
|
738
|
+
- Integration testing: 3-4 weeks
|
|
739
|
+
- Documentation: 2-3 weeks
|
|
740
|
+
|
|
741
|
+
**Team Required:**
|
|
742
|
+
- Program manager (lead)
|
|
743
|
+
- Security engineers (3-4)
|
|
744
|
+
- DevOps engineers (2-3)
|
|
745
|
+
- Compliance specialist
|
|
746
|
+
|
|
747
|
+
**Costs:**
|
|
748
|
+
- Tooling: $100K-300K/year
|
|
749
|
+
- Staff time: ~40-50 person-weeks
|
|
750
|
+
|
|
751
|
+
**Complexity:** Very High
|
|
752
|
+
**Blocker Risk:** High - depends on many other requirements
|
|
753
|
+
|
|
754
|
+
**Prerequisites:**
|
|
755
|
+
- SIEM (KSI-MLA-01)
|
|
756
|
+
- Vulnerability scanning (FRR-VDR)
|
|
757
|
+
- All 72 KSI collection methods
|
|
758
|
+
- Authorization Data Sharing API (FRR-ADS)"""
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
# Check for family-level estimates
|
|
762
|
+
if "CCM" in requirement_id:
|
|
763
|
+
return estimates.get("FRR-CCM", "See FRR-CCM for family estimate")
|
|
764
|
+
|
|
765
|
+
if requirement_id in estimates:
|
|
766
|
+
return estimates[requirement_id]
|
|
767
|
+
|
|
768
|
+
# Provide general guidance
|
|
769
|
+
return f"""# Effort Estimate: {requirement_id}
|
|
770
|
+
|
|
771
|
+
**General Estimation Factors:**
|
|
772
|
+
|
|
773
|
+
**Complexity Levels:**
|
|
774
|
+
- **Low (1-3 weeks)**: Configuration changes, policy updates, simple tools
|
|
775
|
+
- **Medium (4-8 weeks)**: Tool implementation, integration work, process changes
|
|
776
|
+
- **High (8-16 weeks)**: Custom development, multiple tool integration, org change
|
|
777
|
+
- **Very High (16+ weeks)**: Platform-wide changes, cultural shifts, complex automation
|
|
778
|
+
|
|
779
|
+
**Common Time Sinks:**
|
|
780
|
+
- Procurement/vendor selection: Add 2-4 weeks
|
|
781
|
+
- Cross-team coordination: Add 25-50% to estimates
|
|
782
|
+
- Legacy system integration: Add 50-100% to estimates
|
|
783
|
+
- Cultural/process change: Add 2-4 weeks for each team affected
|
|
784
|
+
|
|
785
|
+
**Available Detailed Estimates:**
|
|
786
|
+
- KSI-IAM-01: MFA (2-4 weeks)
|
|
787
|
+
- KSI-MLA-01: SIEM (6-12 weeks)
|
|
788
|
+
- FRR-VDR-01: Vulnerability scanning (4-8 weeks)
|
|
789
|
+
- FRR-ADS-01: Data sharing API (12-16 weeks)
|
|
790
|
+
- FRR-CCM: Continuous monitoring (16-24 weeks)
|
|
791
|
+
|
|
792
|
+
Use get_control('{requirement_id}') to understand scope, then estimate based on:
|
|
793
|
+
1. Technical complexity
|
|
794
|
+
2. Organizational readiness
|
|
795
|
+
3. Existing tooling
|
|
796
|
+
4. Team availability"""
|
|
797
|
+
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
async def get_cloud_native_guidance_impl(technology: str, data_loader) -> str:
|
|
801
|
+
"""
|
|
802
|
+
Get cloud-native specific guidance for implementing FedRAMP 20x.
|
|
803
|
+
|
|
804
|
+
Args:
|
|
805
|
+
technology: Cloud-native technology (e.g., "kubernetes", "containers", "serverless", "terraform")
|
|
806
|
+
|
|
807
|
+
Returns:
|
|
808
|
+
Cloud-native implementation guidance
|
|
809
|
+
"""
|
|
810
|
+
guidance = {
|
|
811
|
+
"kubernetes": """# FedRAMP 20x for Kubernetes (AKS)
|
|
812
|
+
|
|
813
|
+
**Key Requirements:**
|
|
814
|
+
|
|
815
|
+
**1. Container Scanning (FRR-VDR, KSI-PIY-05)**
|
|
816
|
+
```yaml
|
|
817
|
+
# Scan images in CI/CD
|
|
818
|
+
- name: Scan container image
|
|
819
|
+
uses: aquasecurity/trivy-action@master
|
|
820
|
+
with:
|
|
821
|
+
severity: 'CRITICAL,HIGH'
|
|
822
|
+
exit-code: '1'
|
|
823
|
+
```
|
|
824
|
+
|
|
825
|
+
**2. Immutable Infrastructure (KSI-CNA-04)**
|
|
826
|
+
- Use immutable container images
|
|
827
|
+
- Never SSH into pods to make changes
|
|
828
|
+
- Redeploy rather than patch in place
|
|
829
|
+
- Tag images with git commit SHA
|
|
830
|
+
|
|
831
|
+
**3. Network Policies (KSI-CNA-01, CNA-03)**
|
|
832
|
+
```yaml
|
|
833
|
+
apiVersion: networking.k8s.io/v1
|
|
834
|
+
kind: NetworkPolicy
|
|
835
|
+
metadata:
|
|
836
|
+
name: deny-all-ingress
|
|
837
|
+
spec:
|
|
838
|
+
podSelector: {}
|
|
839
|
+
policyTypes:
|
|
840
|
+
- Ingress
|
|
841
|
+
# Then create specific allow rules
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
**4. Secret Management (KSI-SVC-06)**
|
|
845
|
+
```yaml
|
|
846
|
+
# Use Azure Key Vault Provider for Secrets Store CSI Driver
|
|
847
|
+
apiVersion: secrets-store.csi.x-k8s.io/v1
|
|
848
|
+
kind: SecretProviderClass
|
|
849
|
+
metadata:
|
|
850
|
+
name: azure-keyvault-secrets
|
|
851
|
+
spec:
|
|
852
|
+
provider: azure
|
|
853
|
+
parameters:
|
|
854
|
+
usePodIdentity: "true" # Or use Managed Identity
|
|
855
|
+
keyvaultName: "myvault"
|
|
856
|
+
objects: |
|
|
857
|
+
array:
|
|
858
|
+
- |
|
|
859
|
+
objectName: db-password
|
|
860
|
+
objectType: secret
|
|
861
|
+
tenantId: "<tenant-id>"
|
|
862
|
+
```
|
|
863
|
+
|
|
864
|
+
**5. Logging (KSI-MLA-01, MLA-02)**
|
|
865
|
+
```bash
|
|
866
|
+
# AKS automatically forwards logs to Azure Monitor/Container Insights
|
|
867
|
+
# Enable Container Insights on your AKS cluster:
|
|
868
|
+
az aks enable-addons -a monitoring -n myAKSCluster -g myResourceGroup
|
|
869
|
+
|
|
870
|
+
# Logs flow: AKS → Log Analytics → Sentinel
|
|
871
|
+
# Query logs in Log Analytics or Sentinel
|
|
872
|
+
```
|
|
873
|
+
|
|
874
|
+
**6. Monitoring (KSI-MLA-01, KSI-CNA-08)**
|
|
875
|
+
- Use Azure Monitor for metrics and Container Insights
|
|
876
|
+
- Configure Microsoft Defender for Containers for runtime security
|
|
877
|
+
- Use Azure Policy for Kubernetes admission control
|
|
878
|
+
|
|
879
|
+
**7. Authorization Boundary (FRR-MAS)**
|
|
880
|
+
Must include:
|
|
881
|
+
- All namespaces
|
|
882
|
+
- Control plane components
|
|
883
|
+
- Ingress controllers
|
|
884
|
+
- Service mesh (if used)
|
|
885
|
+
- CI/CD pipelines that deploy to cluster
|
|
886
|
+
|
|
887
|
+
**Tools:**
|
|
888
|
+
- Trivy/Snyk: Container scanning
|
|
889
|
+
- Falco: Runtime security
|
|
890
|
+
- OPA/Kyverno: Policy enforcement
|
|
891
|
+
- External Secrets: Secret management
|
|
892
|
+
- Fluent Bit: Log forwarding""",
|
|
893
|
+
|
|
894
|
+
"containers": """# FedRAMP 20x for Containers
|
|
895
|
+
|
|
896
|
+
**Key Requirements:**
|
|
897
|
+
|
|
898
|
+
**1. Image Scanning (FRR-VDR)**
|
|
899
|
+
```dockerfile
|
|
900
|
+
# Use minimal base images
|
|
901
|
+
FROM cgr.dev/chainguard/python:latest-dev AS builder
|
|
902
|
+
# Better than: FROM python:3.11 (many vulnerabilities)
|
|
903
|
+
|
|
904
|
+
# Scan in CI/CD
|
|
905
|
+
docker run aquasec/trivy image myapp:latest
|
|
906
|
+
```
|
|
907
|
+
|
|
908
|
+
**2. Image Signing (KSI-SVC-05, SVC-09)**
|
|
909
|
+
```bash
|
|
910
|
+
# Use Azure Container Registry content trust or Notation
|
|
911
|
+
# Enable content trust in ACR:
|
|
912
|
+
az acr config content-trust update --registry myregistry --status enabled
|
|
913
|
+
|
|
914
|
+
# Or use Notation with Azure Key Vault:
|
|
915
|
+
notation sign myregistry.azurecr.io/myapp:v1.0.0
|
|
916
|
+
notation verify myregistry.azurecr.io/myapp:v1.0.0
|
|
917
|
+
```
|
|
918
|
+
|
|
919
|
+
**3. Runtime Security (KSI-CNA-05, CNA-08)**
|
|
920
|
+
- Use minimal base images (distroless, Alpine)
|
|
921
|
+
- Run as non-root user
|
|
922
|
+
- Use read-only root filesystem
|
|
923
|
+
- Drop all capabilities
|
|
924
|
+
|
|
925
|
+
```dockerfile
|
|
926
|
+
FROM mcr.microsoft.com/cbl-mariner/distroless/minimal:2.0
|
|
927
|
+
USER nonroot:nonroot
|
|
928
|
+
COPY --chown=nonroot:nonroot app /app
|
|
929
|
+
```
|
|
930
|
+
|
|
931
|
+
**4. Secret Management (KSI-SVC-06)**
|
|
932
|
+
❌ Never bake secrets into images
|
|
933
|
+
❌ Don't use ENV vars for secrets
|
|
934
|
+
✓ Mount secrets at runtime from vault
|
|
935
|
+
✓ Use cloud provider secret services
|
|
936
|
+
|
|
937
|
+
**5. Logging (KSI-MLA-02)**
|
|
938
|
+
```python
|
|
939
|
+
# Log to stdout/stderr (12-factor)
|
|
940
|
+
import logging
|
|
941
|
+
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
|
|
942
|
+
# Container runtime forwards to SIEM
|
|
943
|
+
```
|
|
944
|
+
|
|
945
|
+
**6. Patching (KSI-SVC-07)**
|
|
946
|
+
- Rebuild images regularly (weekly minimum)
|
|
947
|
+
- Automate with Renovate/Dependabot
|
|
948
|
+
- Use tag pinning: `image:v1.2.3` not `image:latest`
|
|
949
|
+
|
|
950
|
+
**Best Practices:**
|
|
951
|
+
- Multi-stage builds to minimize size
|
|
952
|
+
- .dockerignore to prevent secret leakage
|
|
953
|
+
- Scan images before push and on schedule
|
|
954
|
+
- Use private registries with RBAC
|
|
955
|
+
- Implement image promotion (dev → staging → prod)""",
|
|
956
|
+
|
|
957
|
+
"serverless": """# FedRAMP 20x for Serverless (Azure Functions, AWS Lambda)
|
|
958
|
+
|
|
959
|
+
**Key Requirements:**
|
|
960
|
+
|
|
961
|
+
**1. Function Scanning (FRR-VDR)**
|
|
962
|
+
```yaml
|
|
963
|
+
# Scan dependencies in CI/CD
|
|
964
|
+
- name: Scan Python dependencies
|
|
965
|
+
run: |
|
|
966
|
+
pip install safety
|
|
967
|
+
safety check
|
|
968
|
+
|
|
969
|
+
# Scan IaC templates
|
|
970
|
+
- name: Scan Terraform
|
|
971
|
+
uses: aquasecurity/tfsec-action@v1.0.0
|
|
972
|
+
```
|
|
973
|
+
|
|
974
|
+
**2. Secret Management (KSI-SVC-06)**
|
|
975
|
+
```python
|
|
976
|
+
# Azure Functions example with Managed Identity
|
|
977
|
+
from azure.identity import DefaultAzureCredential
|
|
978
|
+
from azure.keyvault.secrets import SecretClient
|
|
979
|
+
import azure.functions as func
|
|
980
|
+
|
|
981
|
+
def main(req: func.HttpRequest) -> func.HttpResponse:
|
|
982
|
+
# Use Managed Identity - no credentials needed!
|
|
983
|
+
credential = DefaultAzureCredential()
|
|
984
|
+
client = SecretClient(
|
|
985
|
+
vault_url="https://myvault.vault.azure.net/",
|
|
986
|
+
credential=credential
|
|
987
|
+
)
|
|
988
|
+
db_password = client.get_secret("prod-db-password").value
|
|
989
|
+
# Use password...
|
|
990
|
+
```
|
|
991
|
+
|
|
992
|
+
**3. Logging (KSI-MLA-01, MLA-02)**
|
|
993
|
+
```python
|
|
994
|
+
import json
|
|
995
|
+
import logging
|
|
996
|
+
import azure.functions as func
|
|
997
|
+
|
|
998
|
+
def main(req: func.HttpRequest, context: func.Context) -> func.HttpResponse:
|
|
999
|
+
# Structured logging to Application Insights
|
|
1000
|
+
logging.info(json.dumps({
|
|
1001
|
+
'level': 'INFO',
|
|
1002
|
+
'message': 'Processing request',
|
|
1003
|
+
'invocation_id': context.invocation_id,
|
|
1004
|
+
'user_id': req.params.get('user_id')
|
|
1005
|
+
}))
|
|
1006
|
+
|
|
1007
|
+
# Logs go to Application Insights → Log Analytics → Sentinel
|
|
1008
|
+
```
|
|
1009
|
+
|
|
1010
|
+
**4. IAM/Authorization (KSI-IAM-05)**
|
|
1011
|
+
```bicep
|
|
1012
|
+
// Principle of least privilege with Managed Identity
|
|
1013
|
+
resource functionApp 'Microsoft.Web/sites@2022-03-01' = {
|
|
1014
|
+
name: 'myFunctionApp'
|
|
1015
|
+
kind: 'functionapp'
|
|
1016
|
+
identity: {
|
|
1017
|
+
type: 'SystemAssigned'
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
// Grant only specific permissions needed
|
|
1022
|
+
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
|
|
1023
|
+
scope: storageAccount
|
|
1024
|
+
name: guid(functionApp.id, 'Storage Blob Data Reader')
|
|
1025
|
+
properties: {
|
|
1026
|
+
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '2a2b9908-6ea1-4ae2-8e65-a410df84e7d1')
|
|
1027
|
+
principalId: functionApp.identity.principalId
|
|
1028
|
+
}
|
|
1029
|
+
}
|
|
1030
|
+
```
|
|
1031
|
+
|
|
1032
|
+
**5. Monitoring (KSI-CNA-08)**
|
|
1033
|
+
- Enable Application Insights for tracing
|
|
1034
|
+
- Azure Monitor metrics/alerts
|
|
1035
|
+
- Integrate with Sentinel (SIEM)
|
|
1036
|
+
|
|
1037
|
+
**6. Authorization Boundary (FRR-MAS)**
|
|
1038
|
+
Must include:
|
|
1039
|
+
- All Azure Functions
|
|
1040
|
+
- API Management/Application Gateway
|
|
1041
|
+
- Event sources (Service Bus, Event Grid, Blob Storage)
|
|
1042
|
+
- Managed Identities
|
|
1043
|
+
- Secrets in Key Vault
|
|
1044
|
+
|
|
1045
|
+
**7. Change Management (KSI-CMT-03)**
|
|
1046
|
+
```yaml
|
|
1047
|
+
# Automated testing
|
|
1048
|
+
- name: Run tests
|
|
1049
|
+
run: pytest tests/
|
|
1050
|
+
|
|
1051
|
+
- name: Deploy to staging
|
|
1052
|
+
if: success()
|
|
1053
|
+
run: serverless deploy --stage staging
|
|
1054
|
+
|
|
1055
|
+
- name: Run integration tests
|
|
1056
|
+
run: pytest tests/integration/
|
|
1057
|
+
|
|
1058
|
+
- name: Deploy to prod
|
|
1059
|
+
if: success()
|
|
1060
|
+
run: serverless deploy --stage prod
|
|
1061
|
+
```
|
|
1062
|
+
|
|
1063
|
+
**Best Practices:**
|
|
1064
|
+
- Use IaC (Bicep, Terraform, ARM templates)
|
|
1065
|
+
- Enable function versioning and deployment slots
|
|
1066
|
+
- Implement gradual rollouts with deployment slots
|
|
1067
|
+
- Set memory/timeout limits appropriately
|
|
1068
|
+
- Use VPC for database access""",
|
|
1069
|
+
|
|
1070
|
+
"terraform": """# FedRAMP 20x for Terraform (IaC)
|
|
1071
|
+
|
|
1072
|
+
**Key Requirements:**
|
|
1073
|
+
|
|
1074
|
+
**1. Infrastructure as Code (KSI-MLA-05)**
|
|
1075
|
+
```hcl
|
|
1076
|
+
# Everything in Terraform with Azure Provider
|
|
1077
|
+
resource "azurerm_linux_virtual_machine" "web" {
|
|
1078
|
+
name = "web-server"
|
|
1079
|
+
resource_group_name = azurerm_resource_group.main.name
|
|
1080
|
+
location = azurerm_resource_group.main.location
|
|
1081
|
+
size = "Standard_D2s_v3"
|
|
1082
|
+
|
|
1083
|
+
# Network interface
|
|
1084
|
+
network_interface_ids = [azurerm_network_interface.web.id]
|
|
1085
|
+
|
|
1086
|
+
# Encrypted OS disk (required for FedRAMP)
|
|
1087
|
+
os_disk {
|
|
1088
|
+
caching = "ReadWrite"
|
|
1089
|
+
storage_account_type = "Premium_LRS"
|
|
1090
|
+
disk_encryption_set_id = azurerm_disk_encryption_set.main.id
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
# Boot diagnostics (monitoring)
|
|
1094
|
+
boot_diagnostics {
|
|
1095
|
+
storage_account_uri = azurerm_storage_account.diagnostics.primary_blob_endpoint
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
source_image_reference {
|
|
1099
|
+
publisher = "Canonical"
|
|
1100
|
+
offer = "0001-com-ubuntu-server-jammy"
|
|
1101
|
+
sku = "22_04-lts-gen2"
|
|
1102
|
+
version = "latest"
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
tags = {
|
|
1106
|
+
Name = "web-server"
|
|
1107
|
+
Environment = "production"
|
|
1108
|
+
ManagedBy = "terraform"
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1111
|
+
```
|
|
1112
|
+
|
|
1113
|
+
**2. Configuration Scanning (FRR-VDR, KSI-PIY-05)**
|
|
1114
|
+
```yaml
|
|
1115
|
+
# GitHub Actions
|
|
1116
|
+
- name: tfsec
|
|
1117
|
+
uses: aquasecurity/tfsec-action@v1.0.0
|
|
1118
|
+
|
|
1119
|
+
- name: Checkov
|
|
1120
|
+
uses: bridgecrewio/checkov-action@master
|
|
1121
|
+
|
|
1122
|
+
- name: Terraform validate
|
|
1123
|
+
run: terraform validate
|
|
1124
|
+
```
|
|
1125
|
+
|
|
1126
|
+
**3. State File Security (KSI-SVC-06)**
|
|
1127
|
+
```hcl
|
|
1128
|
+
# Remote state with encryption in Azure Storage
|
|
1129
|
+
terraform {
|
|
1130
|
+
backend "azurerm" {
|
|
1131
|
+
resource_group_name = "terraform-state-rg"
|
|
1132
|
+
storage_account_name = "tfstatestorage"
|
|
1133
|
+
container_name = "tfstate"
|
|
1134
|
+
key = "prod.terraform.tfstate"
|
|
1135
|
+
|
|
1136
|
+
# Enable encryption at rest (automatic with Azure Storage)
|
|
1137
|
+
# Use customer-managed keys for additional security
|
|
1138
|
+
use_azuread_auth = true # Use Managed Identity
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1141
|
+
```
|
|
1142
|
+
|
|
1143
|
+
**4. Automated Inventory (KSI-PIY-01)**
|
|
1144
|
+
```bash
|
|
1145
|
+
# Terraform maintains inventory
|
|
1146
|
+
terraform state list
|
|
1147
|
+
terraform show -json | jq '.values.root_module.resources'
|
|
1148
|
+
|
|
1149
|
+
# Export to CMDB/asset inventory
|
|
1150
|
+
```
|
|
1151
|
+
|
|
1152
|
+
**5. Change Management (KSI-CMT-01, FRR-SCN)**
|
|
1153
|
+
```yaml
|
|
1154
|
+
# Pull request workflow
|
|
1155
|
+
- name: Terraform plan
|
|
1156
|
+
run: terraform plan -out=tfplan
|
|
1157
|
+
|
|
1158
|
+
- name: Save plan
|
|
1159
|
+
run: terraform show -json tfplan > plan.json
|
|
1160
|
+
|
|
1161
|
+
- name: Comment PR with changes
|
|
1162
|
+
uses: actions/github-script@v6
|
|
1163
|
+
# Shows what will change before apply
|
|
1164
|
+
```
|
|
1165
|
+
|
|
1166
|
+
**6. Recommended Secure Configuration (FRR-RSC)**
|
|
1167
|
+
```hcl
|
|
1168
|
+
# Compliance module
|
|
1169
|
+
module "fedramp_baseline" {
|
|
1170
|
+
source = "./modules/fedramp-baseline"
|
|
1171
|
+
|
|
1172
|
+
# Enforces:
|
|
1173
|
+
# - Encryption at rest
|
|
1174
|
+
# - Encryption in transit
|
|
1175
|
+
# - No public access
|
|
1176
|
+
# - Logging enabled
|
|
1177
|
+
# - Monitoring enabled
|
|
1178
|
+
}
|
|
1179
|
+
```
|
|
1180
|
+
|
|
1181
|
+
**7. Documentation (FRR-MAS, FRR-ADS)**
|
|
1182
|
+
```hcl
|
|
1183
|
+
# Self-documenting infrastructure
|
|
1184
|
+
resource "azurerm_linux_virtual_machine" "web" {
|
|
1185
|
+
# Documentation as code
|
|
1186
|
+
tags = {
|
|
1187
|
+
Name = "web-server"
|
|
1188
|
+
Description = "Main web application server"
|
|
1189
|
+
DataClass = "federal-customer-data"
|
|
1190
|
+
Boundary = "included"
|
|
1191
|
+
Owner = "engineering@example.com"
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1194
|
+
```
|
|
1195
|
+
|
|
1196
|
+
**Best Practices:**
|
|
1197
|
+
- Use modules for reusability
|
|
1198
|
+
- Enable Terraform Cloud/Enterprise for audit logs
|
|
1199
|
+
- Implement policy as code (Sentinel/OPA)
|
|
1200
|
+
- Never commit secrets (use data sources)
|
|
1201
|
+
- Use workspaces for environments
|
|
1202
|
+
- Tag all resources consistently
|
|
1203
|
+
|
|
1204
|
+
**Required Tools:**
|
|
1205
|
+
- tfsec: Security scanning
|
|
1206
|
+
- Checkov: Policy checking
|
|
1207
|
+
- Terraform validate: Syntax validation
|
|
1208
|
+
- terraform-docs: Auto-generate docs
|
|
1209
|
+
- Atlantis: PR automation"""
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
tech_lower = technology.lower()
|
|
1213
|
+
|
|
1214
|
+
for key, content in guidance.items():
|
|
1215
|
+
if key in tech_lower or tech_lower in key:
|
|
1216
|
+
return content
|
|
1217
|
+
|
|
1218
|
+
return f"""# Cloud-Native Guidance
|
|
1219
|
+
|
|
1220
|
+
I don't have specific guidance for "{technology}".
|
|
1221
|
+
|
|
1222
|
+
**Available guidance:**
|
|
1223
|
+
- kubernetes
|
|
1224
|
+
- containers (Docker)
|
|
1225
|
+
- serverless (Lambda, Cloud Functions)
|
|
1226
|
+
- terraform (Infrastructure as Code)
|
|
1227
|
+
|
|
1228
|
+
**General Cloud-Native Principles for FedRAMP 20x:**
|
|
1229
|
+
|
|
1230
|
+
1. **Immutable Infrastructure** (KSI-CNA-04)
|
|
1231
|
+
- Deploy, don't modify in place
|
|
1232
|
+
- Infrastructure as Code
|
|
1233
|
+
- Automated builds
|
|
1234
|
+
|
|
1235
|
+
2. **Automation** (FRD-ALL-07: "automatically if possible")
|
|
1236
|
+
- CI/CD for all deployments
|
|
1237
|
+
- Automated testing
|
|
1238
|
+
- Automated security scanning
|
|
1239
|
+
|
|
1240
|
+
3. **Observability** (KSI-MLA-01)
|
|
1241
|
+
- Centralized logging
|
|
1242
|
+
- Distributed tracing
|
|
1243
|
+
- Metrics collection
|
|
1244
|
+
|
|
1245
|
+
4. **Security by Default**
|
|
1246
|
+
- Least privilege IAM
|
|
1247
|
+
- Network segmentation
|
|
1248
|
+
- Encryption everywhere
|
|
1249
|
+
|
|
1250
|
+
5. **API-First** (FRR-ADS)
|
|
1251
|
+
- Everything exposed as APIs
|
|
1252
|
+
- Machine-readable configs
|
|
1253
|
+
- Programmatic access
|
|
1254
|
+
|
|
1255
|
+
Use search_requirements with your technology name to find specific requirements."""
|
|
1256
|
+
|
|
1257
|
+
|
|
1258
|
+
|
|
1259
|
+
async def validate_architecture_impl(architecture_description: str, data_loader) -> str:
|
|
1260
|
+
"""
|
|
1261
|
+
Review an architecture description against FedRAMP 20x requirements.
|
|
1262
|
+
|
|
1263
|
+
Args:
|
|
1264
|
+
architecture_description: Description of your system architecture
|
|
1265
|
+
|
|
1266
|
+
Returns:
|
|
1267
|
+
Validation results and recommendations
|
|
1268
|
+
"""
|
|
1269
|
+
# Analyze the description for key patterns
|
|
1270
|
+
desc_lower = architecture_description.lower()
|
|
1271
|
+
|
|
1272
|
+
findings = []
|
|
1273
|
+
recommendations = []
|
|
1274
|
+
|
|
1275
|
+
# Check for key components
|
|
1276
|
+
if "kubernetes" in desc_lower or "k8s" in desc_lower or "aks" in desc_lower:
|
|
1277
|
+
findings.append("✓ Kubernetes/AKS detected - ensure KSI-CNA-04 (Immutable Infrastructure) compliance")
|
|
1278
|
+
recommendations.append("Implement network policies (KSI-CNA-01) and Azure Policy for AKS")
|
|
1279
|
+
|
|
1280
|
+
if "lambda" in desc_lower or "serverless" in desc_lower or "azure functions" in desc_lower or "function app" in desc_lower:
|
|
1281
|
+
findings.append("✓ Serverless detected - ensure function-level identity/RBAC (KSI-IAM-05)")
|
|
1282
|
+
recommendations.append("Enable Application Insights and forward logs to Sentinel (SIEM)")
|
|
1283
|
+
|
|
1284
|
+
if "database" in desc_lower or "rds" in desc_lower or "postgres" in desc_lower or "azure sql" in desc_lower or "cosmos" in desc_lower:
|
|
1285
|
+
findings.append("✓ Database detected - ensure encryption at rest and in transit (TDE for Azure SQL)")
|
|
1286
|
+
recommendations.append("Verify audit logging enabled (KSI-MLA-02) and backed up (KSI-RPL-03)")
|
|
1287
|
+
|
|
1288
|
+
if "api" in desc_lower or "rest" in desc_lower:
|
|
1289
|
+
findings.append("✓ API detected - consider for Authorization Data Sharing (FRR-ADS)")
|
|
1290
|
+
recommendations.append("Implement OAuth 2.0 or mTLS authentication")
|
|
1291
|
+
|
|
1292
|
+
# Check for security concerns
|
|
1293
|
+
concerns = []
|
|
1294
|
+
|
|
1295
|
+
if "public" in desc_lower and "internet" in desc_lower:
|
|
1296
|
+
concerns.append("⚠ Public internet exposure detected - ensure WAF and DDoS protection")
|
|
1297
|
+
concerns.append("⚠ Review KSI-CNA-01 (Restrict Network Traffic) carefully")
|
|
1298
|
+
|
|
1299
|
+
if "ssh" in desc_lower or "bastion" in desc_lower:
|
|
1300
|
+
concerns.append("⚠ SSH access detected - consider Session Manager instead")
|
|
1301
|
+
concerns.append("⚠ If SSH required, ensure phishing-resistant MFA (KSI-IAM-01)")
|
|
1302
|
+
|
|
1303
|
+
if "password" in desc_lower or "credentials" in desc_lower:
|
|
1304
|
+
concerns.append("⚠ Credential management mentioned - ensure secret manager (KSI-SVC-06)")
|
|
1305
|
+
|
|
1306
|
+
# Check for missing components
|
|
1307
|
+
missing = []
|
|
1308
|
+
|
|
1309
|
+
if "log" not in desc_lower and "siem" not in desc_lower:
|
|
1310
|
+
missing.append("❌ No logging/SIEM mentioned - required by KSI-MLA-01")
|
|
1311
|
+
|
|
1312
|
+
if "monitor" not in desc_lower:
|
|
1313
|
+
missing.append("❌ No monitoring mentioned - required by FRR-CCM")
|
|
1314
|
+
|
|
1315
|
+
if "backup" not in desc_lower:
|
|
1316
|
+
missing.append("❌ No backup mentioned - required by KSI-RPL-03")
|
|
1317
|
+
|
|
1318
|
+
if "vulnerability" not in desc_lower and "scan" not in desc_lower:
|
|
1319
|
+
missing.append("❌ No vulnerability scanning mentioned - required by FRR-VDR")
|
|
1320
|
+
|
|
1321
|
+
# Build result
|
|
1322
|
+
result = f"# Architecture Validation Results\n\n"
|
|
1323
|
+
|
|
1324
|
+
if findings:
|
|
1325
|
+
result += "## Components Identified\n\n"
|
|
1326
|
+
for finding in findings:
|
|
1327
|
+
result += f"{finding}\n"
|
|
1328
|
+
result += "\n"
|
|
1329
|
+
|
|
1330
|
+
if concerns:
|
|
1331
|
+
result += "## Security Concerns\n\n"
|
|
1332
|
+
for concern in concerns:
|
|
1333
|
+
result += f"{concern}\n"
|
|
1334
|
+
result += "\n"
|
|
1335
|
+
|
|
1336
|
+
if missing:
|
|
1337
|
+
result += "## Missing Components\n\n"
|
|
1338
|
+
for item in missing:
|
|
1339
|
+
result += f"{item}\n"
|
|
1340
|
+
result += "\n"
|
|
1341
|
+
|
|
1342
|
+
if recommendations:
|
|
1343
|
+
result += "## Recommendations\n\n"
|
|
1344
|
+
for rec in recommendations:
|
|
1345
|
+
result += f"• {rec}\n"
|
|
1346
|
+
result += "\n"
|
|
1347
|
+
|
|
1348
|
+
result += """## Key Areas to Address
|
|
1349
|
+
|
|
1350
|
+
**1. Authorization Boundary (FRR-MAS)**
|
|
1351
|
+
- Document all components processing Federal Customer Data
|
|
1352
|
+
- Include dev/staging if they use prod data
|
|
1353
|
+
- Include all third-party services
|
|
1354
|
+
|
|
1355
|
+
**2. Continuous Monitoring (FRR-CCM)**
|
|
1356
|
+
- SIEM for centralized logging
|
|
1357
|
+
- Vulnerability scanning (automated)
|
|
1358
|
+
- KSI metric collection
|
|
1359
|
+
|
|
1360
|
+
**3. Data Sharing (FRR-ADS)**
|
|
1361
|
+
- API for sharing authorization data
|
|
1362
|
+
- Machine-readable format required (JSON/XML); OSCAL is one optional NIST standard approach
|
|
1363
|
+
- OAuth 2.0 or mTLS authentication
|
|
1364
|
+
|
|
1365
|
+
**4. Key Security Indicators**
|
|
1366
|
+
- Track all 72 KSIs continuously
|
|
1367
|
+
- Automate collection where possible
|
|
1368
|
+
- Integrate with SIEM/monitoring
|
|
1369
|
+
|
|
1370
|
+
Use search_requirements and get_implementation_examples for specific requirements."""
|
|
1371
|
+
|
|
1372
|
+
return result
|
|
1373
|
+
|
|
1374
|
+
|
|
1375
|
+
|
|
1376
|
+
async def get_ksi_implementation_matrix_impl(ksi_family: str, data_loader) -> str:
|
|
1377
|
+
"""
|
|
1378
|
+
Get implementation matrix showing all KSIs in a family with Azure services, effort, and priority.
|
|
1379
|
+
|
|
1380
|
+
Provides engineers with a high-level view of what needs to be implemented for a KSI family,
|
|
1381
|
+
including recommended Azure services, complexity, and suggested implementation order.
|
|
1382
|
+
|
|
1383
|
+
Args:
|
|
1384
|
+
ksi_family: KSI family code (e.g., "IAM", "MLA", "CNA", "AFR", "SVC", "RPL", "TPR", "INR", "PIY", "CMT")
|
|
1385
|
+
|
|
1386
|
+
Returns:
|
|
1387
|
+
Implementation matrix with all KSIs in the family
|
|
1388
|
+
"""
|
|
1389
|
+
await data_loader.load_data()
|
|
1390
|
+
|
|
1391
|
+
family_upper = ksi_family.upper()
|
|
1392
|
+
|
|
1393
|
+
# Get all KSIs for this family
|
|
1394
|
+
all_ksis = data_loader.list_all_ksi()
|
|
1395
|
+
family_ksis = [k for k in all_ksis if k.get('id', '').startswith(f'KSI-{family_upper}-')]
|
|
1396
|
+
|
|
1397
|
+
if not family_ksis:
|
|
1398
|
+
available_families = sorted(set(k.get('id', '').split('-')[1] for k in all_ksis if '-' in k.get('id', '')))
|
|
1399
|
+
return f"""No KSIs found for family '{ksi_family}'.
|
|
1400
|
+
|
|
1401
|
+
**Available KSI Families:**
|
|
1402
|
+
{', '.join(available_families)}
|
|
1403
|
+
|
|
1404
|
+
Use get_ksi_implementation_matrix with one of the above family codes."""
|
|
1405
|
+
|
|
1406
|
+
family_name_map = {
|
|
1407
|
+
'IAM': 'Identity and Access Management',
|
|
1408
|
+
'MLA': 'Monitoring, Logging, and Auditing',
|
|
1409
|
+
'AFR': 'Automated Findings and Remediation',
|
|
1410
|
+
'CNA': 'Cloud-Native Architecture',
|
|
1411
|
+
'SVC': 'Service Management',
|
|
1412
|
+
'RPL': 'Recovery and Planning',
|
|
1413
|
+
'TPR': 'Third-Party Risk',
|
|
1414
|
+
'INR': 'Incident Response',
|
|
1415
|
+
'PIY': 'Privacy and Inventory',
|
|
1416
|
+
'CMT': 'Change Management and Testing'
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
azure_services_map = {
|
|
1420
|
+
'IAM': ['Microsoft Entra ID', 'Conditional Access', 'Privileged Identity Management', 'Azure RBAC', 'Microsoft Entra ID Protection'],
|
|
1421
|
+
'MLA': ['Azure Monitor', 'Log Analytics', 'Microsoft Sentinel', 'Application Insights', 'Azure Policy', 'Azure Automation'],
|
|
1422
|
+
'AFR': ['Microsoft Defender for Cloud', 'Microsoft Defender for Containers', 'Azure Policy', 'Azure Security Center', 'GitHub Advanced Security'],
|
|
1423
|
+
'CNA': ['Azure Kubernetes Service', 'Azure Container Registry', 'Azure Policy for AKS', 'Azure Firewall', 'Azure Virtual Network'],
|
|
1424
|
+
'SVC': ['Azure Key Vault', 'Azure Automation', 'Azure Update Management', 'Azure Backup', 'Azure Monitor'],
|
|
1425
|
+
'RPL': ['Azure Backup', 'Azure Site Recovery', 'Azure Blob Storage', 'Recovery Services Vault', 'Azure Policy'],
|
|
1426
|
+
'TPR': ['Microsoft Purview', 'Azure Policy', 'Microsoft Defender for Cloud', 'Azure Security Center'],
|
|
1427
|
+
'INR': ['Microsoft Sentinel', 'Azure Logic Apps', 'Azure Monitor', 'Microsoft Defender XDR', 'Azure Automation'],
|
|
1428
|
+
'PIY': ['Microsoft Purview', 'Azure Resource Graph', 'Azure Policy', 'Microsoft Defender for Cloud', 'Azure Automation'],
|
|
1429
|
+
'CMT': ['Azure DevOps', 'GitHub Actions', 'Azure Policy', 'Azure Monitor', 'Azure Automation', 'Azure Resource Manager']
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
complexity_map = {
|
|
1433
|
+
'KSI-IAM-01': 'Medium', 'KSI-IAM-02': 'Medium', 'KSI-IAM-03': 'Low', 'KSI-IAM-04': 'Low', 'KSI-IAM-05': 'Medium', 'KSI-IAM-06': 'High', 'KSI-IAM-07': 'Medium',
|
|
1434
|
+
'KSI-MLA-01': 'High', 'KSI-MLA-02': 'High', 'KSI-MLA-03': 'Medium', 'KSI-MLA-04': 'Medium', 'KSI-MLA-05': 'High', 'KSI-MLA-06': 'Low', 'KSI-MLA-07': 'Low', 'KSI-MLA-08': 'Medium',
|
|
1435
|
+
'KSI-AFR-01': 'Medium', 'KSI-AFR-02': 'High', 'KSI-AFR-03': 'Medium', 'KSI-AFR-04': 'Medium', 'KSI-AFR-05': 'Low',
|
|
1436
|
+
'KSI-CNA-01': 'Medium', 'KSI-CNA-02': 'Low', 'KSI-CNA-03': 'Medium', 'KSI-CNA-04': 'High', 'KSI-CNA-05': 'Medium', 'KSI-CNA-06': 'High', 'KSI-CNA-07': 'Medium', 'KSI-CNA-08': 'High',
|
|
1437
|
+
'KSI-SVC-01': 'Medium', 'KSI-SVC-02': 'Medium', 'KSI-SVC-03': 'Medium', 'KSI-SVC-04': 'High', 'KSI-SVC-05': 'High', 'KSI-SVC-06': 'High', 'KSI-SVC-07': 'Medium', 'KSI-SVC-08': 'Low', 'KSI-SVC-09': 'Medium',
|
|
1438
|
+
'KSI-RPL-01': 'Medium', 'KSI-RPL-02': 'Medium', 'KSI-RPL-03': 'High', 'KSI-RPL-04': 'Medium',
|
|
1439
|
+
'KSI-TPR-01': 'Low', 'KSI-TPR-02': 'Medium', 'KSI-TPR-03': 'Medium', 'KSI-TPR-04': 'High',
|
|
1440
|
+
'KSI-INR-01': 'Medium', 'KSI-INR-02': 'Medium', 'KSI-INR-03': 'Low',
|
|
1441
|
+
'KSI-PIY-01': 'High', 'KSI-PIY-02': 'Medium', 'KSI-PIY-03': 'Low', 'KSI-PIY-04': 'Medium', 'KSI-PIY-05': 'Medium',
|
|
1442
|
+
'KSI-CMT-01': 'High', 'KSI-CMT-02': 'Medium', 'KSI-CMT-03': 'High', 'KSI-CMT-04': 'Medium', 'KSI-CMT-05': 'Low'
|
|
1443
|
+
}
|
|
1444
|
+
|
|
1445
|
+
priority_map = {
|
|
1446
|
+
'KSI-IAM-01': 'Critical', 'KSI-MLA-01': 'Critical', 'KSI-MLA-02': 'Critical', 'KSI-AFR-01': 'Critical', 'KSI-SVC-06': 'Critical',
|
|
1447
|
+
'KSI-IAM-02': 'High', 'KSI-IAM-05': 'High', 'KSI-CNA-04': 'High', 'KSI-CNA-08': 'High', 'KSI-RPL-03': 'High', 'KSI-PIY-01': 'High', 'KSI-CMT-01': 'High', 'KSI-CMT-03': 'High',
|
|
1448
|
+
}
|
|
1449
|
+
|
|
1450
|
+
family_name = family_name_map.get(family_upper, family_upper)
|
|
1451
|
+
azure_services = azure_services_map.get(family_upper, ['Microsoft Entra ID', 'Azure Monitor', 'Azure Policy'])
|
|
1452
|
+
|
|
1453
|
+
result = f"""# {family_upper} Implementation Matrix: {family_name}
|
|
1454
|
+
|
|
1455
|
+
## Overview
|
|
1456
|
+
|
|
1457
|
+
**KSI Count:** {len(family_ksis)} KSIs in this family
|
|
1458
|
+
**Recommended Azure Services:**
|
|
1459
|
+
"""
|
|
1460
|
+
|
|
1461
|
+
for service in azure_services:
|
|
1462
|
+
result += f"- {service}\n"
|
|
1463
|
+
|
|
1464
|
+
result += f"""
|
|
1465
|
+
|
|
1466
|
+
## Implementation Matrix
|
|
1467
|
+
|
|
1468
|
+
| KSI ID | Name | Complexity | Priority | Estimated Effort |
|
|
1469
|
+
|--------|------|------------|----------|------------------|
|
|
1470
|
+
"""
|
|
1471
|
+
|
|
1472
|
+
for ksi in sorted(family_ksis, key=lambda x: x.get('id', '')):
|
|
1473
|
+
ksi_id = ksi.get('id', 'N/A')
|
|
1474
|
+
name = ksi.get('name', 'N/A')
|
|
1475
|
+
complexity = complexity_map.get(ksi_id, 'Medium')
|
|
1476
|
+
priority = priority_map.get(ksi_id, 'Medium')
|
|
1477
|
+
|
|
1478
|
+
effort_map = {
|
|
1479
|
+
'Low': '1-2 weeks',
|
|
1480
|
+
'Medium': '3-4 weeks',
|
|
1481
|
+
'High': '6-8 weeks'
|
|
1482
|
+
}
|
|
1483
|
+
effort = effort_map.get(complexity, '3-4 weeks')
|
|
1484
|
+
|
|
1485
|
+
result += f"| {ksi_id} | {name[:40]}... | {complexity} | {priority} | {effort} |\n"
|
|
1486
|
+
|
|
1487
|
+
result += f"""
|
|
1488
|
+
|
|
1489
|
+
## Suggested Implementation Order
|
|
1490
|
+
|
|
1491
|
+
### Phase 1: Foundation (Critical Priority)
|
|
1492
|
+
"""
|
|
1493
|
+
|
|
1494
|
+
critical = [k for k in family_ksis if priority_map.get(k.get('id'), 'Medium') == 'Critical']
|
|
1495
|
+
if critical:
|
|
1496
|
+
for ksi in critical:
|
|
1497
|
+
result += f"1. **{ksi.get('id')}**: {ksi.get('name')}\n"
|
|
1498
|
+
else:
|
|
1499
|
+
result += "*No critical priority items in this family*\n"
|
|
1500
|
+
|
|
1501
|
+
result += f"""
|
|
1502
|
+
|
|
1503
|
+
### Phase 2: Core Capabilities (High Priority)
|
|
1504
|
+
"""
|
|
1505
|
+
|
|
1506
|
+
high = [k for k in family_ksis if priority_map.get(k.get('id'), 'Medium') == 'High']
|
|
1507
|
+
if high:
|
|
1508
|
+
for ksi in high:
|
|
1509
|
+
result += f"- {ksi.get('id')}: {ksi.get('name')}\n"
|
|
1510
|
+
else:
|
|
1511
|
+
result += "*High priority items should be addressed after critical items*\n"
|
|
1512
|
+
|
|
1513
|
+
result += f"""
|
|
1514
|
+
|
|
1515
|
+
### Phase 3: Complete Coverage (Medium/Low Priority)
|
|
1516
|
+
*Implement remaining KSIs for full compliance*
|
|
1517
|
+
|
|
1518
|
+
## Quick Start Guide
|
|
1519
|
+
|
|
1520
|
+
### 1. Set Up Azure Infrastructure
|
|
1521
|
+
```bash
|
|
1522
|
+
# Create resource group for {family_upper} resources
|
|
1523
|
+
az group create --name rg-fedramp-{family_upper.lower()} --location eastus
|
|
1524
|
+
|
|
1525
|
+
# Deploy monitoring/logging infrastructure
|
|
1526
|
+
az deployment group create \\
|
|
1527
|
+
--resource-group rg-fedramp-{family_upper.lower()} \\
|
|
1528
|
+
--template-file infrastructure.bicep
|
|
1529
|
+
```
|
|
1530
|
+
|
|
1531
|
+
### 2. Configure Azure Services
|
|
1532
|
+
"""
|
|
1533
|
+
|
|
1534
|
+
for i, service in enumerate(azure_services[:3], 1):
|
|
1535
|
+
result += f"{i}. Configure {service}\n"
|
|
1536
|
+
|
|
1537
|
+
result += f"""
|
|
1538
|
+
|
|
1539
|
+
### 3. Implement Evidence Collection
|
|
1540
|
+
```python
|
|
1541
|
+
# Use provided code templates
|
|
1542
|
+
# Example: Collect {family_upper} evidence
|
|
1543
|
+
python collect_{family_upper.lower()}_evidence.py
|
|
1544
|
+
```
|
|
1545
|
+
|
|
1546
|
+
### 4. Test and Validate
|
|
1547
|
+
- Verify all KSIs can be demonstrated
|
|
1548
|
+
- Ensure evidence collection is automated
|
|
1549
|
+
- Test integration with Authorization Data Sharing API
|
|
1550
|
+
|
|
1551
|
+
## Key Dependencies
|
|
1552
|
+
|
|
1553
|
+
**Prerequisites:**
|
|
1554
|
+
- Azure subscription with appropriate permissions
|
|
1555
|
+
- Microsoft Entra ID tenant
|
|
1556
|
+
- Log Analytics workspace
|
|
1557
|
+
- Azure Key Vault for secrets
|
|
1558
|
+
|
|
1559
|
+
**Related Requirements:**
|
|
1560
|
+
- FRR-CCM: Continuous monitoring
|
|
1561
|
+
- FRR-ADS: Authorization data sharing
|
|
1562
|
+
- FRR-KSI: KSI tracking requirements
|
|
1563
|
+
|
|
1564
|
+
## Common Challenges
|
|
1565
|
+
|
|
1566
|
+
### Challenge 1: Data Collection Frequency
|
|
1567
|
+
**Solution:** Use Azure Functions with timer triggers for automated collection
|
|
1568
|
+
|
|
1569
|
+
### Challenge 2: Cross-Service Integration
|
|
1570
|
+
**Solution:** Use Managed Identities for service-to-service authentication
|
|
1571
|
+
|
|
1572
|
+
### Challenge 3: Evidence Retention
|
|
1573
|
+
**Solution:** Azure Blob Storage with immutability policies
|
|
1574
|
+
|
|
1575
|
+
## Detailed Implementation
|
|
1576
|
+
|
|
1577
|
+
For detailed implementation of specific KSIs:
|
|
1578
|
+
- Use `get_implementation_examples("KSI-{family_upper}-##")` for code examples
|
|
1579
|
+
- Use `get_infrastructure_code_for_ksi("KSI-{family_upper}-##")` for IaC templates
|
|
1580
|
+
- Use `generate_implementation_checklist("KSI-{family_upper}-##")` for step-by-step guide
|
|
1581
|
+
- Use `generate_implementation_questions("KSI-{family_upper}-##")` for planning discussions
|
|
1582
|
+
|
|
1583
|
+
## Resources
|
|
1584
|
+
|
|
1585
|
+
- **Azure Documentation:** https://learn.microsoft.com/azure/
|
|
1586
|
+
- **FedRAMP 20x Docs:** https://github.com/FedRAMP/docs
|
|
1587
|
+
- **NIST 800-53:** https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final
|
|
1588
|
+
|
|
1589
|
+
*Generated by FedRAMP 20x MCP Server - KSI Implementation Matrix Tool*
|
|
1590
|
+
"""
|
|
1591
|
+
|
|
1592
|
+
return result
|
|
1593
|
+
|
|
1594
|
+
|
|
1595
|
+
|
|
1596
|
+
async def generate_implementation_checklist_impl(ksi_id: str, data_loader) -> str:
|
|
1597
|
+
"""
|
|
1598
|
+
Generate actionable implementation checklist for a specific KSI.
|
|
1599
|
+
|
|
1600
|
+
Provides engineers with a step-by-step checklist for implementing a KSI,
|
|
1601
|
+
including Azure service setup, code deployment, testing, and evidence collection.
|
|
1602
|
+
|
|
1603
|
+
Args:
|
|
1604
|
+
ksi_id: The KSI identifier (e.g., "KSI-IAM-01", "KSI-MLA-01")
|
|
1605
|
+
|
|
1606
|
+
Returns:
|
|
1607
|
+
Detailed implementation checklist with Azure-specific steps
|
|
1608
|
+
"""
|
|
1609
|
+
await data_loader.load_data()
|
|
1610
|
+
|
|
1611
|
+
ksi = data_loader.get_ksi(ksi_id)
|
|
1612
|
+
if not ksi:
|
|
1613
|
+
return f"KSI '{ksi_id}' not found. Use list_ksi to see all available KSIs."
|
|
1614
|
+
|
|
1615
|
+
ksi_name = ksi.get('name', 'N/A')
|
|
1616
|
+
ksi_description = ksi.get('description', 'N/A')
|
|
1617
|
+
category = ksi.get('category', 'N/A')
|
|
1618
|
+
|
|
1619
|
+
result = f"""# Implementation Checklist: {ksi_id}
|
|
1620
|
+
|
|
1621
|
+
## {ksi_name}
|
|
1622
|
+
|
|
1623
|
+
**Category:** {category}
|
|
1624
|
+
**Description:** {ksi_description}
|
|
1625
|
+
|
|
1626
|
+
---
|
|
1627
|
+
|
|
1628
|
+
## Pre-Implementation Checklist
|
|
1629
|
+
|
|
1630
|
+
### Prerequisites
|
|
1631
|
+
- [ ] Azure subscription with Owner or Contributor role
|
|
1632
|
+
- [ ] Microsoft Entra ID Global Administrator access (if IAM changes needed)
|
|
1633
|
+
- [ ] Azure CLI installed and authenticated (`az login`)
|
|
1634
|
+
- [ ] Development environment set up (VS Code, Azure extensions)
|
|
1635
|
+
- [ ] Git repository for Infrastructure as Code
|
|
1636
|
+
|
|
1637
|
+
### Planning
|
|
1638
|
+
- [ ] Read FedRAMP 20x requirement for {ksi_id}
|
|
1639
|
+
- [ ] Identify which systems/services are in scope
|
|
1640
|
+
- [ ] Review related KSIs and requirements
|
|
1641
|
+
- [ ] Determine evidence collection frequency
|
|
1642
|
+
- [ ] Get stakeholder approval for implementation approach
|
|
1643
|
+
|
|
1644
|
+
### Resource Preparation
|
|
1645
|
+
- [ ] Create resource group: `rg-fedramp-{ksi_id.lower().replace('-', '')}`
|
|
1646
|
+
- [ ] Set up Azure Key Vault for secrets
|
|
1647
|
+
- [ ] Create Log Analytics workspace (if not already exists)
|
|
1648
|
+
- [ ] Set up Azure Blob Storage for evidence
|
|
1649
|
+
|
|
1650
|
+
---
|
|
1651
|
+
|
|
1652
|
+
## Implementation Steps
|
|
1653
|
+
|
|
1654
|
+
### Step 1: Infrastructure Deployment
|
|
1655
|
+
|
|
1656
|
+
**1.1 Create IaC Templates**
|
|
1657
|
+
- [ ] Generate Bicep template: `get_infrastructure_code_for_ksi("{ksi_id}", "bicep")`
|
|
1658
|
+
- [ ] Review and customize template for your environment
|
|
1659
|
+
- [ ] Add to git repository
|
|
1660
|
+
- [ ] Create parameters file with environment-specific values
|
|
1661
|
+
|
|
1662
|
+
**1.2 Deploy Infrastructure**
|
|
1663
|
+
```bash
|
|
1664
|
+
# Create resource group
|
|
1665
|
+
az group create \\
|
|
1666
|
+
--name rg-fedramp-{ksi_id.lower()} \\
|
|
1667
|
+
--location eastus
|
|
1668
|
+
|
|
1669
|
+
# Deploy Bicep template
|
|
1670
|
+
az deployment group create \\
|
|
1671
|
+
--resource-group rg-fedramp-{ksi_id.lower()} \\
|
|
1672
|
+
--template-file main.bicep \\
|
|
1673
|
+
--parameters @parameters.json
|
|
1674
|
+
|
|
1675
|
+
# Verify deployment
|
|
1676
|
+
az deployment group show \\
|
|
1677
|
+
--resource-group rg-fedramp-{ksi_id.lower()} \\
|
|
1678
|
+
--name main
|
|
1679
|
+
```
|
|
1680
|
+
|
|
1681
|
+
- [ ] Infrastructure deployed successfully
|
|
1682
|
+
- [ ] All resources visible in Azure Portal
|
|
1683
|
+
- [ ] No deployment errors or warnings
|
|
1684
|
+
|
|
1685
|
+
### Step 2: Azure Service Configuration
|
|
1686
|
+
|
|
1687
|
+
"""
|
|
1688
|
+
|
|
1689
|
+
# Add family-specific configuration steps
|
|
1690
|
+
family = ksi_id.split('-')[1] if '-' in ksi_id else ''
|
|
1691
|
+
|
|
1692
|
+
if family == 'IAM':
|
|
1693
|
+
result += """**2.1 Configure Microsoft Entra ID**
|
|
1694
|
+
- [ ] Enable Conditional Access policies
|
|
1695
|
+
- [ ] Configure MFA settings (phishing-resistant required)
|
|
1696
|
+
- [ ] Set up Privileged Identity Management (PIM) for admin roles
|
|
1697
|
+
- [ ] Configure Azure RBAC for least privilege
|
|
1698
|
+
- [ ] Enable Identity Protection
|
|
1699
|
+
|
|
1700
|
+
**2.2 Set Up Monitoring**
|
|
1701
|
+
- [ ] Enable diagnostic settings for Entra ID
|
|
1702
|
+
- [ ] Forward sign-in logs to Log Analytics
|
|
1703
|
+
- [ ] Forward audit logs to Log Analytics
|
|
1704
|
+
- [ ] Configure alerts for suspicious activity
|
|
1705
|
+
|
|
1706
|
+
"""
|
|
1707
|
+
elif family == 'MLA':
|
|
1708
|
+
result += """**2.1 Configure Azure Monitor & Sentinel**
|
|
1709
|
+
- [ ] Deploy Microsoft Sentinel workspace
|
|
1710
|
+
- [ ] Enable all relevant data connectors
|
|
1711
|
+
- [ ] Configure log retention (1 year minimum)
|
|
1712
|
+
- [ ] Set up Log Analytics workspace
|
|
1713
|
+
- [ ] Enable diagnostic settings for all Azure resources
|
|
1714
|
+
|
|
1715
|
+
**2.2 Configure Logging**
|
|
1716
|
+
- [ ] Configure Application Insights for applications
|
|
1717
|
+
- [ ] Set up diagnostic settings for each resource
|
|
1718
|
+
- [ ] Forward logs to Log Analytics
|
|
1719
|
+
- [ ] Configure log retention policies
|
|
1720
|
+
- [ ] Test log ingestion
|
|
1721
|
+
|
|
1722
|
+
"""
|
|
1723
|
+
elif family == 'AFR':
|
|
1724
|
+
result += """**2.1 Configure Microsoft Defender**
|
|
1725
|
+
- [ ] Enable Microsoft Defender for Cloud
|
|
1726
|
+
- [ ] Enable Defender for Containers
|
|
1727
|
+
- [ ] Enable Defender for Servers
|
|
1728
|
+
- [ ] Configure vulnerability assessment
|
|
1729
|
+
- [ ] Set up security recommendations
|
|
1730
|
+
|
|
1731
|
+
**2.2 Configure Vulnerability Scanning**
|
|
1732
|
+
- [ ] Enable Microsoft Defender for Container Registries
|
|
1733
|
+
- [ ] Configure GitHub Advanced Security (if using GitHub)
|
|
1734
|
+
- [ ] Set up CI/CD pipeline scanning
|
|
1735
|
+
- [ ] Configure scan frequency
|
|
1736
|
+
- [ ] Set up alerting for findings
|
|
1737
|
+
|
|
1738
|
+
"""
|
|
1739
|
+
elif family == 'SVC':
|
|
1740
|
+
result += """**2.1 Configure Azure Key Vault**
|
|
1741
|
+
- [ ] Deploy Azure Key Vault
|
|
1742
|
+
- [ ] Configure access policies or RBAC
|
|
1743
|
+
- [ ] Enable soft delete and purge protection
|
|
1744
|
+
- [ ] Configure diagnostic logging
|
|
1745
|
+
- [ ] Set up secret rotation policies
|
|
1746
|
+
|
|
1747
|
+
**2.2 Configure Automation**
|
|
1748
|
+
- [ ] Create Azure Automation account
|
|
1749
|
+
- [ ] Set up Managed Identity
|
|
1750
|
+
- [ ] Configure runbooks for secret rotation
|
|
1751
|
+
- [ ] Test automation workflows
|
|
1752
|
+
- [ ] Configure schedules
|
|
1753
|
+
|
|
1754
|
+
"""
|
|
1755
|
+
else:
|
|
1756
|
+
result += """**2.1 Configure Azure Services**
|
|
1757
|
+
- [ ] Deploy required Azure services
|
|
1758
|
+
- [ ] Configure service-specific settings
|
|
1759
|
+
- [ ] Enable diagnostic logging
|
|
1760
|
+
- [ ] Set up Managed Identities
|
|
1761
|
+
- [ ] Configure networking and security
|
|
1762
|
+
|
|
1763
|
+
**2.2 Set Up Monitoring**
|
|
1764
|
+
- [ ] Enable Azure Monitor
|
|
1765
|
+
- [ ] Configure Log Analytics workspace
|
|
1766
|
+
- [ ] Set up alerting rules
|
|
1767
|
+
- [ ] Configure dashboards
|
|
1768
|
+
- [ ] Test data collection
|
|
1769
|
+
|
|
1770
|
+
"""
|
|
1771
|
+
|
|
1772
|
+
result += f"""### Step 3: Code Deployment
|
|
1773
|
+
|
|
1774
|
+
**3.1 Generate Evidence Collection Code**
|
|
1775
|
+
- [ ] Generate code template: `get_evidence_collection_code("{ksi_id}", "python")`
|
|
1776
|
+
- [ ] Review and customize for your environment
|
|
1777
|
+
- [ ] Add to git repository
|
|
1778
|
+
- [ ] Set up CI/CD pipeline
|
|
1779
|
+
|
|
1780
|
+
**3.2 Deploy Collection Function**
|
|
1781
|
+
```bash
|
|
1782
|
+
# Deploy Azure Function
|
|
1783
|
+
func azure functionapp publish func-{ksi_id.lower()}-collector
|
|
1784
|
+
|
|
1785
|
+
# Verify deployment
|
|
1786
|
+
az functionapp show \\
|
|
1787
|
+
--name func-{ksi_id.lower()}-collector \\
|
|
1788
|
+
--resource-group rg-fedramp-{ksi_id.lower()}
|
|
1789
|
+
|
|
1790
|
+
# Test function
|
|
1791
|
+
curl https://func-{ksi_id.lower()}-collector.azurewebsites.net/api/health
|
|
1792
|
+
```
|
|
1793
|
+
|
|
1794
|
+
- [ ] Function deployed successfully
|
|
1795
|
+
- [ ] Function app is running
|
|
1796
|
+
- [ ] Managed Identity configured
|
|
1797
|
+
- [ ] Application Insights enabled
|
|
1798
|
+
|
|
1799
|
+
**3.3 Configure Collection Schedule**
|
|
1800
|
+
- [ ] Set up timer trigger (daily/weekly based on requirement)
|
|
1801
|
+
- [ ] Configure retry policies
|
|
1802
|
+
- [ ] Set up error alerting
|
|
1803
|
+
- [ ] Test scheduled execution
|
|
1804
|
+
|
|
1805
|
+
### Step 4: Testing & Validation
|
|
1806
|
+
|
|
1807
|
+
**4.1 Unit Testing**
|
|
1808
|
+
- [ ] Test evidence collection logic
|
|
1809
|
+
- [ ] Test data formatting
|
|
1810
|
+
- [ ] Test error handling
|
|
1811
|
+
- [ ] Test authentication (Managed Identity)
|
|
1812
|
+
- [ ] All tests passing
|
|
1813
|
+
|
|
1814
|
+
**4.2 Integration Testing**
|
|
1815
|
+
- [ ] Test end-to-end evidence collection
|
|
1816
|
+
- [ ] Verify evidence stored correctly in Blob Storage
|
|
1817
|
+
- [ ] Test evidence retrieval
|
|
1818
|
+
- [ ] Verify evidence format (JSON/OSCAL)
|
|
1819
|
+
- [ ] Test API integration (if applicable)
|
|
1820
|
+
|
|
1821
|
+
**4.3 Compliance Validation**
|
|
1822
|
+
- [ ] Evidence demonstrates compliance with {ksi_id}
|
|
1823
|
+
- [ ] Evidence is complete and accurate
|
|
1824
|
+
- [ ] Evidence collection is automated
|
|
1825
|
+
- [ ] Evidence retention meets requirements (1+ years)
|
|
1826
|
+
- [ ] Evidence is accessible via API (FRR-ADS)
|
|
1827
|
+
|
|
1828
|
+
**4.4 Security Testing**
|
|
1829
|
+
- [ ] No secrets in code or logs
|
|
1830
|
+
- [ ] All secrets stored in Azure Key Vault
|
|
1831
|
+
- [ ] Managed Identity working correctly
|
|
1832
|
+
- [ ] Least privilege access configured
|
|
1833
|
+
- [ ] Network security properly configured
|
|
1834
|
+
|
|
1835
|
+
### Step 5: Documentation
|
|
1836
|
+
|
|
1837
|
+
**5.1 Technical Documentation**
|
|
1838
|
+
- [ ] Architecture diagram created
|
|
1839
|
+
- [ ] Data flow diagram created
|
|
1840
|
+
- [ ] Infrastructure documented (IaC in git)
|
|
1841
|
+
- [ ] API documentation (if applicable)
|
|
1842
|
+
- [ ] Runbook for troubleshooting
|
|
1843
|
+
|
|
1844
|
+
**5.2 Compliance Documentation**
|
|
1845
|
+
- [ ] Control implementation statement written
|
|
1846
|
+
- [ ] Evidence collection procedure documented
|
|
1847
|
+
- [ ] Add to System Security Plan (SSP)
|
|
1848
|
+
- [ ] Update Authorization Boundary diagram
|
|
1849
|
+
- [ ] Document in Configuration Management Plan
|
|
1850
|
+
|
|
1851
|
+
**5.3 Operational Documentation**
|
|
1852
|
+
- [ ] Daily operations runbook
|
|
1853
|
+
- [ ] Escalation procedures
|
|
1854
|
+
- [ ] Backup and recovery procedures
|
|
1855
|
+
- [ ] Contact information for support
|
|
1856
|
+
|
|
1857
|
+
### Step 6: Evidence Collection Setup
|
|
1858
|
+
|
|
1859
|
+
**6.1 Configure Evidence Storage**
|
|
1860
|
+
- [ ] Blob Storage container created
|
|
1861
|
+
- [ ] Immutability policy configured
|
|
1862
|
+
- [ ] Lifecycle management configured
|
|
1863
|
+
- [ ] Access policies configured
|
|
1864
|
+
- [ ] Encryption verified
|
|
1865
|
+
|
|
1866
|
+
**6.2 Test Evidence Collection**
|
|
1867
|
+
```bash
|
|
1868
|
+
# Manually trigger collection
|
|
1869
|
+
az functionapp function invoke \\
|
|
1870
|
+
--name func-{ksi_id.lower()}-collector \\
|
|
1871
|
+
--function-name CollectEvidence \\
|
|
1872
|
+
--resource-group rg-fedramp-{ksi_id.lower()}
|
|
1873
|
+
|
|
1874
|
+
# Verify evidence stored
|
|
1875
|
+
az storage blob list \\
|
|
1876
|
+
--account-name st{ksi_id.lower().replace('-', '')}evidence \\
|
|
1877
|
+
--container-name evidence
|
|
1878
|
+
```
|
|
1879
|
+
|
|
1880
|
+
- [ ] Evidence collection executed successfully
|
|
1881
|
+
- [ ] Evidence file created in Blob Storage
|
|
1882
|
+
- [ ] Evidence contains expected data
|
|
1883
|
+
- [ ] Evidence format is correct
|
|
1884
|
+
|
|
1885
|
+
**6.3 Set Up Evidence Monitoring**
|
|
1886
|
+
- [ ] Configure alerts for collection failures
|
|
1887
|
+
- [ ] Create dashboard for collection status
|
|
1888
|
+
- [ ] Set up weekly evidence review
|
|
1889
|
+
- [ ] Document evidence access procedures
|
|
1890
|
+
|
|
1891
|
+
### Step 7: Integration with FRR-ADS
|
|
1892
|
+
|
|
1893
|
+
**7.1 API Setup**
|
|
1894
|
+
- [ ] Expose evidence via Authorization Data Sharing API
|
|
1895
|
+
- [ ] Configure authentication (OAuth 2.0 or mTLS)
|
|
1896
|
+
- [ ] Test API endpoints
|
|
1897
|
+
- [ ] Document API for FedRAMP PMO
|
|
1898
|
+
- [ ] Provide API credentials to authorized users
|
|
1899
|
+
|
|
1900
|
+
**7.2 API Testing**
|
|
1901
|
+
- [ ] Test GET requests for evidence
|
|
1902
|
+
- [ ] Test authentication
|
|
1903
|
+
- [ ] Test rate limiting
|
|
1904
|
+
- [ ] Test error handling
|
|
1905
|
+
- [ ] All API tests passing
|
|
1906
|
+
|
|
1907
|
+
---
|
|
1908
|
+
|
|
1909
|
+
## Post-Implementation Checklist
|
|
1910
|
+
|
|
1911
|
+
### Monitoring & Maintenance
|
|
1912
|
+
- [ ] Set up alerts for collection failures
|
|
1913
|
+
- [ ] Configure weekly evidence reviews
|
|
1914
|
+
- [ ] Schedule quarterly access reviews
|
|
1915
|
+
- [ ] Plan for infrastructure updates
|
|
1916
|
+
- [ ] Document lessons learned
|
|
1917
|
+
|
|
1918
|
+
### Compliance Validation
|
|
1919
|
+
- [ ] Internal audit completed
|
|
1920
|
+
- [ ] All evidence requirements met
|
|
1921
|
+
- [ ] Documentation complete and approved
|
|
1922
|
+
- [ ] 3PAO review scheduled (if applicable)
|
|
1923
|
+
- [ ] Stakeholders notified of completion
|
|
1924
|
+
|
|
1925
|
+
### Continuous Improvement
|
|
1926
|
+
- [ ] Monitor collection performance
|
|
1927
|
+
- [ ] Optimize collection efficiency
|
|
1928
|
+
- [ ] Address any gaps identified
|
|
1929
|
+
- [ ] Update documentation as needed
|
|
1930
|
+
- [ ] Plan for future enhancements
|
|
1931
|
+
|
|
1932
|
+
---
|
|
1933
|
+
|
|
1934
|
+
## Troubleshooting Common Issues
|
|
1935
|
+
|
|
1936
|
+
### Issue: Evidence collection failing
|
|
1937
|
+
**Troubleshooting steps:**
|
|
1938
|
+
1. Check Azure Function logs in Application Insights
|
|
1939
|
+
2. Verify Managed Identity has correct permissions
|
|
1940
|
+
3. Test connectivity to data sources
|
|
1941
|
+
4. Check for API rate limiting
|
|
1942
|
+
5. Review error messages in logs
|
|
1943
|
+
|
|
1944
|
+
### Issue: Evidence format incorrect
|
|
1945
|
+
**Troubleshooting steps:**
|
|
1946
|
+
1. Review evidence specification
|
|
1947
|
+
2. Check data transformation logic
|
|
1948
|
+
3. Validate against OSCAL schema (if using OSCAL)
|
|
1949
|
+
4. Test with sample data
|
|
1950
|
+
5. Review FedRAMP requirements
|
|
1951
|
+
|
|
1952
|
+
### Issue: API authentication failing
|
|
1953
|
+
**Troubleshooting steps:**
|
|
1954
|
+
1. Verify credentials/tokens
|
|
1955
|
+
2. Check token expiration
|
|
1956
|
+
3. Review access policies
|
|
1957
|
+
4. Test authentication independently
|
|
1958
|
+
5. Check network connectivity
|
|
1959
|
+
|
|
1960
|
+
---
|
|
1961
|
+
|
|
1962
|
+
## Success Criteria
|
|
1963
|
+
|
|
1964
|
+
✅ All checklist items completed
|
|
1965
|
+
✅ Evidence collected automatically on schedule
|
|
1966
|
+
✅ Evidence demonstrates compliance with {ksi_id}
|
|
1967
|
+
✅ Documentation complete and approved
|
|
1968
|
+
✅ Team trained on operation and troubleshooting
|
|
1969
|
+
✅ Integration with FRR-ADS API working
|
|
1970
|
+
✅ Monitoring and alerting configured
|
|
1971
|
+
✅ Internal audit passed
|
|
1972
|
+
|
|
1973
|
+
---
|
|
1974
|
+
|
|
1975
|
+
## Next Steps
|
|
1976
|
+
|
|
1977
|
+
1. **Mark completion:** Update project tracker with completion status
|
|
1978
|
+
2. **Schedule review:** Set up quarterly review of implementation
|
|
1979
|
+
3. **Train team:** Ensure all team members understand operations
|
|
1980
|
+
4. **Document lessons:** Capture lessons learned for future KSIs
|
|
1981
|
+
5. **Move to next KSI:** Use `get_ksi_implementation_matrix` to identify next priority
|
|
1982
|
+
|
|
1983
|
+
---
|
|
1984
|
+
|
|
1985
|
+
## Related Tools
|
|
1986
|
+
|
|
1987
|
+
- `get_implementation_examples("{ksi_id}")` - Get code examples
|
|
1988
|
+
- `get_infrastructure_code_for_ksi("{ksi_id}")` - Get IaC templates
|
|
1989
|
+
- `get_evidence_collection_code("{ksi_id}")` - Get collection code
|
|
1990
|
+
- `generate_implementation_questions("{ksi_id}")` - Planning questions
|
|
1991
|
+
- `get_cloud_native_guidance("azure")` - Azure-specific guidance
|
|
1992
|
+
|
|
1993
|
+
*Generated by FedRAMP 20x MCP Server - Implementation Checklist Tool*
|
|
1994
|
+
"""
|
|
1995
|
+
|
|
1996
|
+
return result
|
|
1997
|
+
|
|
1998
|
+
|
|
1999
|
+
|
|
2000
|
+
async def generate_implementation_questions_impl(requirement_id: str, data_loader) -> str:
|
|
2001
|
+
"""
|
|
2002
|
+
Generate strategic interview questions for product managers and engineers.
|
|
2003
|
+
|
|
2004
|
+
Helps teams think through FedRAMP 20x implementation considerations by providing
|
|
2005
|
+
thoughtful questions about architecture, operations, compliance, and trade-offs.
|
|
2006
|
+
|
|
2007
|
+
Works with both requirements (e.g., "FRR-CCM-01") and KSIs (e.g., "KSI-IAM-01").
|
|
2008
|
+
|
|
2009
|
+
Args:
|
|
2010
|
+
requirement_id: The requirement or KSI ID to generate questions for
|
|
2011
|
+
|
|
2012
|
+
Returns:
|
|
2013
|
+
Strategic questions organized by stakeholder role and concern area
|
|
2014
|
+
"""
|
|
2015
|
+
await data_loader.load_data()
|
|
2016
|
+
|
|
2017
|
+
# Try to get as requirement first, then as KSI
|
|
2018
|
+
item = data_loader.get_control(requirement_id)
|
|
2019
|
+
if not item:
|
|
2020
|
+
item = data_loader.get_ksi(requirement_id)
|
|
2021
|
+
|
|
2022
|
+
if not item:
|
|
2023
|
+
return f"Requirement or KSI '{requirement_id}' not found. Please check the ID format (e.g., 'FRR-CCM-01' or 'KSI-IAM-01')."
|
|
2024
|
+
|
|
2025
|
+
title = item.get('title', item.get('name', 'N/A'))
|
|
2026
|
+
description = item.get('description', item.get('statement', 'N/A'))
|
|
2027
|
+
family = item.get('family', 'N/A')
|
|
2028
|
+
|
|
2029
|
+
result = f"""# Implementation Questions for {requirement_id}
|
|
2030
|
+
|
|
2031
|
+
## Requirement Overview
|
|
2032
|
+
**Title:** {title}
|
|
2033
|
+
**Family:** {family}
|
|
2034
|
+
**Description:** {description}
|
|
2035
|
+
|
|
2036
|
+
---
|
|
2037
|
+
|
|
2038
|
+
## Strategic Questions for Product Managers
|
|
2039
|
+
|
|
2040
|
+
### Business & Risk Perspective:
|
|
2041
|
+
1. **Business Impact**: How will implementing this requirement affect our product roadmap and time-to-market?
|
|
2042
|
+
|
|
2043
|
+
2. **Customer Value**: Which of our federal customers will benefit most from this compliance capability?
|
|
2044
|
+
|
|
2045
|
+
3. **Competitive Position**: How does implementing this requirement differentiate us in the FedRAMP marketplace?
|
|
2046
|
+
|
|
2047
|
+
4. **Resource Allocation**: What trade-offs are we making by prioritizing this requirement over other features?
|
|
2048
|
+
|
|
2049
|
+
5. **Cost-Benefit**: What's the total cost of ownership (TCO) for implementing and maintaining this control long-term?
|
|
2050
|
+
|
|
2051
|
+
### Planning & Prioritization:
|
|
2052
|
+
6. **Dependencies**: What other requirements or KSIs must be implemented before this one?
|
|
2053
|
+
|
|
2054
|
+
7. **Phasing**: Should this be implemented in phases, or does it require a complete solution from day one?
|
|
2055
|
+
|
|
2056
|
+
8. **Quick Wins**: Are there interim measures we can implement to partially satisfy this requirement faster?
|
|
2057
|
+
|
|
2058
|
+
9. **Vendor Support**: Do Azure or Microsoft 365 services already provide capabilities we can leverage?
|
|
2059
|
+
|
|
2060
|
+
10. **Documentation**: What policy and procedure documentation will we need to create and maintain?
|
|
2061
|
+
|
|
2062
|
+
---
|
|
2063
|
+
|
|
2064
|
+
## Technical Questions for Engineers
|
|
2065
|
+
|
|
2066
|
+
### Architecture & Design:
|
|
2067
|
+
11. **System Design**: How does this requirement influence our overall system architecture?
|
|
2068
|
+
|
|
2069
|
+
12. **Azure Services**: Which Azure or Microsoft 365 services can help us meet this requirement natively?
|
|
2070
|
+
|
|
2071
|
+
13. **Automation**: What aspects of this requirement can be automated vs. require manual processes?
|
|
2072
|
+
|
|
2073
|
+
14. **Scalability**: Will our implementation scale as our customer base and data volumes grow?
|
|
2074
|
+
|
|
2075
|
+
15. **Performance**: What performance impacts should we expect from implementing this control?
|
|
2076
|
+
|
|
2077
|
+
### Implementation Details:
|
|
2078
|
+
16. **Integration**: How does this integrate with our existing security and compliance infrastructure?
|
|
2079
|
+
|
|
2080
|
+
17. **Configuration**: What configuration management is needed to maintain consistency across environments?
|
|
2081
|
+
|
|
2082
|
+
18. **Monitoring**: How will we monitor and alert on compliance status for this requirement?
|
|
2083
|
+
|
|
2084
|
+
19. **Testing**: How can we test that this control is working effectively? What does "good" look like?
|
|
2085
|
+
|
|
2086
|
+
20. **Evidence**: What evidence needs to be collected, and how will we automate its collection?
|
|
2087
|
+
|
|
2088
|
+
### Operations & Maintenance:
|
|
2089
|
+
21. **Day-to-Day**: What are the ongoing operational tasks required to maintain this control?
|
|
2090
|
+
|
|
2091
|
+
22. **Troubleshooting**: What failure modes should we anticipate, and how will we diagnose issues?
|
|
2092
|
+
|
|
2093
|
+
23. **Updates**: How will updates to Azure services or our application affect this control?
|
|
2094
|
+
|
|
2095
|
+
24. **Disaster Recovery**: How does this requirement fit into our disaster recovery and business continuity plans?
|
|
2096
|
+
|
|
2097
|
+
25. **Technical Debt**: What technical debt might we accumulate with a quick implementation vs. a more robust solution?
|
|
2098
|
+
|
|
2099
|
+
---
|
|
2100
|
+
|
|
2101
|
+
## Cross-Functional Questions
|
|
2102
|
+
|
|
2103
|
+
### Security & Compliance:
|
|
2104
|
+
26. **Defense in Depth**: How does this control work with other controls to provide defense in depth?
|
|
2105
|
+
|
|
2106
|
+
27. **Audit Trail**: What audit trails are required, and how long must we retain them?
|
|
2107
|
+
|
|
2108
|
+
28. **Access Control**: Who needs access to configure, monitor, or modify this control?
|
|
2109
|
+
|
|
2110
|
+
29. **Incident Response**: How does this requirement impact our incident response procedures?
|
|
2111
|
+
|
|
2112
|
+
30. **Continuous Monitoring**: How will we continuously validate compliance with this requirement?
|
|
2113
|
+
|
|
2114
|
+
### User Experience:
|
|
2115
|
+
31. **User Impact**: Will implementing this requirement affect user experience or workflows?
|
|
2116
|
+
|
|
2117
|
+
32. **Training**: What training will users or administrators need for this control?
|
|
2118
|
+
|
|
2119
|
+
33. **Communication**: How should we communicate changes to customers and stakeholders?
|
|
2120
|
+
|
|
2121
|
+
34. **Support**: What support burden will this create for our customer success team?
|
|
2122
|
+
|
|
2123
|
+
35. **Accessibility**: Does this control maintain accessibility and usability standards?
|
|
2124
|
+
|
|
2125
|
+
---
|
|
2126
|
+
|
|
2127
|
+
## Azure-Specific Considerations
|
|
2128
|
+
|
|
2129
|
+
### Azure Implementation:
|
|
2130
|
+
"""
|
|
2131
|
+
|
|
2132
|
+
# Add Azure-specific questions based on family/keywords
|
|
2133
|
+
keywords = title.lower() + ' ' + description.lower()
|
|
2134
|
+
|
|
2135
|
+
if any(word in keywords for word in ['identity', 'access', 'authentication', 'authorization']):
|
|
2136
|
+
result += """
|
|
2137
|
+
36. **Entra ID Configuration**: How should we configure Microsoft Entra ID to support this requirement?
|
|
2138
|
+
|
|
2139
|
+
37. **RBAC Design**: What Azure RBAC roles and assignments are needed?
|
|
2140
|
+
|
|
2141
|
+
38. **Conditional Access**: Should we implement Conditional Access policies for this control?
|
|
2142
|
+
|
|
2143
|
+
39. **Privileged Access**: Do we need Privileged Identity Management (PIM) for just-in-time access?
|
|
2144
|
+
"""
|
|
2145
|
+
|
|
2146
|
+
if any(word in keywords for word in ['monitor', 'log', 'audit', 'visibility', 'detect']):
|
|
2147
|
+
result += """
|
|
2148
|
+
40. **Log Analytics**: What logs need to be sent to Azure Monitor and retained for how long?
|
|
2149
|
+
|
|
2150
|
+
41. **Sentinel Integration**: Should Microsoft Sentinel be used for threat detection or compliance monitoring?
|
|
2151
|
+
|
|
2152
|
+
42. **Alerting Strategy**: What alerts should be configured, and who should receive them?
|
|
2153
|
+
|
|
2154
|
+
43. **Dashboard Design**: What compliance dashboards should we create for visibility?
|
|
2155
|
+
"""
|
|
2156
|
+
|
|
2157
|
+
if any(word in keywords for word in ['configuration', 'policy', 'governance', 'compliance']):
|
|
2158
|
+
result += """
|
|
2159
|
+
44. **Azure Policy**: What Azure Policies should be created to enforce this requirement?
|
|
2160
|
+
|
|
2161
|
+
45. **Blueprints**: Should we use Azure Blueprints to package this control for repeatable deployment?
|
|
2162
|
+
|
|
2163
|
+
46. **Management Groups**: How should management group hierarchy support this control?
|
|
2164
|
+
|
|
2165
|
+
47. **Resource Tags**: What tagging strategy is needed for compliance tracking?
|
|
2166
|
+
"""
|
|
2167
|
+
|
|
2168
|
+
if any(word in keywords for word in ['security', 'vulnerability', 'threat', 'protection']):
|
|
2169
|
+
result += """
|
|
2170
|
+
48. **Defender Configuration**: How should Microsoft Defender for Cloud be configured?
|
|
2171
|
+
|
|
2172
|
+
49. **Security Baseline**: Does this align with Azure Security Benchmark recommendations?
|
|
2173
|
+
|
|
2174
|
+
50. **Vulnerability Scanning**: What vulnerability scanning tools should be integrated?
|
|
2175
|
+
|
|
2176
|
+
51. **Penetration Testing**: How will we conduct penetration testing for this control?
|
|
2177
|
+
"""
|
|
2178
|
+
|
|
2179
|
+
if any(word in keywords for word in ['data', 'encryption', 'confidential', 'protection']):
|
|
2180
|
+
result += """
|
|
2181
|
+
52. **Key Vault**: How should Azure Key Vault be used for secrets and key management?
|
|
2182
|
+
|
|
2183
|
+
53. **Encryption Strategy**: What data needs encryption at rest and in transit?
|
|
2184
|
+
|
|
2185
|
+
54. **Data Classification**: How does data classification affect implementation?
|
|
2186
|
+
|
|
2187
|
+
55. **Data Residency**: Are there data residency requirements that impact Azure region selection?
|
|
2188
|
+
"""
|
|
2189
|
+
|
|
2190
|
+
result += """
|
|
2191
|
+
|
|
2192
|
+
---
|
|
2193
|
+
|
|
2194
|
+
## Decision Framework
|
|
2195
|
+
|
|
2196
|
+
### Must Answer Before Implementation:
|
|
2197
|
+
- [ ] Have we clearly defined what "compliance" means for this requirement?
|
|
2198
|
+
- [ ] Do we have executive sponsorship and budget approval?
|
|
2199
|
+
- [ ] Have we identified all affected systems and data flows?
|
|
2200
|
+
- [ ] Do we know who is accountable for this control's success?
|
|
2201
|
+
- [ ] Have we validated our approach with a FedRAMP expert or 3PAO?
|
|
2202
|
+
|
|
2203
|
+
### Success Criteria:
|
|
2204
|
+
- [ ] Control can be demonstrated to work as designed
|
|
2205
|
+
- [ ] Evidence collection is automated and reliable
|
|
2206
|
+
- [ ] Documentation is complete and approved
|
|
2207
|
+
- [ ] Team is trained on operation and troubleshooting
|
|
2208
|
+
- [ ] Control passes internal testing and review
|
|
2209
|
+
|
|
2210
|
+
### Red Flags to Watch For:
|
|
2211
|
+
- [ ] No clear owner or accountability for the control
|
|
2212
|
+
- [ ] Significant manual processes that don't scale
|
|
2213
|
+
- [ ] Heavy reliance on undocumented configurations
|
|
2214
|
+
- [ ] No monitoring or alerting for control failures
|
|
2215
|
+
- [ ] Implementation differs significantly from documented design
|
|
2216
|
+
|
|
2217
|
+
---
|
|
2218
|
+
|
|
2219
|
+
## Next Steps
|
|
2220
|
+
|
|
2221
|
+
1. **Research Phase**: Gather information about Azure capabilities and best practices
|
|
2222
|
+
2. **Design Phase**: Create architecture diagrams and implementation plans
|
|
2223
|
+
3. **Review Phase**: Get design reviewed by security, compliance, and architecture teams
|
|
2224
|
+
4. **Prototype Phase**: Build proof-of-concept in non-production environment
|
|
2225
|
+
5. **Test Phase**: Validate control works as designed and collects proper evidence
|
|
2226
|
+
6. **Document Phase**: Create all required policies, procedures, and runbooks
|
|
2227
|
+
7. **Deploy Phase**: Implement in production with proper change management
|
|
2228
|
+
8. **Validate Phase**: Conduct internal audit to verify compliance
|
|
2229
|
+
9. **Monitor Phase**: Continuously monitor and report on control effectiveness
|
|
2230
|
+
|
|
2231
|
+
---
|
|
2232
|
+
|
|
2233
|
+
## Recommended Resources
|
|
2234
|
+
|
|
2235
|
+
### Microsoft Documentation:
|
|
2236
|
+
- Azure Security Benchmark: https://learn.microsoft.com/en-us/security/benchmark/azure/
|
|
2237
|
+
- Azure Well-Architected Framework: https://learn.microsoft.com/en-us/azure/well-architected/
|
|
2238
|
+
- FedRAMP on Azure: https://learn.microsoft.com/en-us/azure/compliance/offerings/offering-fedramp
|
|
2239
|
+
|
|
2240
|
+
### FedRAMP Resources:
|
|
2241
|
+
- FedRAMP.gov: https://www.fedramp.gov/
|
|
2242
|
+
- FedRAMP 20x Documentation: https://github.com/FedRAMP/docs
|
|
2243
|
+
- FedRAMP Marketplace: https://marketplace.fedramp.gov/
|
|
2244
|
+
|
|
2245
|
+
### Community:
|
|
2246
|
+
- Azure Community: https://techcommunity.microsoft.com/t5/azure/ct-p/Azure
|
|
2247
|
+
- FedRAMP PMO: https://www.fedramp.gov/program-basics/
|
|
2248
|
+
|
|
2249
|
+
---
|
|
2250
|
+
|
|
2251
|
+
*Use these questions to facilitate team discussions, planning sessions, and design reviews. The goal is to ensure thorough thinking about implementation before committing resources.*
|
|
2252
|
+
|
|
2253
|
+
*Generated by FedRAMP 20x MCP Server - Implementation Questions Tool*
|
|
2254
|
+
"""
|
|
2255
|
+
|
|
2256
|
+
return result
|