Servidor CISA M365 MCP - MCP Server Seguro por ALMC Security 2025

Servidor CISA M365 MCP

Ver en GitHub

Servidor MCP CISA M365

smithery badge Un servidor de Protocolo de Contexto de Modelo (MCP) que implementa los controles de seguridad de la Directiva Operativa Vinculante 25-01 de CISA para Microsoft 365 (Azure AD/Entra ID).

Contenido

Descripción general

Este servidor MCP proporciona herramientas para configurar y administrar los ajustes de seguridad de Microsoft 365 de acuerdo con los requisitos de BOD 25-01. Se integra con Microsoft Graph API para aplicar controles de seguridad, supervisar el cumplimiento y proporcionar informes detallados.

Características principales

  • Controles de autenticación heredados
  • Controles de acceso basados en riesgos
  • Gestión de autenticación multifactor
  • Controles de registro y consentimiento de aplicaciones
  • Gestión de políticas de contraseñas
  • Gestión de funciones privilegiadas
  • Aplicación de cuentas sólo en la nube
  • Integración de sistemas PAM
  • Informes exhaustivos sobre el cumplimiento de normativas
  • Autenticación basada en tokens
  • Validación de argumentos segura
  • Gestión de errores y registro detallados

Controles de seguridad

MS.AAD.1.1v1

Fecha de vencimiento: 20/06/2025

Bloquea la autenticación heredada:

  • Desactiva los protocolos de autenticación heredados
  • Reduce la superficie de ataque
  • Mejora la postura de seguridad

Detalles de implementación:

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

MS.AAD.2.1v1 y MS.AAD.2.3v1

Fecha de vencimiento: 20/06/2025

Bloquear usuarios e inicios de sesión de alto riesgo:

  • Bloquea usuarios detectados como de alto riesgo
  • Bloquea los inicios de sesión detectados como de alto riesgo
  • Aprovecha la información sobre amenazas de Microsoft

Detalles de implementación:

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

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

Fecha de vencimiento: 20/06/2025

Configuración MFA:

  • Aplica una AMF resistente a la suplantación de identidad
  • Configura métodos MFA alternativos
  • Muestra el contexto de inicio de sesión en Microsoft Authenticator

Detalles de implementación:

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

Fecha de vencimiento: 20/06/2025

Controles de aplicaciones:

  • Restringe el registro de aplicaciones a los administradores
  • Restringe el consentimiento de la aplicación a los administradores
  • Configuración del flujo de trabajo de consentimiento del administrador
  • Bloquea el consentimiento del propietario del grupo

Detalles de implementación:

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

MS.AAD.6.1v1

Fecha de vencimiento: 20/06/2025

Política de contraseñas:

  • Desactiva la caducidad de contraseñas
  • Sigue las mejores prácticas de seguridad modernas

Detalles de implementación:

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

MS.AAD.7.1v1 a MS.AAD.7.8v1

Fecha de vencimiento: 20/06/2025

Gestión de roles privilegiados:

  • Limita el número de administradores globales
  • Impone funciones granulares
  • Requiere cuentas sólo en la nube
  • Impone el uso del sistema PAM
  • Configura flujos de trabajo de aprobación
  • Establece alertas

Detalles de la implementación:

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

Arquitectura

Componentes

  1. Clase Servidor

    • Gestiona la aplicación del protocolo MCP
    • Gestiona el registro y la ejecución de herramientas
    • Gestión de errores y registro
  2. Autenticación

    • Autenticación basada en token con Microsoft Graph API
    • Actualización automática de tokens
    • Gestión segura de credenciales
  3. Cliente Graph

    • Envoltura alrededor de la API de Microsoft Graph
    • Gestión de solicitud/respuesta segura
    • Lógica de reintento y gestión de errores
  4. Herramientas

    • Control de autenticación heredado
    • Gestión de acceso basada en riesgos
    • Configuración de MFA
    • Control de aplicaciones
    • Gestión de políticas de contraseñas
    • Gestión de roles
    • Configuración de alertas
    • Informes sobre el estado de las políticas

Flujo de datos

graph TD A[Cliente MCP] -->|Solicitud| B[Servidor MCP] B -->|Autenticación| C[Token Manager] C -->|Token de acceso| D[Cliente Graph] D -->|Llamadas API| E[Microsoft Graph] E -->|Respuesta| D D -->|Resultados| B B -->|Respuesta| A

Requisitos previos

  • Node.js 18.x o superior
  • Tenant Microsoft 365 con acceso de administrador
  • Aplicación Azure AD con los permisos necesarios
    • Policy.ReadWrite.All
    • RoleManagement.ReadWrite.All
    • User.Read.All
    • Application.ReadWrite.All

Instalación

Instalación a través de Smithery

Para instalar CISA M365 MCP Server automáticamente a través de Smithery:

npx -y @smithery/cli install cisa-m365

También puede copiar directamente las configuraciones y definiciones MCP del Directorio de Protocolos de Smithery y agregar el servidor MCP a su configuración Claude o LLM que admita el protocolo MCP.

  1. Clone el repositorio:
git clone https://github.com/DynamicEndpoints/BOD-25-01-CSA-MCP.git cd cisa-m365
  1. Instale las dependencias:
npm install
  1. Construye el servidor:
npm run build

Configuración

  1. Crear aplicación Azure AD:

    • Navega a Azure Portal > Azure Active Directory
    • Registrar una nueva aplicación
    • Añada los permisos de API necesarios
    • Crear un secreto de cliente
  2. Configure las variables de entorno:

cp .env.ejemplo .env

Edite el archivo .env:

TENANT_ID=id-arrendatario CLIENT_ID=id-cliente CLIENT_SECRET=secreto-cliente
  1. Configure los ajustes de MCP:
{ "mcpServers": { "cisa-m365": { "command": "node", "args": ["path/to/cisa-m365/build/index.js"], "env": { "TENANT_ID": "your-tenant-id", "CLIENT_ID": "tu-id-cliente", "CLIENT_SECRET": "your-client-secret" } } }

Uso

Herramientas disponibles

block_legacy_auth

Bloquea los métodos de autenticación heredados.

{}

block_high_risk_users

Bloquear usuarios detectados como de alto riesgo.

{}

enforce_phishing_resistant_mfa

Aplicar MFA resistente a phishing para todos los usuarios.

{}

configure_global_admins

Configurar la asignación de funciones de administrador global.

{"userIds": ["user1-id", "user2-id"] }

get_policy_status

Obtener el estado actual de todas las políticas de seguridad.

{}

Ejemplo de uso

// Bloquear autenticación heredada const result = await client.callTool('block_legacy_auth', {}); // Obtener estado de políticas const status = await client.callTool('get_policy_status', {})

Referencia API

API de configuración de políticas

interfaz 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; }; }

Gestión de errores

El servidor implementa una completa gestión de errores:

  1. Errores de autenticación

    • Fallos en la adquisición de tokens
    • Problemas de permisos
    • Problemas de configuración de inquilinos
  2. Errores de API

    • Fallos en la solicitud de Graph API
    • Limitación de tarifas
    • Indisponibilidad del servicio
  3. Errores de validación

    • Argumentos no válidos
    • Faltan parámetros obligatorios
    • Error de tipo
  4. Errores de ejecución

    • Problemas de red
    • Problemas de tiempo de espera
    • Limitaciones de recursos

Ejemplo de respuesta de error:

{ "error": { "code": "InvalidParams", "message": "Invalid role assignment arguments", "details": { "parameter": "userIds", "constraint": "Debe tener entre 2 y 8 usuarios", "received": "1 user" } }

Pruebas

  1. Ejecutar pruebas unitarias:
npm test
  1. Ejecutar pruebas de integración:
npm run test:integration
  1. Ejecutar pruebas de conformidad:
npm run test:compliance

Consideraciones de seguridad

  1. Autenticación

    • Utilice un almacenamiento seguro de tokens
    • Rotación de tokens
    • Supervisión de actividades sospechosas
  2. Acceso a la API

    • Seguir el principio del mínimo privilegio
    • Auditorías periódicas de permisos
    • Supervisión del uso de la API
  3. Protección de datos

    • Sin registro de datos sensibles
    • Almacenamiento seguro de la configuración
    • Análisis de seguridad periódicos
  4. Conformidad

    • Comprobaciones periódicas del cumplimiento
    • Verificación automatizada de políticas
    • Registro de auditorías

Contribución

  1. Bifurcar el repositorio
  2. Crear una rama de características
  3. Realice sus cambios
  4. Ejecutar pruebas
  5. Envíe un pull request

Directrices:

  • Siga el estilo de código existente
  • Añadir pruebas para las nuevas funciones
  • Actualizar la documentación
  • Mantener los commits atómicos

Licencia

MIT

Relacionados en Servicio en la nube - MCP Servers Seguros

ServidorResumenAcciones
LinodeVer
Servidor MCP Multi-Cloud VMCompatibilidad con AWS EC2, Azure Virtual Machines y GCP Compute Engine.Ver
Servidor MCP AxiomServidor MCP para acceder a los registros de Axiom a través de Claude.Ver
Servidor MCP remoto de CloudflareEste ejemplo le permite implementar un servidor MCP remoto que no requiere autenticación en Cloudfla...Ver
BrexUn servidor de Protocolo de Contexto de Modelos (MCP) para integrarse con la API Brex, que permite a...Ver
Precios de AWS EC2Ver