项目简介

OCI Policy Analysis工具是一款功能强大的桌面应用程序,旨在帮助Oracle Cloud Infrastructure (OCI) 管理员分析和可视化其租户内的IAM策略、动态组和用户权限。它能够解析策略语句、分析动态组的使用情况、评估用户权限,并提供历史比较和AI洞察功能。

该仓库包含一个嵌入式的MCP服务器,使得其他MCP客户端(如Claude、VSCode)能够连接并利用其托管的OCI策略数据进行智能问答和自动化操作。

主要功能点

  • 策略数据托管: 提供对OCI IAM策略语句、跨租户策略和“定义”别名的访问,并支持根据多种条件进行过滤。
  • 身份数据管理: 托管并允许查询OCI身份域中的用户、用户组和动态组信息。
  • 工具执行: 允许LLM客户端调用工具来执行复杂的查询和分析,例如:
    • 根据精确或模糊的用户/组/动态组信息过滤策略语句。
    • 获取特定用户所属的所有组。
    • 获取特定组中的所有用户。
    • 搜索匹配特定条件的动态组。
    • 列出所有跨租户策略别名,并根据别名过滤相关策略。
  • JSON-RPC通信: 通过标准JSON-RPC协议与MCP客户端通信,响应数据请求和工具调用。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/agregory999/oci-policy-analysis
    cd oci-policy-analysis
  2. 安装Python依赖:
    pip install -r requirements.txt
    请确保您的Python版本为3.11或更高。
  3. 配置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',并记录会话名称。
  4. 配置OCI权限: 确保用于认证的用户或实例主体拥有以下最小权限:
    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
    ('generative-ai-family'权限仅在您需要使用AI洞察功能时才需要。)

服务器配置

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传输协议运行,可以指定端口和主机。

基本使用方法

  1. 启动应用程序(桌面模式,可选): 运行主UI应用程序,通过图形界面加载OCI租户数据("Load from Tenancy" 或 "Load from Cache")。这会初始化服务器所需的数据仓库。
    python src/main.py
  2. 启动MCP服务器(独立模式): 在命令行中直接启动MCP服务器。请根据上述“服务器配置”部分提供的JSON配置,构建相应的'command'和'args'来执行。 例如:
    python src/logic/mcp_server.py --profile DEFAULT --recursive --transport stdio
  3. 连接MCP客户端: 在您的MCP客户端(例如Claude、VSCode)中,配置上述JSON格式的MCP服务器信息。连接成功后,您将能够通过LLM客户端与该服务器进行交互,查询OCI策略、组、用户等数据,并调用相应的工具进行分析。 (示例:在Claude中,您可以提问“列出所有根隔间中的策略”,“找出用户'andrew'所属的所有组”,或“过滤所有涉及'instance-family'资源的策略”。)

信息

分类

商业系统