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

CISA M365 MCP サーバー

Microsoft 365 (Azure AD/Entra ID) の CISA 拘束的運用指令 25-01 セキュリティ コントロールを実装するモデル コンテキスト プロトコル (MCP) サーバー。

目次

概要

この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日

リスクの高いユーザーとサインインをブロックします。

  • 高リスクと検出されたユーザーをブロックします
  • 高リスクとして検出されたサインインをブロックします
  • Microsoftの脅威インテリジェンスを活用

実装の詳細:

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日

MFA 構成:

  • フィッシング耐性のあるMFAを強制する
  • 代替のMFA方法を構成する
  • 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

締め切り日: 2025年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. グラフクライアント
    • Microsoft Graph API のラッパー
    • 型安全なリクエスト/レスポンス処理
    • 再試行ロジックとエラー処理
  4. ツール
    • レガシー認証制御
    • リスクベースのアクセス管理
    • MFA設定
    • アプリケーション制御
    • パスワードポリシー管理
    • 役割管理
    • アラート設定
    • ポリシーステータスレポート

データフロー

前提条件

  • Node.js 18.x 以上
  • 管理者アクセス権を持つ Microsoft 365 テナント
  • 必要な権限を持つ Azure AD アプリケーション:
    • ポリシー.読み取り/書き込み.すべて
    • ロール管理.読み取り書き込み.すべて
    • ユーザー.読み取り.すべて
    • アプリケーション.読み取り書き込み.すべて

インストール

Smithery経由でインストール

Smithery経由で CISA M365 MCP サーバーを自動的にインストールするには:

npx -y @smithery/cli install cisa-m365

また、 Smithery プロトコル ディレクトリから MCP 設定と定義を直接コピーし、MCP プロトコルをサポートする Claude または LLM セットアップに MCP サーバーを追加することもできます。

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

使用法

利用可能なツール

ブロックレガシー認証

従来の認証方法をブロックします。

{}

高リスクユーザーをブロックする

高リスクと検出されたユーザーをブロックします。

{}

フィッシング対策MFAの適用

すべてのユーザーに対してフィッシング耐性のある MFA を適用します。

{}

グローバル管理者の設定

グローバル管理者ロールの割り当てを構成します。

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

ポリシーステータスの取得

すべてのセキュリティ ポリシーの現在のステータスを取得します。

{}

使用例

// Block legacy authentication const result = await client.callTool('block_legacy_auth', {}); // Get policy status 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エラー
    • グラフAPIリクエストの失敗
    • レート制限
    • サービス利用不可
  3. 検証エラー
    • 無効な引数
    • 必要なパラメータが不足しています
    • 型の不一致
  4. ランタイムエラー
    • ネットワークの問題
    • タイムアウトの問題
    • リソースの制約

エラー応答の例:

{ "error": { "code": "InvalidParams", "message": "Invalid role assignment arguments", "details": { "parameter": "userIds", "constraint": "Must have between 2 and 8 users", "received": "1 user" } } }

テスト

  1. ユニットテストを実行します。
npm test
  1. 統合テストを実行します。
npm run test:integration
  1. コンプライアンス テストを実行します。
npm run test:compliance

セキュリティに関する考慮事項

  1. 認証
    • 安全なトークンストレージを使用する
    • トークンローテーションを実装する
    • 不審な活動を監視する
  2. APIアクセス
    • 最小権限の原則に従う
    • 定期的な権限監査
    • APIの使用状況を監視する
  3. データ保護
    • 機密データのログ記録なし
    • 安全な構成の保存
    • 定期的なセキュリティスキャン
  4. コンプライアンス
    • 定期的なコンプライアンスチェック
    • 自動ポリシー検証
    • 監査ログ

貢献

  1. リポジトリをフォークする
  2. 機能ブランチを作成する
  3. 変更を加える
  4. テストを実行する
  5. プルリクエストを送信する

ガイドライン:

  • 既存のコードスタイルに従う
  • 新機能のテストを追加する
  • ドキュメントの更新
  • コミットをアトミックに保つ

ライセンス

マサチューセッツ工科大学

ID: rml141i0fk