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,
});建築
コンポーネント
サーバークラス
MCPプロトコルの実装を処理
ツールの登録と実行を管理する
エラー処理とログ記録を実装する
認証
Microsoft Graph API を使用したトークンベースの認証
自動トークン更新
安全な資格情報管理
グラフクライアント
Microsoft Graph API のラッパー
型安全なリクエスト/レスポンス処理
再試行ロジックとエラー処理
ツール
レガシー認証制御
リスクベースのアクセス管理
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 サーバーを追加することもできます。
リポジトリをクローンします。
git clone https://github.com/DynamicEndpoints/BOD-25-01-CSA-MCP.git
cd cisa-m365依存関係をインストールします:
npm installサーバーを構築します。
npm run build構成
Azure AD アプリケーションを作成します。
Azureポータル > Azure Active Directoryに移動します
新しいアプリケーションを登録する
必要なAPI権限を追加する
クライアントシークレットを作成する
環境変数を設定します。
cp .env.example .env.envファイルを編集します:
TENANT_ID=your-tenant-id
CLIENT_ID=your-client-id
CLIENT_SECRET=your-client-secretMCP 設定を構成します。
{
"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;
};
}エラー処理
サーバーは包括的なエラー処理を実装します。
認証エラー
トークン取得の失敗
権限の問題
テナント構成の問題
APIエラー
グラフAPIリクエストの失敗
レート制限
サービス利用不可
検証エラー
無効な引数
必要なパラメータが不足しています
型の不一致
ランタイムエラー
ネットワークの問題
タイムアウトの問題
リソースの制約
エラー応答の例:
{
"error": {
"code": "InvalidParams",
"message": "Invalid role assignment arguments",
"details": {
"parameter": "userIds",
"constraint": "Must have between 2 and 8 users",
"received": "1 user"
}
}
}テスト
ユニットテストを実行します。
npm test統合テストを実行します。
npm run test:integrationコンプライアンス テストを実行します。
npm run test:complianceセキュリティに関する考慮事項
認証
安全なトークンストレージを使用する
トークンローテーションを実装する
不審な活動を監視する
APIアクセス
最小権限の原則に従う
定期的な権限監査
APIの使用状況を監視する
データ保護
機密データのログ記録なし
安全な構成の保存
定期的なセキュリティスキャン
コンプライアンス
定期的なコンプライアンスチェック
自動ポリシー検証
監査ログ
貢献
リポジトリをフォークする
機能ブランチを作成する
変更を加える
テストを実行する
プルリクエストを送信する
ガイドライン:
既存のコードスタイルに従う
新機能のテストを追加する
ドキュメントの更新
コミットをアトミックに保つ
ライセンス
マサチューセッツ工科大学