返回市场
身体-25-01- CSA-微控制器外设

身体-25-01- CSA-微控制器外设

作者:DynamicEndpoints3 星标更新:2025-03-21

项目介绍

技术文档摘要

CISA M365 MCP 服务器

smithery 徽章 这是一个实现 CISA 绑定操作指令 25-01 安全控制措施的 Model Context Protocol (MCP) 服务器,适用于 Microsoft 365(Azure AD/Entra ID)。

目录

概述

此 MCP 服务器提供了工具,用于根据 BOD 25-01 要求配置和管理 Microsoft 365 的安全设置。它与 Microsoft Graph API 集成,以执行安全控制、监控合规性并提供详细的报告。

主要功能

  • 旧版身份验证控制
  • 基于风险的访问控制
  • 多因素身份验证管理
  • 应用程序注册和同意控制
  • 密码策略管理
  • 特权角色管理
  • 仅限云账户强制执行
  • PAM 系统集成
  • 全面的合规性报告
  • 基于令牌的身份验证
  • 类型安全参数验证
  • 详细的错误处理和日志记录

安全控制

MS.AAD.1.1v1

截止日期:2025年6月20日

阻止旧版身份验证:

  • 禁用旧版身份验证协议
  • 减少攻击面
  • 提高安全性

实现细节:

await graphClient
  .api('/policies/authenticationMethodsPolicy')
  .patch({
    allowLegacyAuthentication: false,
    blockLegacyAuthenticationMethods: true,
  });

MS.AAD.2.1v1 & MS.AAD.2.3v1

截止日期:2025年6月20日

阻止高风险用户和登录:

  • 阻止检测到的高风险用户
  • 阻止检测到的高风险登录
  • 利用微软威胁情报

实现细节:

await graphClient
  .api('/policies/identitySecurityDefaultsEnforcementPolicy')
  .patch({
    blockHighRiskUsers: true,
    riskLevelForBlocking: 'high',
  });

MS.AAD.3.1v1, MS.AAD.3.2v1, MS.AAD.3.3v1

截止日期:2025年6月20日

多因素身份验证配置:

  • 强制执行防钓鱼的多因素身份验证
  • 配置替代多因素身份验证方法
  • 在 Microsoft Authenticator 中显示登录上下文

实现细节:

await graphClient
  .api('/policies/authenticationMethodsPolicy')
  .patch({
    policies: {
      fido2: {
        isEnabled: true,
        isSelfServiceRegistrationAllowed: true,
      },
      windowsHelloForBusiness: {
        isEnabled: true,
        isSelfServiceRegistrationAllowed: true,
      },
    },
  });

MS.AAD.5.1v1, MS.AAD.5.2v1, MS.AAD.5.3v1, MS.AAD.5.4v1

截止日期:2025年6月20日

应用程序控制:

  • 将应用程序注册限制给管理员
  • 将应用程序同意限制给管理员
  • 配置管理员同意工作流
  • 阻止组所有者同意

实现细节:

await graphClient
  .api('/policies/applicationRegistrationManagement')
  .patch({
    restrictAppRegistration: true,
    restrictNonAdminUsers: true,
  });

MS.AAD.6.1v1

截止日期:2205年6月20日

密码策略:

  • 禁用密码过期
  • 遵循现代安全最佳实践

实现细节:

await graphClient
  .api('/policies/passwordPolicy')
  .patch({
    passwordExpirationPolicy: {
      passwordExpirationDays: 0,
      neverExpire: true,
    },
  });

MS.AAD.7.1v1 至 MS.AAD.7.8v1

截止日期:2025年6月20日

特权角色管理:

  • 限制全局管理员数量
  • 强制执行细粒度角色
  • 要求仅限云账户
  • 强制执行 PAM 系统使用
  • 配置审批工作流
  • 设置警报

实现细节:

await graphClient
  .api('/policies/roleManagementPolicies')
  .patch({
    enforceGranularRoles: true,
    blockGlobalAdminForGeneralUse: true,
    requireApprovalForGlobalAdmin: true,
  });

架构

组件

  1. 服务器类

    • 处理 MCP 协议实现
    • 管理工具注册和执行
    • 实现错误处理和日志记录
  2. 认证

    • 使用 Microsoft Graph API 的基于令牌的身份验证
    • 自动刷新令牌
    • 安全凭证管理
  3. Graph 客户端

    • 包装 Microsoft Graph API
    • 类型安全请求/响应处理
    • 重试逻辑和错误处理
  4. 工具

    • 旧版身份验证控制
    • 基于风险的访问管理
    • 多因素身份验证配置
    • 应用程序控制
    • 密码策略管理
    • 角色管理
    • 警报配置
    • 政策状态报告

数据流

graph TD
    A[MCP 客户端] -->|请求| B[MCP 服务器]
    B -->|认证| C[令牌管理器]
    C -->|访问令牌| D[Graph 客户端]
    D -->|API 调用| E[Microsoft Graph]
    E -->|响应| D
    D -->|结果| B
    B -->|响应| A

前提条件

  • Node.js 18.x 或更高版本
  • 具有管理员访问权限的 Microsoft 365 租户
  • 具有所需权限的 Azure AD 应用程序:
    • Policy.ReadWrite.All
    • RoleManagement.ReadWrite.All
    • User.Read.All
    • Application.ReadWrite.All

安装

通过 Smithery 安装

要通过 Smithery 自动安装 CISA M365 MCP 服务器:

npx -y @smithery/cli install cisa-m365

您也可以直接从 Smithery 协议目录 复制 MCP 设置和定义,并将 MCP 服务器添加到支持 MCP 协议的 Claude 或 LLM 设置中。

  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 门户 > 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
  1. 配置 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

对所有用户强制执行防钓鱼的多因素身份验证。

{}

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 参考

政策设置 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. API 错误

    • Graph API 请求失败
    • 速率限制
    • 服务不可用
  3. 验证错误

    • 无效参数
    • 缺少必需参数
    • 类型不匹配
  4. 运行时错误

    • 网络问题
    • 超时问题
    • 资源约束

示例错误响应:

{
  "error": {
    "code": "InvalidParams",
    "message": "无效的角色分配参数",
    "details": {
      "parameter": "userIds",
      "constraint": "必须在2到8个用户之间",
      "received": "1个用户"
    }
  }
}

测试

  1. 运行单元测试:
npm test
  1. 运行集成测试:
npm run test:integration
  1. 运行合规性测试:
npm run test:compliance

安全考虑

  1. 认证

    • 使用安全的令牌存储
    • 实施令牌轮换
    • 监控可疑活动
  2. API 访问

    • 遵循最小权限原则
    • 定期权限审核
    • 监控 API 使用情况
  3. 数据保护

    • 不记录敏感数据
    • 安全配置存储
    • 定期安全扫描
  4. 合规性

    • 定期合规检查
    • 自动化政策验证
    • 审计日志

贡献

  1. 分叉仓库
  2. 创建功能分支
  3. 修改代码
  4. 运行测试
  5. 提交拉取请求

指南:

  • 遵循现有的代码风格
  • 为新功能添加测试
  • 更新文档
  • 保持提交原子化

许可证

MIT