CISA M365 MCP Serveur - MCP Server sécurisé par ALMC Security 2025

CISA M365 MCP Serveur

Voir sur GitHub

Serveur MCP CISA M365

smithery badge Serveur MCP (Model Context Protocol) mettant en œuvre les contrôles de sécurité de la directive opérationnelle contraignante 25-01 de la CISA pour Microsoft 365 (Azure AD/Entra ID).

Table des matières

Vue d'ensemble

Ce serveur MCP fournit des outils pour configurer et gérer les paramètres de sécurité de Microsoft 365 conformément aux exigences du BOD 25-01. Il s'intègre à l'API Microsoft Graph pour appliquer les contrôles de sécurité, surveiller la conformité et fournir des rapports détaillés.

Caractéristiques principales

  • Contrôles d'authentification existants
  • Contrôles d'accès basés sur les risques
  • Gestion de l'authentification multi-facteurs
  • Contrôles de l'enregistrement des applications et du consentement
  • Gestion de la politique des mots de passe
  • Gestion des rôles privilégiés
  • Application des comptes en nuage
  • Intégration du système PAM
  • Rapports de conformité complets
  • Authentification par jeton
  • Validation des arguments en toute sécurité
  • Gestion détaillée des erreurs et journalisation

Contrôles de sécurité

MS.AAD.1.1v1

Date d'échéance : 20/06/2025

Blocage de l'authentification héritée :

  • Désactive les protocoles d'authentification existants
  • Réduit la surface d'attaque
  • Améliore la posture de sécurité

Détails de la mise en œuvre :

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

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

Date d'échéance : 20/06/2025

Bloquer les utilisateurs et les connexions à haut risque :

  • Bloque les utilisateurs détectés comme présentant un risque élevé
  • Bloque les ouvertures de session détectées comme présentant un risque élevé
  • Exploite les renseignements sur les menaces de Microsoft

Détails de la mise en œuvre :

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

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

Date d'échéance : 20/06/2025

Configuration de l'AMF :

  • Mise en œuvre d'un MFA résistant à l'hameçonnage
  • Configure des méthodes alternatives de MFA
  • Affiche le contexte de connexion dans Microsoft Authenticator

Détails de l'implémentation :

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

Date d'échéance : 20/06/2025

Contrôle des applications :

  • Limite l'enregistrement des applications aux administrateurs
  • Limite le consentement à l'utilisation de l'application aux administrateurs
  • Configure le flux de travail du consentement de l'administrateur
  • Bloque le consentement du propriétaire du groupe

Détails de l'implémentation :

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

MS.AAD.6.1v1

Date d'échéance : 20/06/2025

Politique de mot de passe :

  • Désactive l'expiration des mots de passe
  • Suit les meilleures pratiques modernes en matière de sécurité

Détails de l'implémentation :

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

MS.AAD.7.1v1 à MS.AAD.7.8v1

Date d'échéance : 20/06/2025

Gestion des rôles privilégiés :

  • Limite le nombre d'administrateurs globaux
  • Mise en œuvre de rôles granulaires
  • Nécessite des comptes "cloud-only
  • Application de l'utilisation du système PAM
  • Configure les flux d'approbation
  • Mise en place d'alertes

Détails de l'implémentation :

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

Architecture

Composants

  1. Classe de serveur

    • Gère la mise en œuvre du protocole MCP
    • Gestion de l'enregistrement et de l'exécution des outils
    • Traitement des erreurs et journalisation
  2. Authentification

    • Authentification par jeton avec Microsoft Graph API
    • Rafraîchissement automatique des jetons
    • Gestion sécurisée des informations d'identification
  3. Client graphique

    • Enveloppe de l'API Microsoft Graph
    • Gestion des requêtes/réponses à sécurité de type
    • Logique de relance et gestion des erreurs
  4. Outils

    • Contrôle de l'authentification
    • Gestion des accès basée sur les risques
    • Configuration de l'AMF
    • Contrôle des applications
    • Gestion de la politique des mots de passe
    • Gestion des rôles
    • Configuration des alertes
    • Rapport sur l'état de la politique

Flux de données

graph TD A [Client MCP] -->|Demande| B [Serveur MCP] B -->|Authentication| C [Gestionnaire de jetons] C -->| Jeton d'accès| D [Client Graph] D -->|Appels d'API| E [Microsoft Graph] E -->|Réponse| D D -->|Résultats| B B -->|Réponse| A

Conditions préalables

  • Node.js 18.x ou supérieur
  • Locataire Microsoft 365 avec accès administrateur
  • Application Azure AD avec les permissions requises
    • Policy.ReadWrite.All
    • RoleManagement.ReadWrite.All
    • User.Read.All
    • Application.ReadWrite.All

Installation de l'application

Installation via Smithery

Pour installer automatiquement le serveur CISA M365 MCP via Smithery:

npx -y @smithery/cli install cisa-m365

Vous pouvez également copier directement les paramètres et définitions MCP à partir du répertoire de protocoles de Smithery et ajouter le serveur MCP à votre installation Claude ou LLM qui prend en charge le protocole MCP.

  1. Clonez le dépôt :
git clone https://github.com/DynamicEndpoints/BOD-25-01-CSA-MCP.git cd cisa-m365
  1. Installez les dépendances :
npm install
  1. Construire le serveur :
npm run build

Configuration du serveur

  1. Créer l'application Azure AD :

    • Naviguer vers Azure Portal > Azure Active Directory
    • Enregistrer une nouvelle application
    • Ajouter les permissions API requises
    • Créer un secret client
  2. Configurer les variables d'environnement :

cp .env.example .env

Modifier le fichier .env :

TENANT_ID=votre-id-locataire CLIENT_ID=votre-id-client CLIENT_SECRET=votre-secret-client
  1. Configurez les paramètres 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" } } }

Utilisation

Outils disponibles

block_legacy_auth

Bloque les méthodes d'authentification traditionnelles.

{}

block_high_risk_users

Bloque les utilisateurs détectés comme présentant un risque élevé.

{}

enforce_phishing_resistant_mfa

Appliquer l'AMF résistante à l'hameçonnage pour tous les utilisateurs.

{}

configure_global_admins

Configure l'attribution des rôles d'administrateur global.

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

get_policy_status

Obtenir l'état actuel de toutes les politiques de sécurité.

{}

Exemple d'utilisation

// Bloquer l'authentification héritée const result = await client.callTool('block_legacy_auth', {}) ; // Obtenir l'état de la politique const status = await client.callTool('get_policy_status', {})

Référence de l'API

API des paramètres des politiques

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

Gestion des erreurs

Le serveur met en œuvre une gestion complète des erreurs :

  1. Erreurs d'authentification

    • Échecs d'acquisition de jetons
    • Problèmes de permission
    • Problèmes de configuration des locataires
  2. Erreurs d'API

    • Échecs des demandes d'API de graphes
    • Limitation du débit
    • Indisponibilité du service
  3. Erreurs de validation

    • Arguments non valides
    • Paramètres requis manquants
    • Inadéquation des types
  4. Erreurs d'exécution

    • Problèmes de réseau
    • Problèmes de délai d'attente
    • Contraintes de ressources

Exemple de réponse à une erreur :

{"error" : {"code" : "InvalidParams", "message" : "Invalid role assignment arguments", "details" : { "parameter" : "userIds", "constraint" : "Doit avoir entre 2 et 8 utilisateurs", "received" : "1 user" } } }

Test

  1. Exécutez les tests unitaires :
npm test
  1. Exécution des tests d'intégration :
npm run test:integration
  1. Exécuter les tests de conformité :
npm run test:compliance

Considérations sur la sécurité

  1. Authentification

    • Utiliser un stockage sécurisé des jetons
    • Mise en œuvre de la rotation des jetons
    • Surveiller les activités suspectes
  2. Accès à l'API

    • Suivre le principe du moindre privilège
    • Audits réguliers des autorisations
    • Contrôler l'utilisation de l'API
  3. Protection des données

    • Pas d'enregistrement de données sensibles
    • Stockage sécurisé de la configuration
    • Analyses de sécurité régulières
  4. Conformité

    • Contrôles de conformité réguliers
    • Vérification automatisée des politiques
    • Journalisation des audits

Contribuer

  1. Créer une branche dans le référentiel
  2. Créer une branche de fonctionnalités
  3. Effectuez vos modifications
  4. Exécuter des tests
  5. Soumettre une demande d'extraction

Lignes directrices :

  • Suivre le style du code existant
  • Ajouter des tests pour les nouvelles fonctionnalités
  • Mettre à jour la documentation
  • Garder les commits atomiques

Licence

MIT

Liés dans Service en nuage - MCP Servers sécurisés

ServeurRésuméActions
Serveur MCP de BinanceVoir
Mon serveur MCPCet exemple vous permet de déployer un serveur MCP distant qui ne nécessite pas d'authentification s...Voir
Serveur MCP distant sur CloudflareAucune documentation n'est disponible.Voir
Serveur MCP InfactoryUn serveur MCP (Model Context Protocol) pour interagir avec les API d'Infactory à l'aide de Claude e...Voir
Alpha VantageUn serveur Model Context Protocol (MCP) qui fournit un accès aux données financières API d'Alpha Van...Voir
Gemini OCRCe projet fournit un service OCR (Reconnaissance Optique de Caractères) simple mais puissant à trave...Voir