🚀 FedRAMP 20x MCP 服務器
FedRAMP 20x MCP 服務器是一個基於 Model Context Protocol(MCP)的服務器,它提供對 FedRAMP 20x 安全要求和控制的訪問,並提供以 Azure 優先的指導。該服務器從官方的 FedRAMP 文檔倉庫加載數據,支持通過控制、家族或關鍵字查詢要求,同時提供了豐富的工具和提示,幫助用戶進行 FedRAMP 20x 合規性的規劃、實施、監控和審計。
🚀 快速開始
前提條件
- Python 3.10 或更高版本
- pip(包含在 Python 中)
- Python 必須在系統的 PATH 環境變量中
安裝步驟
git clone https://github.com/KevinRabun/FedRAMP20xMCP.git
cd FedRAMP20xMCP
python -m venv .venv
source .venv/bin/activate
pip install -e .
uv pip install -e .
依賴項
mcp>=1.2.0 - Model Context Protocol SDK
httpx>=0.27.0 - 用於獲取 FedRAMP 數據的 HTTP 客戶端
openpyxl>=3.1.0 - 用於導出功能的 Excel 文件生成庫
python-docx>=1.1.0 - 用於 KSI 規範的 Word 文檔生成庫
tree-sitter>=0.21.0 - 用於代碼分析的 AST 解析庫
tree-sitter-python>=0.21.0 - tree-sitter 的 Python 語言綁定
tree-sitter-c-sharp>=0.21.0 - tree-sitter 的 C# 語言綁定
tree-sitter-java>=0.21.0 - tree-sitter 的 Java 語言綁定
tree-sitter-javascript>=0.21.0 - tree-sitter 的 JavaScript/TypeScript 語言綁定
故障排除
如果遇到問題,請參閱 高級設置指南 獲取詳細的故障排除步驟。
✨ 主要特性
完整的數據覆蓋
服務器提供對 FedRAMP 20x 文檔中 271 項要求(199 項 FRR + 72 項 KSI)和 50 項定義(FRD)的訪問。
- FedRAMP 要求(FRR):涵蓋 10 個家族的 199 項要求,如授權數據共享(ADS)、協作持續監控(CCM)等。
- 關鍵安全指標(KSI):涵蓋 11 個家族的 72 項指標,如架構、功能和資源(AFR)、持續證據交付(CED)等。
- FedRAMP 定義(FRD):50 項官方術語定義。
豐富的功能特性
- 自動化證據收集:為所有 65 個活躍的 KSI 提供完整的自動化指導,包括 Azure 原生服務、即用型查詢和工件規範。
- 多樣化的查詢方式:支持按控制、家族或關鍵字查詢要求,以及查詢 FedRAMP 定義和關鍵安全指標。
- 基於模式的架構:使用統一的基於模式的架構進行所有 FedRAMP 20x 合規性分析,支持 14 種語言,具有一致性、可維護性、性能和可擴展性等優點。
- 代碼分析工具:提供 AST 驅動的 FedRAMP 合規性掃描,支持 6 種語言(Python、C#、Java、TypeScript/JavaScript、Bicep、Terraform),可對基礎設施代碼、應用程序代碼和 CI/CD 管道進行準確的語義分析。
- 安全工具:提供 CVE 漏洞檢查和依賴項文件檢查等安全工具。
- 審計工具:提供 KSI 覆蓋摘要和狀態檢查等審計工具。
- KSI 狀態工具:跟蹤所有 KSI 家族的實施狀態。
集成分析能力
提供結合關鍵安全指標(KSI)和 FedRAMP 修訂要求(FRR)的集成分析能力,通過多個示例展示瞭如何同時使用 KSI 代碼分析器和 FRR 分析工具進行全面的安全評估,實現戰術代碼級發現和戰略合規性覆蓋的結合。
📦 安裝指南
前提條件
- Python 3.10 或更高版本
- pip(包含在 Python 中)
- Python 必須在系統的 PATH 環境變量中
安裝步驟
git clone https://github.com/KevinRabun/FedRAMP20xMCP.git
cd FedRAMP20xMCP
python -m venv .venv
source .venv/bin/activate
pip install -e .
uv pip install -e .
依賴項
mcp>=1.2.0 - Model Context Protocol SDK
httpx>=0.27.0 - 用於獲取 FedRAMP 數據的 HTTP 客戶端
openpyxl>=3.1.0 - 用於導出功能的 Excel 文件生成庫
python-docx>=1.1.0 - 用於 KSI 規範的 Word 文檔生成庫
tree-sitter>=0.21.0 - 用於代碼分析的 AST 解析庫
tree-sitter-python>=0.21.0 - tree-sitter 的 Python 語言綁定
tree-sitter-c-sharp>=0.21.0 - tree-sitter 的 C# 語言綁定
tree-sitter-java>=0.21.0 - tree-sitter 的 Java 語言綁定
tree-sitter-javascript>=0.21.0 - tree-sitter 的 JavaScript/TypeScript 語言綁定
故障排除
如果遇到問題,請參閱 高級設置指南 獲取詳細的故障排除步驟。
💻 使用示例
與 VS Code 和 GitHub Copilot 配合使用
- 安裝 VS Code MCP 擴展(如果尚未安裝)
- 配置 MCP 服務器 - 選擇以下範圍之一:
- 選項 A:工作區級別(推薦用於共享)
在項目的
.vscode/mcp.json 中添加以下內容:{
"servers": {
"fedramp-20x-mcp": {
"type": "stdio",
"command": "python",
"args": ["-m", "fedramp_20x_mcp"]
}
}
}
如果 Python 不在 PATH 中,請更新命令以使用虛擬環境的 Python:{
"servers": {
"fedramp-20x-mcp": {
"type": "stdio",
"command": "${workspaceFolder}/.venv/Scripts/python.exe",
"args": ["-m", "fedramp_20x_mcp"]
}
}
}
- 選項 B:用戶級別(全局適用於所有項目)
在 VS Code 用戶設置 (
settings.json) 中添加以下內容:{
"github.copilot.chat.mcp.servers": {
"fedramp-20x-mcp": {
"type": "stdio",
"command": "python",
"args": ["-m", "fedramp_20x_mcp"]
}
}
}
安全注意事項:請勿在配置中使用 "alwaysAllow"。VS Code 將在首次使用時提示您授予權限,這是一種安全最佳實踐。
- 可選:配置 VS Code 設置:將
.vscode/settings.json.example 複製到 .vscode/settings.json
- 重新加載 VS Code 以激活 MCP 服務器
- 授予權限:當 VS Code 提示時(僅首次使用)
- 與 GitHub Copilot Chat 配合使用:
- 打開 Copilot Chat
- 詢問有關 FedRAMP 20x 要求的問題
- 使用
@workspace 查詢特定的控制或家族
- 訪問所有 48 個工具和 15 個全面的提示
與 Claude Desktop 配合使用
將此服務器添加到您的 Claude Desktop 配置中(在 macOS 上為 ~/Library/Application Support/Claude/claude_desktop_config.json,在 Windows 上為 %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"fedramp-20x": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/FedRAMP20xMCP",
"run",
"fedramp-20x-mcp"
]
}
}
}
注意:請將 /absolute/path/to/FedRAMP20xMCP 替換為您的實際安裝路徑。
與 MCP 檢查器配合使用
使用 MCP 檢查器測試服務器:
npx @modelcontextprotocol/inspector python -m fedramp_20x_mcp
代碼分析示例
result = analyze_frr_code(
frr_id="FRR-VDR-01",
code="""import subprocess
subprocess.run(['trivy', 'image', 'myapp:latest'])
""",
language="python"
)
result = analyze_frr_code(
frr_id="FRR-ADS-01",
code="""resource apiManagement 'Microsoft.ApiManagement/service@2023-05-01-preview' = {
name: 'evidence-api'
properties: {
publisherEmail: 'admin@contoso.com'
publisherName: 'Contoso'
}
}""",
language="bicep"
)
📚 詳細文檔
可用工具
服務器提供 48 個工具,分為以下類別:
- 核心工具(11 個):查詢要求、定義、KSI 和 KSI 證據自動化
- FRR 分析工具(7 個):根據 FedRAMP 要求(FRR)分析代碼,進行全面的合規性檢查
- 文檔工具(3 個):搜索和檢索 FedRAMP 文檔
- 增強工具(7 個):提供實施示例、依賴項、工作量估計和架構驗證等功能
- 導出工具(3 個):支持 Excel/CSV 導出和 KSI 規範生成
- 規劃工具(1 個):生成戰略實施問題
- 證據收集自動化工具(3 個):提供基礎設施代碼、收集代碼和架構指導
- 實施映射工具(2 個):提供 KSI 家族矩陣和分步實施清單
- 代碼分析工具(3 個):使用 tree-sitter 進行 AST 驅動的 FedRAMP 合規性掃描,支持 6 種語言
- 安全工具(2 個):檢查包和依賴項文件的 CVE 漏洞
- 審計工具(2 個):提供 KSI 覆蓋摘要和狀態檢查
- KSI 狀態工具(1 個):跟蹤所有 KSI 家族的實施狀態
工具詳細說明
get_control
獲取特定 FedRAMP 要求或控制的詳細信息。
- 參數:
control_id(字符串):要求標識符(例如,"FRD-ALL-01","KSI-AFR-01")
list_family_controls
列出特定家族中的所有要求。
- 參數:
family(字符串):家族標識符(例如,"FRD","KSI","MAS")
search_requirements
搜索包含特定關鍵字的要求。
- 參數:
keywords(字符串):在要求文本中搜索的關鍵字
get_definition
獲取特定術語的 FedRAMP 定義。
- 參數:
term(字符串):要查找的術語(例如,"vulnerability","cloud service offering")
list_definitions
列出所有 FedRAMP 定義及其術語。
search_definitions
按關鍵字搜索 FedRAMP 定義。
get_ksi
獲取特定關鍵安全指標的詳細信息。
- 參數:
ksi_id(字符串):KSI 標識符(例如,"KSI-AFR-01")
list_ksi
列出所有關鍵安全指標。
get_ksi_evidence_automation
獲取特定 KSI 的全面證據自動化建議。所有 65 個活躍的 KSI 都包括完整的自動化證據收集指導。
- 參數:
ksi_id(字符串):KSI 標識符(例如,"KSI-IAM-01","KSI-CNA-01")
- 返回值:全面的證據自動化指導,包括 Azure 服務、收集方法、存儲要求、FRR-ADS 集成、實施細節和代碼示例等。
get_ksi_evidence_queries
獲取特定 KSI 的即用型證據收集查詢。
- 參數:
ksi_id(字符串):KSI 標識符(例如,"KSI-IAM-01","KSI-CNA-01")
- 返回值:用於從 Azure 收集證據的生產就緒查詢,包括 KQL 查詢、Azure 資源圖查詢、REST API 調用、Azure CLI 腳本和 PowerShell cmdlet 等。
get_ksi_evidence_artifacts
獲取特定 KSI 要收集的證據工件的規範。
- 參數:
ksi_id(字符串):KSI 標識符(例如,"KSI-IAM-01","KSI-CNA-01")
- 返回值:詳細的工件規範,包括工件名稱、收集方法、文件格式、更新頻率、保留要求和存儲建議等。
analyze_frr_code
根據特定的 FedRAMP 要求(FRR)分析代碼的合規性問題。
- 參數:
frr_id(字符串):FRR 標識符(例如,"FRR-VDR-01","FRR-RSC-01","FRR-ADS-01")
code(字符串):要分析的代碼
language(字符串):語言/平臺 - "python","csharp","java","typescript","bicep","terraform","github-actions","azure-pipelines","gitlab-ci"
file_path(字符串,可選):用於上下文的文件路徑
- 返回值:分析結果,包括髮現、嚴重程度級別和補救建議
analyze_all_frrs
根據所有 199 個 FedRAMP 要求分析代碼,進行全面的合規性檢查。
- 參數:
code(字符串):要分析的代碼
language(字符串):語言/平臺(python,csharp,java,typescript,bicep,terraform,github-actions,azure-pipelines,gitlab-ci)
file_path(字符串,可選):用於上下文的文件路徑
- 返回值:按 FRR 家族分組的完整分析結果,包括摘要統計信息
analyze_frr_family
根據特定 FRR 家族中的所有要求分析代碼。
- 參數:
family(字符串):家族代碼 - "VDR","RSC","UCM","SCN","ADS","CCM","MAS","ICP","FSI","PVA"
code(字符串):要分析的代碼
language(字符串):語言/平臺
file_path(字符串,可選):用於上下文的文件路徑
- 返回值:指定家族中所有要求的分析結果
list_frrs_by_family
列出特定家族中所有 FRR 要求及其實施狀態。
- 參數:
family(字符串):家族代碼(VDR,RSC,UCM,SCN,ADS,CCM,MAS,ICP,FSI,PVA)
- 返回值:家族中所有 FRR 的列表,包括 FRR ID 和名稱、實施狀態、代碼可檢測性、NIST 800-53 控制映射和影響級別等。
get_frr_metadata
獲取特定 FRR 的詳細元數據,包括 NIST 控制、相關 KSI 和檢測策略。
- 參數:
frr_id(字符串):FRR 標識符(例如,"FRR-VDR-01")
- 返回值:全面的 FRR 元數據,包括 FRR 詳細信息、NIST 800-53 控制、相關 KSI、影響級別、檢測策略和實施指南等。
get_frr_evidence_automation
獲取特定 FRR 的證據自動化建議。
- 參數:
frr_id(字符串):FRR 標識符(例如,"FRR-VDR-01","FRR-ADS-01")
- 返回值:全面的證據自動化指導,包括證據類型、自動化可行性、Azure 服務、收集方法、存儲要求、證據工件、實施步驟、代碼示例、更新頻率和責任方等。
get_frr_implementation_status
獲取所有 FRR 分析器的實施狀態摘要。
- 參數:無
- 返回值:實施狀態摘要,包括總 FRR 數量、按家族的實施情況、狀態細分、代碼可檢測性、基於流程的要求和覆蓋統計信息等。
compare_with_rev4
比較 FedRAMP 20x 與 Rev 4/Rev 5 要求的特定領域。
- 參數:
requirement_area(字符串):要比較的領域(例如,"continuous monitoring","vulnerability management","authorization boundary","evidence collection","change management","incident response")
get_implementation_examples
獲取特定要求的實際實施示例。
- 參數:
requirement_id(字符串):要求標識符(例如,"KSI-IAM-01","FRR-VDR-01")
check_requirement_dependencies
檢查 FedRAMP 20x 要求之間的依賴關係。
- 參數:
requirement_id(字符串):要檢查依賴關係的要求標識符
estimate_implementation_effort
估計特定要求的實施工作量。
- 參數:
requirement_id(字符串):要估計工作量的要求標識符
get_cloud_native_guidance
獲取特定 Azure 和多雲技術的雲原生實施指南。
- 參數:
technology(字符串):要獲取指南的技術(例如,"kubernetes","containers","serverless","terraform")
validate_architecture
根據 FedRAMP 20x 要求驗證系統架構。
- 參數:
architecture_description(字符串):要驗證的架構描述
search_documentation
在 FedRAMP 官方文檔的 Markdown 文件中搜索特定關鍵字。
- 參數:
keywords(字符串):要在文檔中搜索的關鍵字
- 返回值:匹配的文檔部分,包含所有可用 Markdown 文件的上下文
get_documentation_file
獲取特定 FedRAMP 文檔文件的完整內容。
- 參數:
filename(字符串):Markdown 文件名(例如,"overview.md","key-security-indicators.md")
- 返回值:文檔文件的完整 Markdown 內容
list_documentation_files
列出所有可用的 FedRAMP 文檔文件。
- 返回值:從倉庫中動態發現的所有 Markdown 文檔文件的完整列表
export_to_excel
將 FedRAMP 20x 數據導出到 Excel 文件,用於離線分析和報告。
- 參數:
export_type(字符串):要導出的數據類型:
"ksi" - 所有 72 個關鍵安全指標
"all_requirements" - 所有家族的 329 個要求
"definitions" - 所有 FedRAMP 術語定義
output_path(字符串,可選):自定義輸出路徑。如果未提供,則保存到下載文件夾
- 返回值:生成的 Excel 文件的路徑,具有專業的格式(樣式化的標題、邊框、凍結窗格)
export_to_csv
將 FedRAMP 20x 數據導出到 CSV 文件,用於數據分析和電子表格導入。
- 參數:
export_type(字符串):要導出的數據類型:
"ksi" - 所有 72 個關鍵安全指標
"all_requirements" - 所有家族的 329 個要求
"definitions" - 所有 FedRAMP 術語定義
output_path(字符串,可選):自定義輸出路徑。如果未提供,則保存到下載文件夾
- 返回值:生成的 CSV 文件的路徑
generate_ksi_specification
生成 KSI 的全面產品規範 Word 文檔,指導工程實施和規劃。
- 參數:
ksi_id(字符串):KSI 標識符(例如,"KSI-AFR-01")
evidence_collection_strategy(字符串):用戶提供的高級證據收集策略描述
output_path(字符串,可選):自定義輸出路徑。如果未提供,則保存到下載文件夾
- 返回值:生成的 Word (.docx) 文檔的路徑
generate_implementation_questions
為產品經理和工程師生成戰略面試問題,促進深思熟慮的規劃討論。
- 參數:
requirement_id(字符串):要求或 KSI 標識符(例如,"FRR-CCM-01","KSI-IAM-01")
- 返回值:按利益相關者角色組織的全面戰略問題集
analyze_infrastructure_code
分析基礎設施即代碼(IaC)文件的 FedRAMP 20x 合規性問題,並提供可操作的建議。
- 參數:
code(字符串):要分析的 IaC 代碼內容
file_type(字符串):IaC 文件類型 - "bicep" 或 "terraform"
file_path(字符串):正在分析的文件的路徑(用於報告)
context(字符串,可選):有關代碼的額外上下文(例如,PR 描述)
- 返回值:
findings:合規性發現的數組,包含要求 ID、嚴重程度、描述和建議
summary:高/中/低優先級問題和良好實踐的計數
pr_comment:適用於 GitHub/ADO PR 評論的格式化 Markdown
analyze_application_code
分析應用程序代碼的 FedRAMP 20x 安全合規性問題。
- 參數:
code(字符串):要分析的應用程序代碼內容
language(字符串):編程語言 - "python","csharp","java","typescript",或 "javascript"
file_path(字符串):正在分析的文件的路徑(用於報告)
dependencies(數組,可選):項目依賴項列表(例如,["flask==2.3.0", "requests==2.31.0"])
- 返回值:
findings:安全發現的數組(與基礎設施分析結構相同)
summary:高/中/低優先級問題和良好實踐的計數
pr_comment:用於 PR 審查的格式化 Markdown
dependencies_checked:分析的依賴項數量
analyze_cicd_pipeline
分析 CI/CD 管道配置的 FedRAMP 20x DevSecOps 合規性。
- 參數:
code(字符串):管道配置內容(YAML/JSON)
pipeline_type(字符串):管道類型 - "github-actions","azure-pipelines","gitlab-ci",或 "generic"
file_path(字符串):管道文件的路徑(用於報告)
- 返回值:
findings:DevSecOps 發現的數組(與代碼分析結構相同)
summary:高/中/低優先級問題和良好實踐的計數
pr_comment:用於 PR 審查的格式化 Markdown
pipeline_type:檢測到的管道平臺
get_infrastructure_code_for_ksi
生成用於自動化證據收集基礎設施的基礎設施即代碼模板(Bicep 或 Terraform)。
- 參數:
ksi_id(字符串):關鍵安全指標標識符(例如,"KSI-IAM-01","KSI-MLA-01")
infrastructure_type(字符串):"bicep" 或 "terraform"
- 返回值:用於部署證據收集基礎設施的完整 IaC 模板
get_evidence_collection_code
生成用於以編程方式收集和存儲 KSI 證據的業務邏輯代碼(Python、C#、PowerShell、Java 或 TypeScript)。
- 參數:
ksi_id(字符串):關鍵安全指標標識符(例如,"KSI-IAM-01")
language(字符串):"python","csharp","powershell","java",或 "typescript"(也接受 "javascript")
- 返回值:包含身份驗證、證據收集和存儲的完整代碼示例
get_evidence_automation_architecture
獲取自動化證據收集系統的全面架構指南。
- 參數:
scope(字符串):架構範圍 - "minimal","single-ksi","category",或 "all"
- 返回值:包含組件、數據流和實施指南的完整架構模式
可用提示
服務器提供 18 個用於 FedRAMP 合規性工作流的提示:
- 綜合規劃與評估提示:包括初始評估路線圖、差距分析、供應商評估、從 Rev 5 遷移到 20x 的計劃等。
- 實施與自動化提示:提供 KSI 實施優先級、Azure KSI 自動化、API 設計指南、授權邊界審查等提示。
- 監控與合規提示:包括持續監控設置、季度審查清單、漏洞修復時間表等提示。
- 審計與文檔提示:提供審計準備、ATO 包清單、文檔生成器等提示。
- FRR 合規與代碼審查提示:包括 FRR 代碼審查、FRR 家族評估、FRR 實施路線圖等提示。
綜合 KSI + FRR 分析示例
通過多個示例展示瞭如何結合關鍵安全指標(KSI)和 FedRAMP 修訂要求(FRR)進行綜合分析,實現戰術代碼級發現和戰略合規性覆蓋的結合,提供了全面的安全評估和證據收集建議。
推薦工作流程
- 開發階段:使用 KSI 分析器進行戰術代碼審查
factory.analyze(ksi_id, code, language, file_path) 進行特定的安全檢查
analyze_frr_code(frr_id, code, language, file_path) 進行要求驗證
- 預提交階段:根據關鍵 FRR 家族進行分析
analyze_frr_family("VDR", code, language, file_path) 進行漏洞管理檢查
analyze_frr_family("RSC", code, language, file_path) 進行安全配置檢查
- CI/CD 管道:在部署前進行全面的合規性掃描
factory.analyze_all_ksis(code, language, file_path) 檢查所有 KSI
analyze_all_frrs(code, language, file_path) 檢查所有 FRR
- 季度審查:進行合規性跟蹤和報告
get_ksi_implementation_status() 跟蹤 KSI 進度
get_frr_implementation_status() 跟蹤 FRR 合規性
- 為利益相關者生成綜合合規性報告
🔧 技術細節
基於模式的分析架構
服務器使用統一的基於模式的架構進行所有 FedRAMP 20x 合規性分析:
- 架構概述:
- 381 個 YAML 模式:涵蓋 23 個要求家族
- 單一分析引擎:
GenericPatternAnalyzer 取代 271 個傳統分析器
- 支持 14 種語言:Python、C#、Java、TypeScript、JavaScript、Bicep、Terraform、GitHub Actions、Azure Pipelines、GitLab CI、YAML、JSON、Dockerfile、GitHub
- 基於 AST 的檢測:使用 tree-sitter 進行準確檢測,必要時使用正則表達式回退
- 聲明式模式:易於維護和擴展
- 模式覆蓋範圍:
- 應用家族:涵蓋 17 個家族,如 ADS、AFR、CCM 等
- 基礎設施家族:涵蓋 6 個家族,如 COMMON、FSI、ICP 等
- 完整的 KSI 和 FRR 映射:所有 72 個 KSI 和 199 個 FRR 都通過模式定義覆蓋
- 工作原理:
- 模式加載:從
data/patterns/ 目錄加載 YAML 模式
- 分析執行:使用 tree-sitter AST 解析和模式匹配分析代碼
- 發現生成:模式生成具有嚴重性、描述和補救措施的發現
- 結果聚合:發現按要求家族分組並去重
- 優勢:
- 一致性:所有語言使用相同的檢測邏輯
- 可維護性:在 YAML 中更新模式,而不是 Python 代碼
- 性能:模式編譯和緩存優化分析速度
- 可擴展性:無需更改代碼即可添加新模式
- 準確性:基於 AST 的檢測減少誤報
重要說明:OSCAL 格式
FedRAMP 20x 要求授權數據共享使用機器可讀格式(JSON、XML 或結構化數據)。OSCAL 未在 FedRAMP 20x 要求中提及,它是一個 NIST 標準,可以作為一種潛在的實現方法。實際要求只是“機器可讀”,您可以根據實現需求使用自定義 JSON/XML 或 OSCAL。
📄 許可證
本項目採用 MIT 許可證,請參閱 LICENSE 文件瞭解詳細信息。
本項目是開源的,歡迎貢獻!請參閱 CONTRIBUTING.md 獲取指南。
FedRAMP 數據由美國總務管理局作為公共領域內容提供。
參考資料