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일

레거시 인증 차단:

  • 레거시 인증 프로토콜을 비활성화합니다.
  • 공격 표면을 줄입니다
  • 보안 태세를 개선합니다

구현 세부 정보:

지엑스피1

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 Protocol Directory 에서 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 Portal > 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. 풀 리퀘스트 제출

가이드라인:

  • 기존 코드 스타일을 따르세요
  • 새로운 기능에 대한 테스트 추가
  • 문서 업데이트
  • 커밋을 원자성으로 유지하세요

특허

MIT

ID: rml141i0fk