Skip to main content
Glama
DynamicEndpoints

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

Servidor CISA M365 MCP

insignia de herrería 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

Related MCP server: SharePoint MCP Server

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

graph TD
    A[MCP Client] -->|Request| B[MCP Server]
    B -->|Authentication| C[Token Manager]
    C -->|Access Token| D[Graph Client]
    D -->|API Calls| E[Microsoft Graph]
    E -->|Response| D
    D -->|Results| B
    B -->|Response| A

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)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DynamicEndpoints/Automated-BOD-25-01-CISA-Microsoft-Policies-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server