IAM角色推荐服务

一个帮助用户发现和分析在Google云平台上执行特定操作所需的最小权限IAM角色的服务。

  • by whhygee
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 yatharthagoenka/gcp-iam-recommender

使用说明

GCP IAM角色推荐器MCP服务器

MCP(模型上下文协议)服务器,帮助用户发现和分析在Google Cloud Platform上执行特定操作所需的最低权限IAM角色。

概述

此服务器提供:

  1. 交互式项目ID提示:向用户询问他们的GCP项目ID,并提供有用的指导
  2. 查询可授予的角色:分析GCP项目的所有可用IAM角色,并建议特定操作所需的最低权限
  3. 获取所有角色:检索并缓存所有GCP IAM角色以供分析

先决条件

  • 转到1.24或更高版本
  • 已安装并验证Google Cloud SDK(gcloud)
  • 正确的GCP项目访问和权限

安装

  1. 克隆或导航到此目录
  2. 安装依赖项:
    go mod tidy
    
  3. 构建服务器:
    make build
    

配置

服务器使用Google Cloud应用程序默认凭据。确保您已通过身份验证:

gcloud auth application-default login

可用提示

get_project_id

交互式地询问用户他们的GCP项目ID,并提供如何找到它的有用指导。

参数:

  • action (可选):用户想要执行的操作(提供上下文)

例子:

{
  "name": "get_project_id",
  "arguments": {
    "action": "add new secret value to secret manager"
  }
}

提示将引导用户使用以下方式查找他们的项目ID:

  • gcloud config get-value project
  • 谷歌云控制台
  • gcloud projects list

可用工具

1. query_grantable_roles

查询指定GCP项目的所有可授予IAM角色,并根据您要执行的操作提供智能建议。

参数:

  • project_id (必填):用于查询角色的GCP项目ID
  • action_description (必填):描述您想做什么(例如,“部署云功能”、“读取存储桶”)

例子:

{
  "name": "query_grantable_roles",
  "parameters": {
    "project_id": "my-gcp-project",
    "action_description": "deploy cloud functions and read from storage buckets"
  }
}

该工具将:

  • 列出项目的所有可授予角色
  • 使用关键字匹配分析您的动作描述
  • 推荐最合适的最低权限角色
  • 提供所有可用角色的综合表

2. fetch_all_roles

从Google Cloud获取所有IAM角色并将其缓存在本地以进行更快的分析。

参数:

  • force_refresh (可选):设置为“true”以强制刷新缓存,即使缓存存在

例子:

{
  "name": "fetch_all_roles",
  "parameters": {
    "force_refresh": "false"
  }
}

此工具将:

  • 从Google Cloud获取所有可用的IAM角色
  • 在本地缓存它们以提高性能
  • 提供已提取角色的摘要

3. get_instructions

获取AI代理选择正确IAM角色的说明。此工具提供了选择最低权限角色的指南。

工作流示例

角色发现工作流

  1. 了解您需要什么:

    # Use the MCP tool through Cursor or direct API call
    query_grantable_roles(
      project_id="my-project", 
      action_description="deploy cloud functions"
    )
    
  2. 获取建议: 该工具分析您的行为并推荐以下角色:

    • roles/cloudfunctions.developer
    • roles/storage.objectViewer (如果功能需要存储访问)
    • roles/logging.logWriter (用于功能日志)
  3. 使用推荐的角色: 然后,您可以使用这些角色建议来:

    • 在您的基础架构中以代码形式配置IAM策略
    • 向管理员请求适当的权限
    • 设置具有最低权限的服务帐户

智能角色分析

服务器包括智能关键字分析,以推荐适当的角色:

按服务划分的GCP IAM角色:

  • 存储/GCS: storage.objectViewer, storage.objectCreator, storage.objectAdmin
  • 计算/VM: compute.viewer, compute.instanceAdmin, compute.admin
  • GKE/Kubernetes: container.viewer, container.clusterViewer, container.clusterAdmin
  • 云功能: cloudfunctions.viewer, cloudfunctions.developer, cloudfunctions.admin
  • 云运行: run.viewer, run.developer, run.admin
  • 云SQL: cloudsql.viewer, cloudsql.client, cloudsql.admin
  • 发布/订阅: pubsub.viewer, pubsub.subscriber, pubsub.publisher, pubsub.admin
  • 国际机械师协会: iam.roleViewer, iam.securityReviewer, iam.roleAdmin
  • 秘密: secretmanager.viewer, secretmanager.secretAccessor, secretmanager.admin

建立和运行

# Build the server
make build

# Run the server locally
make run

# Install globally to PATH as 'gcp-iam-server'
make install

# Uninstall from PATH
make uninstall

# Clean build artifacts
make clean

运行后 make install,二进制文件将作为可用 gcp-iam-server 从系统中的任何地方。

项目结构

.
├── bin/                 # Compiled binaries
├── cmd/
│   ├── main.go         # Main application entry point
│   └── tools/          # MCP tool implementations
│       ├── query_grantable_roles.go
│       └── fetch_roles.go
├── Makefile            # Build commands
├── README.md           # This file
└── go.mod              # Go module definition

错误处理

服务器为常见问题提供明确的错误消息:

  • 项目ID无效或不存在
  • 身份验证失败
  • 网络连接问题
  • 缺少缓存的角色数据

安全考虑

  • 服务器遵循最小特权原则
  • 角色建议优先考虑最低限度的必要权限
  • 所有分析都是使用缓存的角色数据在本地执行的
  • 服务器在提出建议之前验证项目访问权限

与Cursor集成

此MCP服务器旨在与Cursor IDE无缝协作:

  1. 服务器使用MCP协议进行自然语言交互
  2. 通过表情符号和标记提供丰富的格式化输出
  3. 包括全面的错误处理和用户指导
  4. 支持交互式查询和程序化使用

光标MCP服务器配置

要将此GCP IAM服务器与Cursor一起使用,请将以下配置添加到Cursor设置中:

  1. 打开光标设置首选 Cursor → Settings → Features → MCP Servers
  2. 添加配置 (选择以下方法之一):

选项A:使用环境变量(推荐)

{
  "mcpServers": {
    "gcp-iam": {
      "name": "GCP IAM Recommender",
      "command": "${MCP_SERVERS_PATH}/iam/bin/server"
    }
  }
}

在shell中设置环境变量:

export MCP_SERVERS_PATH="/path/to/your/mcp-servers"

选项B:使用主目录中的相对路径

{
  "mcpServers": {
    "gcp-iam": {
      "name": "GCP IAM Recommender",
      "command": "~/path/to/gcp-iam-recommender/bin/server"
    }
  }
}

选项C:全局安装并使用二进制名称

{
  "mcpServers": {
    "gcp-iam": {
      "name": "GCP IAM Recommender",
      "command": "gcp-iam-server"
    }
  }
}

对于选项C,全局安装服务器:

make install  # This should install the binary to your PATH

重要提示:

  • 选择最适合您设置的选项
  • 确保服务器二进制文件是使用 make build 添加此配置之前
  • 服务器将自动缓存IAM角色以提高性能
  • 使用Google Cloud进行身份验证 gcloud auth application-default login
  1. 重新启动MCP 使更改生效

  2. 游标中的用法:配置后,您可以自然地与服务器交互:

    • “从数据存储中删除记录需要什么IAM角色?”
    • “查找部署云功能的角色”
    • “获取从存储桶读取的最低权限角色”

服务器将根据您的操作描述提供智能建议,并帮助您了解GCP任务所需的确切权限。

故障排除

常见问题

  1. 身份验证错误:

    # Re-authenticate with Google Cloud
    gcloud auth application-default login
    
  2. 项目访问被拒绝:

    • 确保您拥有查看项目IAM角色所需的权限
    • 验证项目ID是否正确且处于活动状态
  3. 缺少角色缓存:

    • 使用 fetch_all_roles 填充角色缓存的工具
    • 确保您有互联网连接可以从Google Cloud获取