Back to MCP directory
publicPublicdnsLocal runtime

cisa-m365

该项目是一个实现CISA BOD 25-01安全控制的M365 MCP服务器,通过微软Graph API管理Microsoft 365安全设置,提供包括阻止传统认证、基于风险访问控制、MFA管理、应用注册控制、密码策略管理等功能。

article

README

🚀 CISA BOD 25-01 CSA MCP 实施指南

本项目是一个基于红队的CISA BOD 25-01最小可行产品(MCP)实现。旨在助力组织满足网络安全审计、渗透测试和修复要求,以达到CISA BOD 25-01标准。

🚀 快速开始

本项目能帮助组织达成CISA BOD 25-01标准,以下为你介绍如何快速开启使用。

📦 安装指南

  1. 克隆仓库:
git clone https://github.com/DynamicEndpoints/BOD-25-01-CSA-MCP.git
cd cisa-m365
  1. 安装依赖项:
npm install
  1. 构建服务:
npm run build

📚 详细文档

配置指南

1. 创建Azure AD应用程序

  • 登录Azure Portal
  • 进入Azure Active Directory
  • 注册新应用
  • 添加所需API权限
  • 创建客户端密钥

2. 配置环境变量

cp .env.example .env

编辑.env文件:

TENANT_ID=your-tenant-id
CLIENT_ID=your-client-id
CLIENT_SECRET=your-client-secret

3. 配置MCP设置

{
  "mcpServers": {
    "cisa-m365": {
      "command": "node",
      "args": ["path/to/cisa-m365/build/index.js"],
      "env": {
        "TENANT_ID": "your-tenant-id",
        "CLIENT_ID": "your-client-id",
        "CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

使用指南

可用工具

  • block_legacy_auth:阻止使用传统身份验证方法。
{}
  • block_high_risk_users:阻止被识别为高风险的用户。
{}
  • enforce_phishing_resistant_mfa:强制所有用户使用防钓鱼MFA。
{}
  • configure_global_admins:配置全局管理员角色分配。
{
  "userIds": ["user1-id", "user2-id"]
}
  • get_policy_status:获取所有安全策略的当前状态。
{}

示例用法

// 阻止传统身份验证
const result = await client.callTool('block_legacy_auth', {});

// 获取策略状态
const status = await client.callTool('get_policy_status', {});

API参考

策略设置接口

interface PolicySettings {
  legacyAuthentication: {
    blocked: boolean;
    compliant: boolean;
  };
  highRiskUsers: {
    blocked: boolean;
    compliant: boolean;
  };
  mfa: {
    phishingResistant: boolean;
    alternativeEnabled: boolean;
    compliant: boolean;
  };
  applications: {
    registrationRestricted: boolean;
    consentRestricted: boolean;
    compliant: boolean;
  };
  passwords: {
    expirationDisabled: boolean;
    compliant: boolean;
  };
  roles: {
    globalAdminCount: number;
    granularRolesEnforced: boolean;
    pamEnforced: boolean;
    compliant: boolean;
  };
}

错误处理

该服务器实现全面错误处理:

  1. 认证错误

    • 令牌获取失败
    • 权限问题
    • 租户配置问题
  2. 授权错误

    • 缺乏必要的权限
    • 请求格式错误
    • 超出速率限制
  3. 策略执行错误

    • 策略解析失败
    • 执行失败
    • 无法应用修复
  4. 通用错误

    • 输入数据无效
    • 内部服务器错误
    • 不支持的操作

测试方法

  1. 单元测试:
npm test
  1. 集成测试:
npm run integration-test
  1. 性能测试:
npm run benchmark

安全注意事项

  • 所有敏感操作均需加密
  • 定期进行安全审计
  • 实施最小权限原则

贡献指南

欢迎贡献!请参考贡献者指南了解如何参与。

许可协议

本项目采用MIT License许可。

附录

环境变量参考

TENANT_ID=your-tenant-id
CLIENT_ID=your-client-id
CLIENT_SECRET=your-client-secret

工具使用示例

  1. 使用block_legacy_auth工具:
npx cisa-mcp block_legacy_auth --tenantId yourTenantId
  1. 使用enforce_phishing_resistant_mfa工具:
npx cisa-mcp enforce_phishing_resistant_mfa --tenantId yourTenantId
  1. 查看策略状态:
npx cisa-mcp get_policy_status --tenantId yourTenantId

常见问题解答

  1. 如何处理认证错误? 检查租户ID、客户端ID和客户端密钥是否正确配置。

  2. 为何无法连接到Azure AD? 确保网络连通性,并检查应用程序的API权限设置。

  3. 如何提高性能? 优化查询参数,实施分页和过滤功能。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client