mcp身份网关
人工智能代理和身份平台:强大API的可审计性
Okta基于MCP的网关设计和参考实现。
概述
人工智能代理正在成为安全操作和身份管理的强大工具。然而,直接将身份平台API(创建用户、重置密码、暂停帐户)暴露给AI代理会带来重大的治理和审计风险。该存储库演示了一种网关模式,其中AI代理通过模型上下文协议(MCP)工具进行通信,所有这些工具都有明确的审计跟踪作为支持,这些跟踪不仅可以捕获 *什么* 发生了,但是 *为什么* AI做出了这个决定。
设计强调 原始API功率的可解释性我们没有让AI代理不受限制地访问身份API,而是引入了一个位于AI和Okta之间的MCP网关。所有AI驱动的操作都通过此网关,通过显式范围进行授权,并记录在包括AI推理的事务级审计日志中。
此存储库是 参考实现它旨在为组织评估如何安全地将身份操作委托给人工智能代理的治理讨论、概念验证工作和架构规划提供支持。
存储库布局
mcp-identity-gateway/
README.md
LICENSE
docs/
whitepaper.md
Executive-Summary-for-CISO.md
audit-log-sample.json
semantic-event-sample.json
examples/
example_conversation.md
audit-log-sample.jsonl
src/
__init__.py
okta_audit_and_rollback.py
okta_systemlog.py
okta_workflows.py此存储库演示了什么
该存储库包含三个FastMCP服务器实现,它们共同构成了通往Okta的AI安全网关:
- AI代理和Okta之间的MCP网关:一个干净的抽象,AI代理直接调用MCP工具而不是Okta REST API。
- Okta工作流作为执行层:挂起用户、重置密码和通知等操作是通过Okta工作流HTTP流执行的,HTTP流本身可以包括策略检查和批准步骤。
- 事务级AI审计日志AI发起的每个动作都以JSONL格式记录,包括用户、动作、AI推理、时间戳和结果。回滚通过交易ID进行跟踪。
- 语义事件规范化Okta系统日志被规范化为一致的模式,允许AI以结构化的方式对身份事件进行推理。
- 用于行为分析的本地矢量存储:事件摘要嵌入并存储在可搜索的JSONL向量数据库中,从而实现模式检测和异常上下文。
组件
文档:
docs/whitepaper.md--安全架构师和IAM工程师的技术架构和设计原理。docs/Executive-Summary-for-CISO.md--首席信息安全官和审计利益相关者的高层概述,涵盖治理、控制和风险缓解。docs/audit-log-sample.json--显示事务ID、操作、推理、状态和时间戳的单个AI驱动的操作审计日志条目示例。docs/semantic-event-sample.json--从Okta系统日志中导出的规范化语义事件示例,包括参与者、目标、风险信号和客户端上下文。
示例:
examples/example_conversation.md--真实事件响应场景的叙述性演练:分析师查询用户活动,人工智能分析日志,人工智能暂停账户,并记录审计。examples/audit-log-sample.jsonl--两个JSONL示例行显示了一个挂起操作,然后是引用原始事务的回滚(unsuspend)。
源代码:
src/okta_workflows.py--FastMCP服务器提供设备授权授予、基于作用域的访问控制、日志分析、异常检测和用户操作(挂起、重置密码、读取用户、通知)。src/okta_audit_and_rollback.py--FastMCP服务器,用于挂起/取消挂起操作,具有JSONL格式的显式事务级审计日志记录。src/okta_systemlog.py--FastMCP服务器用于Okta系统日志的语义规范化、启发式风险分析以及OpenAI支持的行为矢量化和相似性搜索。
先决条件
python 3.9或更高版本。
MCP客户端: 支持MCP的AI客户端,如Claude Desktop、支持MCP的ChatGPT或自定义代理框架。
Okta租户: 您必须具备:
- 拥有API访问权限的Okta组织。
- OAuth 2.0授权服务器。
- 为设备授权授予流配置的OIDC客户端。
- Okta工作流的HTTP流用于:挂起用户、取消挂起的用户、重置密码、搜索系统日志、读取用户和通知用户。
Python依赖关系:
- fastmcp
- 请求:
- PyJWT
- scikit学习
- 开放人工智能
- 数值Python
环境配置
所有凭据和URL都是通过环境变量提供的。此存储库中不存储任何机密。
OAuth/设备授权:
OKTA_ISSUER--Okta组织基础URL(例如。,https://myorg.okta.com).OKTA_CLIENT_ID--OAuth客户端ID。OKTA_CLIENT_SECRET--OAuth客户端机密。OKTA_AUTH_SERVER_ID--授权服务器ID。
Okta工作流HTTP流(每个都有URL+令牌):
OKTA_WF_SUSPEND_USER_URL/OKTA_WF_SUSPEND_USER_TOKENOKTA_WF_UNSUSPEND_USER_URL/OKTA_WF_UNSUSPEND_USER_TOKENOKTA_WF_RESET_PASSWORD_URL/OKTA_WF_RESET_PASSWORD_TOKENOKTA_WF_SEARCH_LOGS_URL/OKTA_WF_SEARCH_LOGS_TOKENOKTA_WF_READ_USER_URL/OKTA_WF_READ_USER_TOKENOKTA_WF_NOTIFY_USER_URL/OKTA_WF_NOTIFY_USER_TOKEN
审计和矢量存储:
AUDIT_LOG_DIR--用于存储JSONL审计日志的目录(默认:/tmp/okta_audit).VECTOR_DB_PATH--JSONL向量数据库的路径(默认:./vector_db.jsonl).
快速启动
- 实现Okta工作流HTTP流。 在Okta工作流中,为suspend_user、unsuspend_uuser、reset_password、search_logs(系统日志API)、read_user和notify_user创建HTTP-三级流。每个流程都应该接受
user_login和reason参数。记录HTTP端点URL,并为每个流生成一个API令牌。
- 设置环境变量。 创建一个
.env文件或导出上面环境配置部分中列出的变量。确保所有OAuth和工作流URL和令牌都存在。
- 安装Python依赖项。 运行:
pip install fastmcp requests PyJWT scikit-learn openai numpy- 运行三台MCP服务器。 在单独的终端中(或使用进程管理器),启动每个服务器:
python src/okta_workflows.py
python src/okta_systemlog.py
python src/okta_audit_and_rollback.py- 配置MCP客户端。 在支持MCP的客户端(例如,Claude Desktop、自定义代理)中,添加指向三个服务器中每一个的服务器配置。有关详细信息,请参阅客户的MCP文档。
- 检查审计日志和示例。 审查
examples/audit-log-sample.jsonl和examples/example_conversation.md了解预期的审计跟踪格式和现实的使用场景。
- 使用analyze_identity_state进行测试。 从
analyze_identity_state()用于验证日志检索和语义规范化的工具。然后继续执行以下操作suspend_user()一旦您确认审计跟踪正常工作。
______________________________________________________________________
许可证: MIT(见许可证文件)。
免责声明: 这是用于评估和架构规划的参考实现。它没有生产硬化。在生产环境中使用之前,请进行彻底的安全审查,实施额外的错误处理,并确保符合组织的治理和审计策略。
