Skip to main content
Glama
DynamicEndpoints

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

CISA M365 MCP サーバー

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

目次

Related MCP server: SharePoint MCP Server

概要

この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設定

    • アプリケーション制御

    • パスワードポリシー管理

    • 役割管理

    • アラート設定

    • ポリシーステータスレポート

データフロー

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

前提条件

  • 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. プルリクエストを送信する

ガイドライン:

  • 既存のコードスタイルに従う

  • 新機能のテストを追加する

  • ドキュメントの更新

  • コミットをアトミックに保つ

ライセンス

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

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