BOD-25-01-CSA-Microsoft-Policy-MCP

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Used for environment variable configuration to store tenant, client IDs, and secrets for authentication with Microsoft Graph API

  • Used for data flow diagrams to illustrate the architecture and component interactions of the MCP server

  • The runtime environment required to run the MCP server, with version 18.x or higher specifically listed as a prerequisite

Servidor CISA M365 MCP

Un servidor de Protocolo de contexto de modelo (MCP) que implementa los controles de seguridad de la Directiva operativa vinculante CISA 25-01 para Microsoft 365 (Azure AD/Entra ID).

Tabla de contenido

Descripción general

Este servidor MCP proporciona herramientas para configurar y administrar la seguridad de Microsoft 365 según los requisitos de BOD 25-01. Se integra con la API de Microsoft Graph para aplicar controles de seguridad, supervisar el cumplimiento normativo y generar 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 roles privilegiados
  • Cumplimiento de cuentas solo en la nube
  • Integración del sistema PAM
  • Informes completos de cumplimiento
  • Autenticación basada en tokens
  • Validación de argumentos con seguridad de tipos
  • Manejo y registro detallado de errores

Controles de seguridad

MS.AAD.1.1v1

Fecha de vencimiento: 20/06/2025

Bloquear 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 a los usuarios detectados como de alto riesgo
  • Bloquea los inicios de sesión detectados como de alto riesgo
  • Aprovecha la inteligencia de 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 de MFA:

  • Implementa MFA resistente al phishing
  • 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 la aplicación:

  • Restringe el registro de aplicaciones a los administradores
  • Restringe el consentimiento de la aplicación a los administradores
  • Configura el 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 expiración de la contraseña
  • 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
  • Aplica roles granulares
  • Requiere cuentas solo en la nube
  • Hace cumplir el uso del sistema PAM
  • Configura flujos de trabajo de aprobación
  • Configura alertas

Detalles de implementación:

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

Arquitectura

Componentes

  1. Clase de servidor
    • Maneja la implementación del protocolo MCP
    • Gestiona el registro y la ejecución de herramientas.
    • Implementa el manejo y registro de errores
  2. Autenticación
    • Autenticación basada en tokens con Microsoft Graph API
    • Actualización automática del token
    • Gestión segura de credenciales
  3. Cliente gráfico
    • Envoltorio alrededor de la API de Microsoft Graph
    • Manejo de solicitudes y respuestas con seguridad de tipos
    • Lógica de reintento y manejo 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

Prerrequisitos

  • Node.js 18.x o superior
  • Inquilino de Microsoft 365 con acceso de administrador
  • Aplicación de Azure AD con los permisos necesarios:
    • Política.Lectura.Escritura.Todo
    • Gestión de roles.Lectura y escritura.Todo
    • Usuario.Leer.Todo
    • Aplicación.Lectura.Escritura.Todo

Instalación

Instalación mediante herrería

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

npx -y @smithery/cli install cisa-m365

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

  1. Clonar el repositorio:
git clone https://github.com/DynamicEndpoints/BOD-25-01-CSA-MCP.git cd cisa-m365
  1. Instalar dependencias:
npm install
  1. Construir el servidor:
npm run build

Configuración

  1. Crear una aplicación de Azure AD:
    • Vaya a Azure Portal > Azure Active Directory
    • Registrar una nueva aplicación
    • Agregar los permisos de API necesarios
    • Crear un secreto de cliente
  2. Configurar variables de entorno:
cp .env.example .env

Editar el archivo .env :

TENANT_ID=your-tenant-id CLIENT_ID=your-client-id CLIENT_SECRET=your-client-secret
  1. Configurar 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": "your-client-id", "CLIENT_SECRET": "your-client-secret" } } } }

Uso

Herramientas disponibles

bloqueo_de_autorización_heredada

Bloquear los métodos de autenticación heredados.

{}

bloquear usuarios de alto riesgo

Bloquear usuarios detectados como de alto riesgo.

{}

aplicar MFA resistente a la suplantación de identidad (phishing)

Imponer MFA resistente a phishing para todos los usuarios.

{}

configurar_administradores_globales

Configurar las asignaciones de roles de Administrador global.

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

obtener_estado_de_la_política

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

{}

Ejemplo de uso

// Block legacy authentication const result = await client.callTool('block_legacy_auth', {}); // Get policy status const status = await client.callTool('get_policy_status', {});

Referencia de API

API de configuración de políticas

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

Manejo de errores

El servidor implementa un manejo integral 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
    • Errores en las solicitudes de la API de gráficos
    • Limitación de velocidad
    • Indisponibilidad del servicio
  3. Errores de validación
    • Argumentos inválidos
    • Faltan parámetros requeridos
    • Desajustes de tipos
  4. Errores de tiempo 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": "Must have between 2 and 8 users", "received": "1 user" } } }

Pruebas

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

Consideraciones de seguridad

  1. Autenticación
    • Utilice almacenamiento seguro de tokens
    • Implementar la rotación de tokens
    • Monitorizar actividad sospechosa
  2. Acceso a la API
    • Siga el principio del mínimo privilegio
    • Auditorías periódicas de permisos
    • Supervisar el uso de la API
  3. Protección de datos
    • Sin registro de datos confidenciales
    • Almacenamiento seguro de configuración
    • Análisis de seguridad periódicos
  4. Cumplimiento
    • Controles de cumplimiento periódicos
    • Verificación automatizada de políticas
    • Registro de auditoría

Contribuyendo

  1. Bifurcar el repositorio
  2. Crear una rama de características
  3. Realiza tus cambios
  4. Ejecutar pruebas
  5. Enviar una solicitud de extracción

Pautas:

  • Seguir el estilo de código existente
  • Agregar pruebas para nuevas funciones
  • Actualizar la documentación
  • Mantener las confirmaciones atómicas

Licencia

Instituto Tecnológico de Massachusetts (MIT)

ID: rml141i0fk