项目简介
OCI Policy Analysis工具是一款功能强大的桌面应用程序,旨在帮助Oracle Cloud Infrastructure (OCI) 管理员分析和可视化其租户内的IAM策略、动态组和用户权限。它能够解析策略语句、分析动态组的使用情况、评估用户权限,并提供历史比较和AI洞察功能。
该仓库包含一个嵌入式的MCP服务器,使得其他MCP客户端(如Claude、VSCode)能够连接并利用其托管的OCI策略数据进行智能问答和自动化操作。
主要功能点
- 策略数据托管: 提供对OCI IAM策略语句、跨租户策略和“定义”别名的访问,并支持根据多种条件进行过滤。
- 身份数据管理: 托管并允许查询OCI身份域中的用户、用户组和动态组信息。
- 工具执行: 允许LLM客户端调用工具来执行复杂的查询和分析,例如:
- 根据精确或模糊的用户/组/动态组信息过滤策略语句。
- 获取特定用户所属的所有组。
- 获取特定组中的所有用户。
- 搜索匹配特定条件的动态组。
- 列出所有跨租户策略别名,并根据别名过滤相关策略。
- JSON-RPC通信: 通过标准JSON-RPC协议与MCP客户端通信,响应数据请求和工具调用。
安装步骤
- 克隆仓库:
git clone https://github.com/agregory999/oci-policy-analysis cd oci-policy-analysis - 安装Python依赖:
请确保您的Python版本为3.11或更高。pip install -r requirements.txt - 配置OCI凭据:
- OCI配置文件: 在'~/.oci/config' (Linux/macOS) 或 '%USERPROFILE%.oci\config' (Windows) 配置OCI API密钥。示例:
[DEFAULT] user=ocid1.user.oc1..<your-user-ocid> fingerprint=<your-api-key-fingerprint> key_file=<path-to-private-key.pem> tenancy=ocid1.tenancy.oc1..<your-tenancy-ocid> region=<your-region, e.g., us-ashburn-1> - 实例主体认证 (Instance Principal): 如果在OCI计算实例上运行,请确保实例具有适当的IAM策略来读取策略和身份信息。
- 会话令牌认证 (Session Token): 使用OCI CLI生成临时会话令牌:'oci session authenticate',并记录会话名称。
- OCI配置文件: 在'~/.oci/config' (Linux/macOS) 或 '%USERPROFILE%.oci\config' (Windows) 配置OCI API密钥。示例:
- 配置OCI权限: 确保用于认证的用户或实例主体拥有以下最小权限:
('generative-ai-family'权限仅在您需要使用AI洞察功能时才需要。)allow group <your_group> to {POLICY_READ, COMPARTMENT_INSPECT, DOMAIN_INSPECT, DYNAMIC_GROUP_INSPECT, GROUP_INSPECT, USER_INSPECT} in tenancy allow group <your_group> to use generative-ai-family in tenancy
服务器配置
MCP客户端需要MCP服务器的连接信息。以下是MCP客户端可以配置的MCP服务器启动命令示例:
{ "name": "OCI Policy Analysis MCP Server", "command": "python", "args": [ "src/logic/mcp_server.py", "--profile", "<your_oci_profile_name>", "--recursive", "--transport", "stdio" ], "description": "连接到OCI Policy Analysis应用程序的嵌入式MCP服务器,用于访问OCI IAM策略和身份数据。", "notes": "将 <your_oci_profile_name> 替换为您的OCI配置文件中使用的配置文件名称(例如:DEFAULT)。\n如果不需要递归加载所有隔间策略,可以移除 --recursive 参数。" }
参数注释:
- '--profile <profile_name>':指定OCI配置文件的名称(例如'DEFAULT')。如果使用实例主体或会话令牌,则可以省略此参数。
- '--instance-principal':使用OCI实例主体认证。与'--profile'互斥。
- '--session-token <session_name>':使用OCI会话令牌认证。与'--profile'和'--instance-principal'互斥。
- '--recursive':指示服务器递归加载所有隔间及其策略。如果只需加载根隔间的策略,可以移除此参数。
- '--use-cache <cache_date_string>':指定要加载的现有缓存数据(例如:'tenancyname_YYYY-MM-DD-HH-MM-SS-Z')。如果指定,服务器将从缓存加载而不是实时从OCI获取数据。
- '--transport stdio':使用标准输入/输出作为通信通道。这是LLM客户端(如Claude、VSCode)通常使用的默认方式。
- '--transport streamable-http --port <port> --host <host>':如果需要通过HTTP传输协议运行,可以指定端口和主机。
基本使用方法
- 启动应用程序(桌面模式,可选):
运行主UI应用程序,通过图形界面加载OCI租户数据("Load from Tenancy" 或 "Load from Cache")。这会初始化服务器所需的数据仓库。
python src/main.py - 启动MCP服务器(独立模式):
在命令行中直接启动MCP服务器。请根据上述“服务器配置”部分提供的JSON配置,构建相应的'command'和'args'来执行。
例如:
python src/logic/mcp_server.py --profile DEFAULT --recursive --transport stdio - 连接MCP客户端: 在您的MCP客户端(例如Claude、VSCode)中,配置上述JSON格式的MCP服务器信息。连接成功后,您将能够通过LLM客户端与该服务器进行交互,查询OCI策略、组、用户等数据,并调用相应的工具进行分析。 (示例:在Claude中,您可以提问“列出所有根隔间中的策略”,“找出用户'andrew'所属的所有组”,或“过滤所有涉及'instance-family'资源的策略”。)
信息
分类
商业系统