Token导航 LogoToken导航TokenDH.com
dawshund MCP logo
运维云端stdio官方级别未说明来源级核验

dawshund MCP

MCP Server

dAWShund Server是一个用于枚举AWS IAM数据、评估有效权限并获取高级摘要的工具,支持通过HTTP或MCP协议进行操作。

工具数

3

提示词数

0

GitHub Stars

0

资源数

0
安全工具PythonClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

samvas-codes

提供方

samvas-codes

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 server.py

详细介绍

dAMCP WShund服务器

这个包裹包裹着 dAWShund项目 在两个不同的服务器中 因此,您可以枚举AWS IAM数据,评估有效权限和 获得高层次的总结,而不必记住一些 单独的脚本。上游项目将自己描述为一种 “对淘气权限进行约束”并提供了三个主要内容 组件:

  • sAWSage –列举IAM主体和资源策略,以及

将它们合并到一个JSON文档中。支持的资源 包括IAM组、角色和用户以及基于资源的子集 AWS备份、EFS、KMS、Lambda、S3、SNS和SQS等策略。这 合并文件(sawsage.json)生产于 policies/ 在运行脚本后。

  • Gerakina –将整合的策略输入AWS

simulate-principal-policy API并生成一个新的JSON文件, effective_permissions.json列出允许的动作, 对每个委托人明确否认或隐含否认。这 步骤可能需要一些时间,因为它为每个 主体、作用和资源的独特组合。

  • dAWShund –将有效权限导入Neo4j

数据库,并构建主体和资源图。它 生成 permissions4j.jsondawshund.json 适用于 分别在Neo4j和BloodHound中浏览。使用Neo4j 功能是可选的;这里包含的HTTP服务器提供 取而代之的是轻量级摘要。

需求

dAWShund依赖于Python、AWS CLI和少数Python 包装。如果你想使用Neo4j可视化,那么 还需要运行Neo4j实例。您至少需要:

  • Python 3.x
  • 具有调用IAM API权限的AWS帐户(用于枚举)

和那个 simulate-principal-policy API(用于评估)。你 应使用配置您的AWS凭据 aws configure --profile .

  • AWS CLI已安装并可在您的路径上使用。
  • 可选: 如果你打算使用Neo4j服务器 dawshund.py

直接使用脚本(HTTP服务器在没有Neo4j的情况下总结结果)。

setup.sh 此目录中的脚本将安装Python 依赖关系(使用 pip)并克隆上游dAWShund存储库。 如果你更喜欢手动管理依赖关系,你可以看到 setup.sh 对于确切的命令。

安装

  1. 安装AWS CLI并为帐户配置命名配置文件

您希望进行评估。例如:

   # install the AWS CLI via your package manager or from https://aws.amazon.com/cli/
   aws configure --profile myprofile
  1. 克隆此存储库(或复制 mcp_dawshund_server 文件夹)

并运行安装脚本:

   cd mcp_dawshund_server
   ./setup.sh

该脚本安装Python依赖项(boto3, neo4j, flask, flask_cors)并将dAWShund代码克隆到本地 子目录。如果你想使用Python虚拟环境 可以在运行前创建并激活一个 setup.sh.

  1. 启动服务器:
   python3 server.py

默认情况下,HTTP服务监听所有接口上的端口8000。 您可以通过设置来更改端口 PORT 环境变量 在启动服务器之前,例如:

   PORT=5000 python3 server.py

如果您打算使用MCP实现而不是HTTP API, 您可以使用以下命令运行它:

   python3 iam_mcp_server.py

MCP服务器未绑定到TCP端口;它通过以下方式进行通信 标准输入/输出,通常由客户端启动,例如 Claude桌面版。看 使用MCP服务器 详见下文。

使用HTTP服务器

基于Flask的服务器(server.py)通过HTTP公开三个端点。 所有请求和响应都使用JSON。以下示例使用 curl 但任何HTTP客户端都可以工作。

1–枚举IAM策略(/collect)

通过以下方式触发IAM主体和资源策略的枚举 sAWSage。提供您的AWS CLI配置文件名称,并可选择提供以下数组 区域。如果没有提供区域,sAWSage将枚举所有已知的区域 支持服务的地区。

curl -X POST http://localhost:8000/collect \
     -H 'Content-Type: application/json' \
     -d '{"profile": "myprofile", "regions": ["us-west-2", "us-east-1"]}'

响应是一个由AWS ARN键入的大型JSON文档 包括元数据(友好名称、附加策略)和原始数据 从内联和托管策略中提取的语句。同一个文件 保存到 dAWShund/policies/sawsage.json 供以后使用。

2–评估有效权限(/evaluate)

使用AWS模拟附加到每个主体的权限 simulate-principal-policy API此端点只需要您的 配置文件名称:

curl -X POST http://localhost:8000/evaluate \
     -H 'Content-Type: application/json' \
     -d '{"profile": "myprofile"}'

响应包含以下内容 effective_permissions.json –由ARN校长键入的词典。 在每个条目中 Permissions 键包含名为的列表 allowed, explicitDenyimplicitDeny 列出(动作, 资源)元组。

3–总结评估结果(/analyze)

检索评估的简明摘要。此端点读取 effective_permissions.json 并计算允许多少动作, 明确否认和隐含否认每个委托人。不 请求正文是必需的:

curl -X POST http://localhost:8000/analyze -H 'Content-Type: application/json' -d '{}'

响应如下(示例):

{
  "arn:aws:iam::123456789012:user/Alice": {
    "allowed": 42,
    "explicitDeny": 0,
    "implicitDeny": 5
  },
  "arn:aws:iam::123456789012:role/AdminRole": {
    "allowed": 128,
    "explicitDeny": 0,
    "implicitDeny": 0
  }
}

此摘要可以帮助您快速识别特权主体或 那些出人意料地含蓄否认的人。为了进行更深入的分析,您可以 连接到Neo4j数据库并运行原始数据库 dawshund.py 脚本,它将构建一个图形并创建 permissions4j.jsondawshund.json.

使用MCP服务器

除了Flask HTTP API之外,此软件包还包括 模型 上下文协议(MCP)服务器 实施与 fastmcp 图书馆。MCP服务器通过JSON-RPC进行通信,旨在 由Claude Desktop等人工智能助手或自定义FastMCP客户端使用 MCP服务器公开的操作与 HTTP API,但使用结构化工具定义而不是HTTP 端点。

1–安装FastMCP

提供的 setup.sh 脚本安装 fastmcp 为您打包。 如果您手动管理依赖关系,请使用以下命令安装:

pip install fastmcp

FastMCP需要Python 3.10或更高版本。

2–手动运行服务器

要在本地测试MCP服务器,请运行:

python3 iam_mcp_server.py

这将以STDIO模式启动服务器。它会屏蔽并监听 标准输入上的JSON-RPC请求。您还可以运行服务器 如果您计划将其作为远程连接器公开,请使用HTTP:

fastmcp run iam_mcp_server.py:mcp --transport http --port 8000

3–可用工具

MCP服务器公开了三个工具。每个工具返回JSON结构化 内容,并附有简要总结:

工具名称描述输入参数
collect_iam使用sAWSage枚举IAM主体和资源策略profile (字符串,必填), regions (字符串数组,可选)
evaluate_iam使用Gerakina模拟有效权限profile (字符串,必填)
analyze_iam允许汇总,每个主体明确和隐含拒绝

收集评估 工具返回一条短信 各自JSON输出文件的路径(完整文档可以 数百千字节)。这 分析 工具读取有效 权限文件,并返回由主体ARN键入的字典 允许和拒绝的操作计数。

4–与Claude Desktop集成

Claude Desktop可以启动在 claude_desktop_config.json 文件。在macOS上,此文件位于 ~/Library/Application Support/Claude/claude_desktop_config.json .在下面添加新条目 mcpServers 按键:

{
  "mcpServers": {
    "iam-analysis": {
      "command": "/usr/bin/python3",
      "args": [
        "/ABSOLUTE/PATH/TO/iam_mcp_server.py"
      ]
    }
  }
}

将路径替换为系统上的正确位置。之后 保存文件 重新启动克劳德桌面;读取配置 只有在启动时。当您的自然语言提示 需要IAM枚举或权限模拟,Claude将调用 合适的工具。例如,你可以说:

“枚举我的默认配置文件的IAM策略,并总结有多少个 允许或拒绝操作。”

克劳德将发布 collect_iam 呼叫,然后 evaluate_iam 和 最终 analyze_iam。将返回每个工具的结果 回到克劳德身边,并融入了助理的最后回应中。

或者,您可以将MCP服务器公开为 远程连接器 通过HTTP运行它并在Claude的网站上注册URL 界面。例如,通过以下方式启动服务器

fastmcp run iam_mcp_server.py:mcp --transport http --port 8000

然后添加 http://localhost:8000/mcp 作为中的自定义连接器 克劳德的设置。

注释和注意事项

  • 所需权限: 枚举步骤使用IAM API,例如

作为 list_users, list_rolesget_user_policyThe 评估步骤调用 simulate-principal-policy,反过来 根据资源评估行动。确保您的AWS配置文件 use有足够的权限执行这些操作。

  • 运行时间和成本: 模拟策略可能很耗时

因为它对每个主体/操作/资源进行一次API调用 组合。对于具有许多主体和政策的账户 可能需要几分钟。没有额外的AWS费用 模拟API本身,但枚举查询受 API正常速率限制。

  • Neo4j集成: 默认情况下 dawshund.py 连接到a

Neo4j实例正在运行 localhost:7687 使用用户名 neo4j 和密码 dawshund.如果你想填充自己的Neo4j 数据库,编辑 NEO4J_URINEO4J_AUTH 值在 dAWShund/dawshund.py 在运行它之前。HTTP服务器 这里提供的根本不使用Neo4j;相反,它总结了 JSON输出。

  • 可扩展性: 上游项目目前列举

有限服务集的资源策略。如果你 需要额外服务的保险,考虑提供 服务枚举器到上游存储库。

许可证

此软件包捆绑了dAWShund脚本,这些脚本在 BSD 3条款许可证。请参阅上游存储库 细节。此文件夹中的包装器代码(服务器和安装程序 脚本)被发布到公共领域。无论你如何使用它们 就像。

目录标签

目录标签

安全工具PythonClaudeAWSIAM本地部署权限分析云安全自动化

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

3

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP