🔥 Maester
Maester를 사용하여 Microsoft 365 테넌트의 보안 구성을 모니터링하세요!
[!WARNING]
Maester 3.0이 이제 프리뷰 빌드가 되었습니다.
PowerShell Gallery에 있는 프리뷰(preview) 빌드는 현재 Maester 3.0입니다. 이 버전에는 호환성 깨짐 변경 사항(breaking changes)이 포함되어 있습니다. 가장 주목할 만한 점은 PowerShell 7.4 이상이 필수라는 것입니다 (Windows PowerShell 5.1은 더 이상 지원되지 않습니다). Pester 테스트를 포함한 사용자 지정 테스트는 계속 작동하며, Convert-MtTest가 이를 새로운 네이티브 형식으로 변환합니다.
만약 자동화 과정에서 프리뷰 빌드(-AllowPrerelease, 또는 GitHub Action에서 maester_version: preview)를 설치하고 3.0에 준비되지 않았다면, 릴리스(release) 빌드로 전환하세요: -AllowPrerelease를 제거하거나 -RequiredVersion 2.3.0으로 고정하고, 액션에서는 maester_version: latest를 사용하십시오.
Maester 3.0 발표와 2.x에서 업그레이드하기를 읽어보세요.
[!NOTE]
기여가 다시 열렸습니다
Maester 3.0 리라이트는 main 브랜치에 있습니다. 이제 검사는 네이티브 테스트(Test.<ID>.ps1 및 Test.<ID>.md)이며, 저장소는 새로운 폴더 레이아웃을 갖게 되었습니다. 풀 리퀘스트(pull request)를 열기 전에 테스트 작성하기와 기여 가이드를 읽어보세요. 만약 풀 리퀘스트가 3.0 이전에 열렸다면, main 브랜치에 대해 리베이스(rebase)하십시오. Convert-MtTest는 Pester 형식의 검사를 네이티브 테스트로 변환합니다.
Maester는 사용자의 Microsoft 365 환경의 보안 구성을 모니터링하고 유지 관리하도록 설계된 오픈 소스 PowerShell 기반 테스트 자동화 프레임워크입니다. Maester에 대해 더 자세히 알아보고 시작하려면 Maester.dev를 방문하세요.
PSGallery Preview Version
PSGallery Release Version PSGallery Downloads
build-validation
publish-module-preview
Codacy Badge
[!WARNING]
알려진 문제: 현재 시점에서는 ExchangeOnlineManagement 모듈의 v3.9.2 사용을 권장하지 않습니다. 많은 사용자가 v3.9.2로 연결할 때 오류를 경험하고 있지만, 이전 버전은 일반적으로 안정적입니다. 이는 Maester 자체의 문제가 아니라 ExchangeOnlineManagement 모듈의 문제입니다.
주요 기능 (Key Features)
- 자동화된 테스트 (Automated Testing): Maester는 사용자의 Microsoft 365 환경 보안을 보장하기 위한 포괄적인 자동화 테스트 세트를 제공합니다.
- 사용자 정의 가능 (Customizable): 자체 테스트, 테넌트별 구성 및 테스트 매개변수를 사용하여 Maester를 특정 요구 사항에 맞게 조정할 수 있습니다.
- 형식 지정 결과 (Formatted Results): 결과를 CSV, Excel, HTML, JSON 또는 Markdown 형식으로 내보낼 수 있습니다.
- 알림 (Notifications): 이메일, Teams 또는 Slack으로 결과 알림을 보낼 수 있습니다.
- CI/CD 워크플로우 (CI/CD Workflows): GitHub, Azure DevOps 또는 GitLab 파이프라인에서 Maester를 실행할 수 있습니다.
- 그리고 훨씬 더 많은 기능...
시작하기 (Getting Started)
설치 (Installation)
Maester는 Windows, Linux 또는 macOS 환경에서 PowerShell 7.4 이상이 필요합니다.
Install-Module -Name Maester -Scope CurrentUser
테스트는 모듈 내에 포함되어 있으므로 별도로 설치하거나 다운로드할 것이 없습니다.
Maester 실행하기 (Running Maester)
Connect-Maester
Invoke-Maester
자체 테스트를 실행하거나 maester-config.json을 사용하여 설정을 변경하려면, 해당 파일들을 폴더에 보관하고 -Path 매개변수를 통해 전달(또는 해당 폴더에서 실행)하십시오:
Invoke-Maester -Path ~/maester
더 자세한 내용은 maester.dev를 참조하십시오.
국가 클라우드 환경에서 Maester 실행하기 (Running Maester in a National Cloud Environment)
Connect-Maester에서 연결할 국가 클라우드 환경의 이름을 지정하기 위해 선택적 매개변수인 -Environment를 사용할 수 있습니다. 기본값으로는 글로벌 클라우드가 사용됩니다.
허용되는 값은 다음과 같습니다:
- Global (매개변수가 지정되지 않은 경우 기본값)
- China
- USGov
- USGovDOD
Connect-Maester -Environment USGov
Maester 테스트 최신 상태 유지하기
Maester 팀은 시간이 지남에 따라 새로운 테스트를 추가할 것입니다. 테스트는 모듈 내부에 포함되어 있으므로, 모듈을 업데이트하면 테스트도 함께 업데이트됩니다:
Update-Module Maester -Force
Maester 2.x에서 업그레이드하는 경우? Install-MaesterTests가 2.x 버전에서 작성한 테스트 사본은 더 이상 사용되지 않습니다. Update-MaesterTests -Path ./maester-tests를 사용하여 제거하십시오 (2.x 테스트 폴더의 경로를 사용하세요). 해당 폴더에 사용자 지정 테스트나 유지하고 싶은 maester-config.json 변경 사항이 없는 경우, 대신 삭제할 수 있습니다. 다른 모든 변경 사항은 2.x에서 업그레이드하기를 참조하십시오.
사용자 지정 테스트 작성하기
Maester 테스트는 두 개의 파일로 구성됩니다: Test.<ID>.ps1 (내부에 [MaesterTest(...)] 속성(attribute)을 가진 PowerShell 함수)와 설명 및 복구 단계를 포함하는 Test.<ID>.md입니다.
New-MtTest -Id CONTOSO.1001 -Title '게스트 초대 제한됨' -Service Graph # 사용자 지정/Test.CONTOSO.1001.*의 골격(scaffold) 생성
Get-MtTest -Path ./custom # 검증 (테넌트 필요 없음)
Invoke-MtTest -Path ./custom/Test.CONTOSO.1001.ps1 # 테스트 실행
Pester를 사용하여 2.x 버전으로 작성된 사용자 지정 테스트는 Pester 5.7.1 이상이 설치되어 있을 때 계속 실행되며, Convert-MtTest가 이를 변환합니다. 네이티브 테스트 작성하기를 참조하십시오.
GitHub 액션으로 사용하기
Maester는 또한 GitHub marketplace에 게시되며, 모든 GitHub workflow에서 직접 사용할 수 있습니다. GitHub를 위해 구축되었기 때문에 아티팩트 업로드 및 워크플로우 실행에 요약 작성과 같은 GitHub Actions의 기능과 통합됩니다.
더 자세한 내용은 docs 또는 action repository를 참조하십시오.
이전 액션에서 마이그레이션하기
GitHub Action은 새로운 repository로 이동되었습니다.
[!NOTE]
오래된 액션 maester365/maester를 사용하고 있다면, 새 액션인 maester365/maester-action으로 마이그레이션해야 합니다. 자세한 내용은 deprecation notice를 확인하십시오.
소스에서 빌드하기
Maester의 소스 코드는 powershell/ 및 tests/ 폴더에 있습니다. 로컬에서 배포 가능한 모듈을 생성하려면, repository 루트에서 빌드 스크립트를 실행하십시오:
./build/Build-LocalMaester.ps1
이 명령어는 모듈을 빌드하고 검증하며, 다른 Maester 모듈을 언로드하고, 로컬 빌드를 현재 PowerShell 세션으로 가져옵니다(import)합니다. Invoke-Maester를 실행하여 로컬 빌드의 내장 테스트를 실행하십시오.
소스 체크아웃 상태에서는 ./powershell/Maester.psd1을 직접 가져올 수도 있습니다. 이 방식은 ./tests의 네이티브 테스트와 커밋된 엔진 DLL을 로드하므로, src/Maester.Engine에서 엔진을 변경하지 않는 한 빌드나 .NET SDK가 필요 없습니다.
보고서(report)를 변경한 후에는 모듈을 빌드하고 가져오기 전에 보고서 템플릿을 빌드하고 임베드하기 위해 ./build/Build-LocalMaester.ps1 -BuildReport를 사용하십시오.
module/ 폴더는 빌드 아티팩트(build artifact)입니다. 이는 git에 의해 무시되며 소스 제어(source control)에 커밋되지 않습니다. 빌드된 모듈은 각 GitHub Release에 첨부되고 CI를 통해 PowerShell Gallery에 게시됩니다. 자세한 내용은 contributing guide를 참조하십시오.
기여 (Contributing)
기여는 환영합니다! 새로운 테스트를 추가하거나 기존 테스트를 개선하고 싶다면, contribution guide를 참조해 주십시오.