샘플 보안 부팅 E2E 자동화 가이드
적용 대상
원래 게시 날짜: 2026년 3월 16일
KB ID: 5084567
이 문서에서는
개요
이 가이드에서는 그룹 정책 및 점진적 롤아웃 웨이브를 사용하는 Windows 보안 부팅 DB 인증서 업데이트에 대한 자동화된 배포 시스템에 대해 설명합니다.
보안 부팅 인증서 롤아웃 자동화는 Windows 보안 부팅 DB 인증서 업데이트를 제어된 졸업 방식으로 도메인 가입 컴퓨터에 배포하는 PowerShell 기반 시스템입니다.
주요 기능
|
기능 |
설명 |
|
졸업 롤아웃 |
1 > 2 > 4 > 8 ... 버킷당 디바이스 |
|
자동 차단 |
연결할 수 없는 디바이스가 있는 버킷은 제외됩니다. |
|
자동화된 GPO 배포 |
단일 오케스트레이터 스크립트는 모든 것을 처리합니다. |
|
예약된 작업 실행 |
대화형 프롬프트가 필요하지 않음 |
|
실시간 모니터링 |
진행률 표시줄이 있는 상태 뷰어 |
인증서 업데이트 설정 참조
섹션 내용
AvailableUpdatesPolicy 그룹 정책
|
레지스트리 위치 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecureBoot |
|
이름 |
AvailableUpdatesPolicy |
|
값 |
0x5944(DWORD) |
GPO/ADMX 제어 키는 다음과 같습니다.
-
다시 부팅을 통해 유지
-
그룹 정책/MDM으로 설정됨
-
다시 시도 루프를 발생시키지 않습니다(ClearRolloutFlags를 통해 지워진 경우)
-
정책 기반 배포에 대한 올바른 키입니다.
WinCSFlags - Windows 구성 시스템 플래그
도메인 관리자는 Windows OS 업데이트와 함께 릴리스된 WinCS(Windows 구성 시스템) 를 사용하여 도메인에 가입된 Windows 클라이언트 및 서버에 보안 부팅 업데이트를 배포할 수 있습니다. 컴퓨터에 로컬로 보안 부팅 구성을 쿼리하고 적용하는 CLI(명령줄 인터페이스) 유틸리티 로 구성됩니다.
|
기능 이름 |
WinCS 키 |
설명 |
|
Feature_AllKeysAndBootMgrByWinCS |
F33E0C8E002 |
이 키를 사용하도록 설정하면 디바이스에 다음 Microsoft 제공 보안 부팅 새 인증서를 설치할 수 있습니다.
|
Architecture
1단계: 엔터프라이즈 수준에서 검색 및 상태 모니터링
섹션 내용
1단계에 필요한 스크립트
샘플 보안 부팅 인벤토리 데이터 수집 스크립트
|
샘플 스크립트 이름 |
용도 |
실행 중 |
|
디바이스 상태 데이터 수집 |
각 엔드포인트(GPO를 통해) |
|
|
보고서 및 대시보드 생성 |
워크스테이션 관리 |
|
|
데이터 수집을 위한 GPO 만들기 자동화 |
도메인 컨트롤러 |
로컬 테스트
GPO를 통해 배포하기 전에 단일 컴퓨터에서 컬렉션 스크립트를 테스트하여 기능을 확인합니다.
-
로컬로 컬렉션 스크립트 실행 관리자 권한 PowerShell 프롬프트를 열고 다음을 실행합니다.
& .\Detect-SecureBootCertUpdateStatus.ps1 -OutputPath "C:\Temp\SecureBootTest"
-
JSON 출력 확인
# View the collected data Get-Content "C:\Temp\SecureBootTest\*_latest.json" | ConvertFrom-Json | Format-List
확인할 키 필드 • SecureBootEnabled – True 또는 False 여야 합니다. • OverallStatus – Complete, ReadyForUpdate, NeedsData 또는 Error • BucketHash – 신뢰도 데이터 일치 를 위한 디바이스 버킷 • SecureBootTaskEnabled - 보안 부팅 업데이트 작업의 상태 표시합니다.
-
집계 스크립트 테스트
# Generate reports from collected data & .\Aggregate-SecureBootCertStatus.ps1" ' -InputPath "C:\Temp\SecureBootTest" ' -OutputPath "C:\Temp\SecureBootReports" # HTML dashboard 엽니다.
Start-Process "C:\Temp\SecureBootReports\SecureBoot_Dashboard_*.html"
GPO 배포
도메인 컨트롤러에서 제공하는 자동화 스크립트를 사용합니다.
# 대화형 OU 섹션에 대한 도메인 관리 도메인 컨트롤러에서 실행 - 권장 # "Contoso.com", "Contoso"를 도메인 이름으로 바꿉니다. # FILESERVER을 파일 서버 이름으로 바꿉 수 있습니다. 스크립트는 GPO를 배포할 OU 목록을 표시합니다. .\Deploy-GPO-SecureBootCollection.ps1 ' -DomainName "contoso.com" ' -AutoDetectOU ' -CollectionSharePath "\\FILESERVER\SecureBootLogs$" ' -ScriptSourcePath ".\Detect-SecureBootCertUpdateStatus.ps1" ' -Schedule "Daily" ' -ScheduleTime "14:00" ' -RandomDelayHours 4
이 스크립트는 다음을 수행합니다.
-
지정된 이름을 사용하여 새 GPO를 만듭니다.
-
고가용성을 위해 SYSVOL에 컬렉션 스크립트 복사
-
컴퓨터 시작 스크립트 구성
-
GPO를 대상 OU에 연결
-
필요에 따라 정기 컬렉션에 대해 예약된 작업을 만듭니다.
다음 표에서는 함대 크기에 따라 지연이 얼마나 오래 걸리는지에 대한 지침을 제공합니다.
|
플릿 크기 |
지연 범위 |
|
1-10K 디바이스 |
4시간 |
|
10K-50K 디바이스 |
8시간 |
|
50K+ 디바이스 |
12-24시간 |
GPO 설정 요약
|
설정 |
위치 |
값 |
|
시작 스크립트 |
컴퓨터 구성 → 스크립트 |
Detect-SecureBootCertUpdateStatus.ps1 |
|
스크립트 매개 변수 |
(동일) |
-OutputPath "\\server\share$" |
|
실행 정책 |
PowerShell을 → 컴퓨터 구성 → 관리 템플릿 |
로컬 및 원격 서명 허용 |
|
예약된 작업 |
컴퓨터 구성 → 기본 설정 → 예약된 작업 |
일별/주간 컬렉션 |
확인
-
테스트 Machin e에서 GPO 업데이트 강제 적용
## On a test workstation gpupdate /force # 클라이언트 컴퓨터를 시작 스크립트로 다시 부팅하거나 다음 일정에 따라 트리거됩니다. Restart-Computer -Force
-
데이터 수집 확인
# 데이터가 수집되었는지 확인합니다(파일 서버 또는 컴퓨터에서). Get-ChildItem "\\fileserver\SecureBootData$" | Sort-Object LastWriteTime -Descending | Select-Object -First 10 # JSON 콘텐츠 확인 Get-Content "\\fileserver\SecureBootData$\TESTPC_latest.json" | ConvertFrom-Json
-
GPO 애플리케이션 확인
# GPO가 컴퓨터에 적용되는지 확인 gpresult /r /scope:computer | Select-String "SecureBoot" s 또한 스크립트는 중복성을 위해 로컬 복사본을 저장합니다. Get-ChildItem "C:\ProgramData\SecureBootCollection\"
2단계: 보안 부팅 인증서 업데이트 오케스트레이션 스크립트
중요: 각 엔드포인트에서 원격 서버 공유에 대한 데이터 수집을 포함하여 1단계가 완료되었는지 확인합니다.
섹션 내용
2단계에 필요한 스크립트
샘플 보안 부팅 인벤토리 데이터 수집 스크립트
|
샘플 스크립트 이름 |
용도 |
실행 |
|
디바이스 상태 데이터 수집 |
각 엔드포인트(GPO를 통해) |
|
|
보고서 및 대시보드 생성 |
워크스테이션 관리 |
|
|
데이터 수집을 위한 GPO 만들기 자동화 |
도메인 컨트롤러 |
|
|
인증서 설치를 위한 자동화된 GPO 배포를 사용하는 완전 자동화된 연속 오케스트레이션 |
워크스테이션 관리 |
|
|
자동화된 롤아웃을 위해 Orchestrator 스크립트를 예약된 작업으로 배포합니다. |
도메인 컨트롤러 |
|
|
워크스테이션에서 보안 부팅 인증서 롤아웃 상태 보기 |
관리 워크스테이션 |
|
|
보안 부팅 업데이트 작업을 사용하도록 설정 |
작업이 사용하지 않도록 설정된 끝점(사용하지 않도록 설정된 경우 작업을 사용하도록 설정하려면 한 번만 실행) |
Start-SecureBootRolloutOrchestrator.ps1
-
목적: 자동화된 GPO 배포를 사용하여 완전히 자동화된 연속 오케스트레이션.
-
하는 일
-
디바이스 상태 대한 Aggregate-SecureBootData.ps1 호출
-
점진적 이중을 사용하여 롤아웃 웨이브 생성
-
다음 방법 중 하나를 사용하여 인증서 배포를 위한 GPO를 만듭니다.
-
보안 부팅 그룹 정책 AvailableUpdatesPolicy = 0x5944(기본값)
-
WinCS 메서드(매개 변수 –UseWinCS)
-
-
대상 지정을 위한 AD 보안 그룹을 만듭니다.
-
보안 그룹에 컴퓨터 계정 추가
-
GPO 보안 필터링 구성
-
GPO를 대상 OU에 연결
-
차단된 버킷(연결할 수 없는 디바이스)에 대한 모니터
-
디바이스가 복구되면 자동 차단 해제
-
-
사용법
# Interactive (testing) .\Start-SecureBootRolloutOrchestrator.ps1 ' -AggregationInputPath "\\fileserver\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -PollIntervalMinutes 30
# Interactive (testing), leveraging WinCS method .\Start-SecureBootRolloutOrchestrator.ps1 ' -AggregationInputPath "\\fileserver\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -PollIntervalMinutes 1440 -UseWinCS
-
관리 명령
# List blocked buckets .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
# Unblock specific bucket .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -UnblockBucket "Dell|Latitude5520|BIOS1.2"
# Unblock all .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -UnblockAll
-
관리
매개 변수
기본값
설명
AggregationInputPath
필수 항목
엔드포인트 JSON 파일에 대한 UNC 경로
ReportBasePath
필수 항목
보고서 및 상태의 로컬 경로
TargetOU
도메인 루트
GPO를 연결하는 OU
WavePrefix
SecureBoot-Rollout
GPO/그룹 명명 접두사
MaxWaitHours
72
디바이스 연결성을 확인하기 몇 시간 전
PollIntervalMinutes
1440
상태 확인 사이의 분
DryRun
X
변경 없이 수행되는 내용 표시
Deploy-OrchestratorTask.ps1
-
목적: 오케스트레이터를 Windows 예약 작업으로 배포합니다.
-
혜택
-
PowerShell 보안 프롬프트 없음(ExecutionPolicy 바이패스)
-
백그라운드에서 연속 실행
-
사용자 상호 작용이 필요하지 않음
-
재부팅에서 살아남습니다.
-
-
사용법
-
도메인 서비스 계정으로 배포(권장)
-
AvailableUpdates 그룹 정책 사용(기본 메서드)
.\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -ServiceAccount "DOMAIN\svc_secureboot"
-
WinCS 메서드 사용
.\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -ServiceAccount "DOMAIN\svc_secureboot" -UseWinCS
-
-
SYSTEM 계정으로 배포
-
AvailableUpdates 그룹 정책 사용(기본 메서드)
.\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports"
-
WinCS method.\Deploy-OrchestratorTask.ps1 사용
-AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" -UseWinCS
-
서비스 계정 요구 사항
-
도메인 관리(New-GPO, New-ADGroup, Add-ADGroupMember의 경우)
-
JSON 파일 공유에 대한 읽기 액세스 권한
-
ReportBasePath에 대한 쓰기 액세스 권한
-
-
-
Get-SecureBootRolloutStatus.ps1
-
목적: 모든 워크스테이션에서 출시 진행률을 봅니다.
-
표시되는 내용
-
예약된 작업 상태(실행 중/준비/중지됨)
-
현재 웨이브 번호
-
대상 디바이스 및 업데이트됨
-
시각적 개체 진행률 표시줄
-
차단된 버킷 요약
-
최신 HTML dashboard 연결
-
-
사용법
# Quick status check .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports"
# Continuous monitoring (refreshes every 30 seconds) .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -Watch 30
# View blocked buckets .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -ShowBlocked
# View wave history .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -ShowWaves
# View recent log .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -ShowLog
# Open dashboard in browser .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -OpenDashboard
-
샘플 출력
============================================================== 보안 부팅 롤아웃 상태 2026-02-17 19:30:00 ======================================================
Scheduled Task: Running
ROLLOUT PROGRESS ---------------------------------------- 상태: InProgress 현재 웨이브: 5 총 대상: 1250 총 업데이트 날짜: 847
Progress: [█████████████████████░░░░░░░░░░░░░░░░░░░] 67.8%
BLOCKED BUCKETS: 2 buckets need attention 자세한 내용은 -ShowBlocked를 사용하여 실행
LATEST DASHBOARD C:\SecureBootReports\Aggregation_20260217_193000\SecureBoot_Dashboard.html __________________________________________________________________________________________
E2E 배포 단계(빠른 참조 가이드)
섹션 내용
1단계: 검색 인프라
-
1단계: 컬렉션 공유 만들기
# On file server $sharePath = "D:\SecureBootData" New-Item -ItemType 디렉터리 -경로 $sharePath -Force New-SmbShare -Name "SecureBootData$" -Path $sharePath -FullAccess "Domain Admins" -ChangeAccess "Domain Computers"
# Set NTFS permissions $acl = Get-Acl $sharePath $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Domain Computers","Modify","Allow") $acl. AddAccessRule($rule) Set-Acl $sharePath $acl
-
2단계: 검색 GPO 배포
.\Deploy-GPO-SecureBootCollection.ps1 ` -DomainName "contoso.com" ' -OUPath "OU=Workstations,DC=contoso,DC=com" ' -CollectionSharePath "\\server\SecureBootData$"
-
3단계: 엔드포인트가 보고되기를 기다립니다(24-48시간)
# 컬렉션 진행률 확인 (Get-ChildItem "\\server\SecureBootData$" -Filter "*.json"). 횟수
2단계: 오케스트레이션된 롤아웃
-
4단계: 필수 구성 요소 확인
-
배포된 검색 GPO(2단계)
-
JSON을 보고하는 50개 이상의 엔드포인트
-
도메인 관리 권한이 있는 서비스 계정
-
PowerShell 5.1 이상이 있는 관리 서버
-
-
5단계: 오케스트레이터를 예약된 작업으로 배포
.\Deploy-OrchestratorTask.ps1 ` -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -ServiceAccount "DOMAIN\svc_secureboot"
-
6단계: 진행률 모니터링
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports"
-
7단계: 대시보드 보기
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -OpenDashboard
-
8단계: 차단된 버킷 관리
# List blocked .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
# Investigate and unblock .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -UnblockBucket "Manufacturer|모델|BIOS"
-
9단계: 완료 확인
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" # 상태는 "완료됨"을 표시해야 합니다.
상태 Files
오케스트레이터는 ReportBasePath\RolloutState\:
|
File |
설명 |
|
RolloutState.json |
웨이브 기록, 대상 디바이스, 상태 |
|
BlockedBuckets.json |
조사가 필요한 버킷 |
|
DeviceHistory.json |
호스트 이름별 디바이스 추적 |
|
Orchestrator_YYYYMMDD.log |
일일 활동 로그 |
문제 해결
섹션 내용
오케스트레이터가 진행되지 않음
-
예약된 작업 확인
Get-ScheduledTask -TaskName "SecureBoot-Rollout-Orchestrator"
-
로그 확인
Get-Content "C:\SecureBootReports\RolloutState\Orchestrator_*.log" -Tail 50
-
JSON 데이터 새로 고침 확인
(Get-ChildItem "\\server\SecureBootData$" -Filter "*.json" | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-1) }).Count
차단된 버킷
-
목록이 차단되었습니다.
.\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
-
디바이스 연결 가능성을 조사합니다.
-
펌웨어 문제를 확인합니다.
-
조사 후 차단을 해제합니다.
GPO가 적용되지 않음
-
GPO가 있는지 확인합니다.
Get-GPO -Name "SecureBoot-Rollout-Wave*"
-
보안 필터링을 확인합니다.
Get-GPPermission -Name "GPO-Name" -All
-
컴퓨터가 보안 그룹에 있는지 확인합니다.
-
대상에 GPO를 적용합니다.
gpupdate /force