적용 대상
Windows 10, version 1607, all editions Win 10 Ent LTSB 2016 Win 10 IoT Ent LTSB 2016 Windows 10, version 1809, all editions Win 10 Ent LTSC 2019 Win 10 IoT Ent LTSC 2019 Windows 10 ESU Windows 10 Enterprise LTSC 2021 Windows 10 IoT Enterprise LTSC 2021 Windows 11 version 23H2, all editions Windows 11 version 24H2, all editions Windows 11 version 25H2, all editions Windows 11 version 26H1, all editions Windows Server 2016 Windows Server 2019 Windows Server 2022 Windows Server, version 23H2 Windows Server 2025

원래 게시 날짜: 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를 통해 지워진 경우)

  • 정책 기반 배포에 대한 올바른 키입니다.

참조: IT 관리형 업데이트가 있는 Windows 디바이스용 보안 부팅의 GPO(그룹 정책 개체) 방법

"인증서 업데이트 설정 참조"로 돌아가기 

WinCSFlags - Windows 구성 시스템 플래그

도메인 관리자는 Windows OS 업데이트와 함께 릴리스된 WinCS(Windows 구성 시스템) 를 사용하여 도메인에 가입된 Windows 클라이언트 및 서버에 보안 부팅 업데이트를 배포할 수 있습니다. 컴퓨터에 로컬로 보안 부팅 구성을 쿼리하고 적용하는 CLI(명령줄 인터페이스) 유틸리티 로 구성됩니다.

기능 이름

WinCS 키

설명

Feature_AllKeysAndBootMgrByWinCS

F33E0C8E002

이 키를 사용하도록 설정하면 디바이스에 다음 Microsoft 제공 보안 부팅 새 인증서를 설치할 수 있습니다.

  • Microsoft Corporation KEK 2K CA 2023

  • Windows UEFI CA 2023

  • Microsoft UEFI CA 2023

  • Microsoft Option UEFI ROM CA 2023

참조: 보안 부팅을 위한 WinCS(Windows 구성 시스템) API

"인증서 업데이트 설정 참조"로 돌아가기

맨 위로

Architecture

아키텍처 워크플로

맨 위로 

1단계: 엔터프라이즈 수준에서 검색 및 상태 모니터링

섹션 내용

1단계에 필요한 스크립트

샘플 보안 부팅 인벤토리 데이터 수집 스크립트

샘플 스크립트 이름

용도 

실행 중 

샘플 Detect-SecureBootCertUpdateStatus.ps1 스크립트 

디바이스 상태 데이터 수집 

각 엔드포인트(GPO를 통해) 

샘플 Aggregate-SecureBootData.ps1 스크립트 

보고서 및 대시보드 생성 

워크스테이션 관리 

샘플 Deploy-GPO-SecureBootCollection.ps1 스크립트

데이터 수집을 위한 GPO 만들기 자동화 

도메인 컨트롤러 

보안 부팅 인증서 상태 대시보드

"1단계: 엔터프라이즈 수준의 검색 및 상태 모니터링"으로 돌아가기

로컬 테스트

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"

"1단계: 엔터프라이즈 수준의 검색 및 상태 모니터링"으로 돌아가기 

네트워크 공유 설정

  • 네트워크 공유 만들기 파일 서버에서 컬렉션 데이터에 대한 전용 공유를 만듭니다.

    # Run on file server as Administrator  $SharePath = "D:\SecureBootCollection" $ShareName = "SecureBootData$" # 폴더 만들기 New-Item -ItemType 디렉터리 -경로 $SharePath -Force # 숨겨진 공유 만들기(찾아보기 목록에서 $ 접미사 숨기기) New-SmbShare -Name $ShareName -Path $SharePath '     -Description "Secure Boot Certificate Status Collection" '     -FullAccess "Domain Admins" '     -ChangeAccess "인증된 사용자"    

  • NTFS 권한 구성

    # Get current ACL  $Acl = Get-Acl $SharePath # 인증된 사용자가 파일을 작성할 수 있도록 허용 $WriteRule = New-Object System.Security.AccessControl.FileSystemAccessRule(     "인증된 사용자",     "CreateFiles,AppendData,WriteAttributes,WriteExtendedAttributes",     "ContainerInherit,ObjectInherit",     "None",     "허용" ) $Acl.AddAccessRule($WriteRule) # 도메인 관리자의 모든 권한 허용(집계용) $AdminRule = New-Object System.Security.AccessControl.FileSystemAccessRule(     "Domain Admins",     "FullControl",     "ContainerInherit,ObjectInherit",     "None",     "허용" ) $Acl.AddAccessRule($AdminRule) # 사용 권한 적용 Set-Acl -경로 $SharePath -AclObject $Acl       

  • 공유 액세스 확인

    # Test from a domain-joined workstation  Test-Path "\\fileserver\SecureBootData$" # 반환해야 합니다. True

"1단계: 엔터프라이즈 수준의 검색 및 상태 모니터링"으로 돌아가기 

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시간

"1단계: 엔터프라이즈 수준의 검색 및 상태 모니터링"으로 돌아가기 

GPO 설정 요약

설정 

위치 

 

시작 스크립트 

컴퓨터 구성 → 스크립트 

Detect-SecureBootCertUpdateStatus.ps1 

스크립트 매개 변수 

(동일) 

-OutputPath "\\server\share$" 

실행 정책 

PowerShell을 → 컴퓨터 구성 → 관리 템플릿 

로컬 및 원격 서명 허용 

예약된 작업 

컴퓨터 구성 → 기본 설정 → 예약된 작업 

일별/주간 컬렉션

"1단계: 엔터프라이즈 수준의 검색 및 상태 모니터링"으로 돌아가기 

확인

  • 테스트 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\" 

"1단계: 엔터프라이즈 수준의 검색 및 상태 모니터링"으로 돌아가기

맨 위로 

2단계: 보안 부팅 인증서 업데이트 오케스트레이션 스크립트

중요: 각 엔드포인트에서 원격 서버 공유에 대한 데이터 수집을 포함하여 1단계가 완료되었는지 확인합니다.

섹션 내용

2단계에 필요한 스크립트

샘플 보안 부팅 인벤토리 데이터 수집 스크립트

샘플 스크립트 이름

용도 

실행 

샘플 Detect-SecureBootCertUpdateStatus.ps1 스크립트  

디바이스 상태 데이터 수집 

각 엔드포인트(GPO를 통해) 

샘플 Aggregate-SecureBootData.ps1 스크립트

보고서 및 대시보드 생성 

워크스테이션 관리 

샘플 Deploy-GPO-SecureBootCollection.ps1 스크립트

데이터 수집을 위한 GPO 만들기 자동화 

도메인 컨트롤러 

샘플 Start-SecureBootRolloutOrchestrator.ps1 스크립트

인증서 설치를 위한 자동화된 GPO 배포를 사용하는 완전 자동화된 연속 오케스트레이션

워크스테이션 관리 

샘플 Deploy-OrchestratorTask.ps1 스크립트

자동화된 롤아웃을 위해 Orchestrator 스크립트를 예약된 작업으로 배포합니다.

도메인 컨트롤러

샘플 Get-SecureBootRolloutStatus.ps1 스크립트

워크스테이션에서 보안 부팅 인증서 롤아웃 상태 보기

관리 워크스테이션

샘플 Enable-SecureBootUpdateTask.ps1 스크립트

 보안 부팅 업데이트 작업을 사용하도록 설정

작업이 사용하지 않도록 설정된 끝점(사용하지 않도록 설정된 경우 작업을 사용하도록 설정하려면 한 번만 실행)

"2단계: 보안 부팅 인증서 업데이트 오케스트레이션 스크립트"로 돌아가기 

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

    변경 없이 수행되는 내용 표시

"2단계: 보안 부팅 인증서 업데이트 오케스트레이션 스크립트"로 돌아가기  

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에 대한 쓰기 액세스 권한

"2단계: 보안 부팅 인증서 업데이트 오케스트레이션 스크립트"로 돌아가기  

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 __________________________________________________________________________________________

"2단계: 보안 부팅 인증서 업데이트 오케스트레이션 스크립트"로 돌아가기

맨 위로 

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"). 횟수

"E2E 배포 단계(빠른 참조 가이드)"로 돌아가기 

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" # 상태는 "완료됨"을 표시해야 합니다.

"E2E 배포 단계(빠른 참조 가이드)"로 돌아가기  

상태 Files

오케스트레이터는 ReportBasePath\RolloutState\:

File

설명

RolloutState.json

웨이브 기록, 대상 디바이스, 상태

BlockedBuckets.json

조사가 필요한 버킷

DeviceHistory.json

호스트 이름별 디바이스 추적

Orchestrator_YYYYMMDD.log

일일 활동 로그

"E2E 배포 단계(빠른 참조 가이드)"로 돌아가기 

맨 위로 

문제 해결

섹션 내용

오케스트레이터가 진행되지 않음

  1. 예약된 작업 확인

    Get-ScheduledTask -TaskName "SecureBoot-Rollout-Orchestrator"

  2. 로그 확인

    Get-Content "C:\SecureBootReports\RolloutState\Orchestrator_*.log" -Tail 50

  3. JSON 데이터 새로 고침 확인

    (Get-ChildItem "\\server\SecureBootData$" -Filter "*.json" | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-1) }).Count

"문제 해결"로 돌아가기 

차단된 버킷

  1. 목록이 차단되었습니다.

    .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets

  2. 디바이스 연결 가능성을 조사합니다.

  3. 펌웨어 문제를 확인합니다.

  4. 조사 후 차단을 해제합니다.

"문제 해결"로 돌아가기  

GPO가 적용되지 않음

  1. GPO가 있는지 확인합니다.

    Get-GPO -Name "SecureBoot-Rollout-Wave*"

  2. 보안 필터링을 확인합니다.

    Get-GPPermission -Name "GPO-Name" -All

  3. 컴퓨터가 보안 그룹에 있는지 확인합니다.

  4. 대상에 GPO를 적용합니다.

    gpupdate /force

"문제 해결"로 돌아가기

맨 위로 

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.