AI Governance: Jamf Extender로 커버리지 확장
AI Governance란?
AI Governance는 "우리는 AI를 허용했다"와 "플릿 전반에서 올바르게 구성되어 있음을 증명할 수 있다" 사이의 격차를 해소합니다. Jamf for Mac을 통해 제공되며, IT 및 보안 팀에게 두 가지 통합 기능을 제공합니다. AI Visibility는 어떤 AI 도구가 실행 중이고, 무엇을 하고 있으며, 무엇에 연결되어 있는지에 대한 거의 실시간 인벤토리를 제공합니다. AI Policies는 각 AI 도구의 엔터프라이즈 제어를 평이한 언어의 선택지로 변환하여 OS에서 시행되는 관리 설정으로 제공합니다. 이 둘을 함께 사용하면 감사자와 경영진이 묻는 세 가지 질문에 답할 수 있습니다. 무엇이 실행 중인가, 올바르게 구성되어 있는가, 그리고 이를 증명할 수 있는가.
Jamf Extender가 추가하는 것
Windows 정책 내보내기: AI 거버넌스 정책을 모든 MDM 또는 UEM 솔루션에 업로드할 수 있는 즉시 배포 가능한 번들로 다운로드하여, macOS 및 모바일 플릿과 함께 Windows 엔드포인트에서 AI 도구 구성을 쉽게 시행할 수 있습니다.
실시간 차단 상태 가시성: 배포하기 전에 어떤 AI 도구가 이미 차단되어 있는지 한눈에 확인할 수 있습니다. 녹색 상태 표시기는 현재 커버리지를 보여주어 불필요한 작업을 피하고 시행 상태를 즉시 파악할 수 있게 합니다.
간소화된 배포 워크플로: AI Visibility 대시보드에서 직접 Custom Prevent Lists(엔드포인트 제어)와 도메인 차단(네트워크 제어)을 Jamf의 보안 도구에 배포하며, 포털 간 컨텍스트 전환이나 수동 목록 생성이 필요하지 않습니다.
자동 중복 탐지: 확장 프로그램은 이미 차단된 서명 ID와 도메인을 지능적으로 건너뛰어, 깔끔한 배포 요약을 제공하고 불필요한 중복 항목을 방지합니다.
포털 간 오케스트레이션: Jamf Extender는 Jamf Extender Portal Group 구성에 따라 배포를 올바른 Jamf Cloud 포털로 자동 라우팅하여, 수동 조회와 구성 오류를 제거합니다.
목차
가장 큰 혜택을 받는 대상:
여러 환경(프로덕션, 스테이징, 개발)을 관리하거나 AI 거버넌스 정책을 자주 조정하는 조직은 가시성과 배포 속도의 이점을 누릴 수 있습니다. Jamf 보안 도구 전반에서 시행 상태의 실시간 확인을 원하는 팀은 통합된 상태 표시기가 특히 유용하다고 느낄 것입니다.
개요
이 가이드는 Jamf Account의 AI Governance 전반에서 Jamf Extender를 사용하는 방법을 보여줍니다. Jamf Extender는 AI Visibility 대시보드에 AI 도구 사용을 확인하고, 사용자 환경에서 식별된 AI 도구에 대한 추가 엔드포인트 및 네트워크 차단을 배포하는 기능을 추가합니다. Jamf Extender는 또한 AI Policies 빌더에 직접 다운로드 옵션을 추가하여, 선택한 MDM 또는 UEM에 업로드하는 방식으로 모든 정책을 Windows 엔드포인트용 즉시 배포 가능한 번들로 내보낼 수 있게 합니다.
달성할 수 있는 것:
- Jamf Account AI Visibility에서 AI 도구 사용 확인
- Custom Prevent Lists(Jamf Protect) 및 Custom Domain Blocks(Security Cloud) 배포
- AI 거버넌스 차단 확인 및 관리
- (선택 사항) Windows 엔드포인트에 AI Governance 정책 구성 배포
소요 시간: 배포당 2~5분
사전 요구 사항
✅ Jamf Extender 설치 및 구성 완료(아래 Jamf Extender 설정 참조)
✅ Jamf Pro를 Protect 및/또는 Security Cloud에 연결하는 Portal Groups 구성
✅ 다음에 대한 관리자 액세스:
- Jamf Account AI Governance
- Jamf Protect 인스턴스(Custom Prevent Lists에 대한 쓰기 권한 포함)
- Jamf Security Cloud 인스턴스(선택 사항, 도메인 차단용)
Jamf Extender 설정
개요
이 가이드는 API 자격 증명 구성 및 Portal Groups를 사용하여 Jamf 시스템을 함께 연결하는 것을 포함하여, 설치 후 Jamf Extender를 설정하는 과정을 안내합니다.
달성할 수 있는 것:
- Jamf Pro, Jamf Protect, Jamf Security Cloud에 대한 API 자격 증명 구성
- Portal Groups를 사용하여 이러한 시스템 연결
- 플랫폼 간 디바이스 조회 및 배포 활성화
소요 시간: 초기 설정에 5~10분
설정 사전 요구 사항
✅ 브라우저(Chrome, Safari, Edge 또는 Firefox)에 Jamf Extender 설치
✅ 다음에 대한 관리자 액세스:
- Jamf Pro 인스턴스
- Jamf Protect 인스턴스
- Jamf Security Cloud 인스턴스
✅ 필요한 권한:
- Jamf Pro: API 역할 및 클라이언트를 생성할 수 있는 권한
- Jamf Protect: Custom Prevent Lists를 생성하기 위한 관리자 역할(읽기 전용 아님). 역할은 Prevent Lists 쓰기로만 제한할 수 있습니다.
- Jamf Security Cloud: 관리자 자격 증명
파트 A: 초기 확장 프로그램 설정
Jamf Extender를 설치하면 다음이 표시됩니다.
- 브라우저 도구 모음: Jamf Extender 아이콘(클릭하여 팝업 열기)
- Jamf Pro 페이지: Jamf 로고 옆에 상태 알약이 표시됨
- Jamf Pro 사이드바: "Resource Center" 위에 "Jamf Extender" 버튼
초기 상태: 자격 증명을 설정하기 전까지 상태 알약에 **노란색 "Configure Extension"**이 표시됩니다.
파트 B: Jamf Pro 자격 증명 구성
Quick Setup(권장) 또는 Manual Setup의 두 가지 옵션이 있습니다.
자동 설정(권장)
자동 설정은 올바른 권한을 가진 API 역할과 클라이언트를 생성합니다.
- Jamf Pro 인스턴스로 이동하여 로그인
- Settings 아래 왼쪽 메뉴에서 Jamf Extender 클릭
- Configuration 섹션에서 "Set Up Automatically" 클릭
- 확인을 기다림(보통 5~10초)
- 웹페이지 새로 고침
- 완료! 상태 알약이 **녹색 "Extension Active"**로 바뀜
자동 설정이 수행하는 작업:
- "Jamf Extender"라는 이름의 API 역할 생성
- 필요한 모든 읽기 권한 부여(컴퓨터, 정책, 프로필, 그룹 등)
- Categories 및 Packages에 대한 쓰기 권한 부여(사용하지 않는 항목 삭제)
- 해당 역할에 할당된 API 클라이언트 생성
- 자격 증명을 안전하게 저장(Jamf Extender 앱이 설치된 Mac에서는 macOS Keychain, 그 외에는 브라우저 저장소)
Quick Setup 문제 해결:
- ❌ "Failed to create API client" → Jamf Pro 사용자에게 API 역할/클라이언트를 생성할 권한이 있는지 확인
- ❌ "Network error" → Jamf Pro에 로그인되어 있고 페이지가 완전히 로드되었는지 확인
파트 C: Jamf Protect 자격 증명 구성
⚠️ 중요: Custom Prevent Lists를 배포하려면 쓰기 가능한 Protect API 클라이언트(읽기 전용 아님)가 필요합니다.
자동 설정(권장)
- Jamf Protect 인스턴스로 이동(예:
tenant.protect.jamfcloud.com)하여 로그인 - 브라우저 도구 모음에서 Jamf Extender 아이콘 클릭
- Configuration 아래에 감지된 인스턴스를 표시하는 Jamf Protect 섹션이 나타남
- (선택 사항) 원하는 경우 Client Name 변경
- "Set Up Automatically" 클릭
- (한 번만 표시되는) Client ID와 Password를 복사하여 저장하고 비밀번호 관리자에 보관
⚠️ 중요: 자동 생성된 클라이언트는 기본적으로 읽기 전용 권한을 가집니다. AI Visibility 배포에는 쓰기 액세스가 필요합니다.
위에서 초기 API Client를 생성한 후:
옵션 A: 전체 관리자 권한 부여
- Administrative → API Clients로 이동하여 새로 생성된 API Client 선택
- Edit를 클릭하고 Roles 드롭다운 메뉴를 사용하여 Full Admin 역할 추가
- (선택 사항) 레이블의 X를 클릭하여 Read Only 역할 제거
옵션 B: 적절한 쓰기 권한 추가
- Administrative → Account → Roles로 이동하여 +Create Role 선택
- 새 API Client 이름 지정(예: Prevent List Creation)
- Write 열 상단의 상자를 선택 해제하여 모든 권한 선택 해제
- Write 열에서 Prevent Lists 상자 선택
- Administrative → API Clients로 이동하여 새로 생성된 API Client 선택
- Edit를 클릭하고 Roles 드롭다운 메뉴를 사용하여 생성한 새 제한 역할 추가
- (선택 사항) 레이블의 X를 클릭하여 Read Only 역할 제거
이 작업이 수행하는 것:
- Protect의 GraphQL API를 통해 API 클라이언트 생성
- 브라우저 세션에서 캡처한 Auth0 JWT 사용
- 오리진별로 자격 증명 저장(예:
protect_creds:https://overview.protect.jamfcloud.com)
파트 D: Jamf Security Cloud 자격 증명 구성
수동 설정
Security Cloud에서:
- 도메인에서 customerId 값 복사 - 예: https://radar.wandera.com/dashboard?customerId=1a2s3d4f5g6h7j8k9l0
- 왼쪽 메뉴에서 Integrations → Risk API로 이동
- Generate API key 클릭
- API 키 이름 지정
- (한 번만 표시되는) Application ID와 Secret를 복사하여 저장하고 비밀번호 관리자에 보관
Jamf Extender에서
- Jamf Extender 도구 모음 아이콘 클릭
- Configuration 섹션 내에서 Manual 섹션 확장
- Portals 아래 첫 번째 드롭다운에서 Add new... 선택
- Type 아래에서 Security Cloud 선택
- Customer ID 필드에 customerId 붙여넣기
- Client ID 필드에 Application ID 붙여넣기
- Client Secret 필드에 Application Secret 붙여넣기
- Security Cloud 로그인에 사용하는 관리자 이메일 및 암호 입력
파트 E: Portal Groups 생성(시스템 연결)
Portal Groups는 Jamf Pro 인스턴스를 Protect 및/또는 Security Cloud에 연결하여, 플랫폼 간 디바이스 조회 및 배포를 가능하게 합니다.
Portal Group 생성
- Jamf Extender 도구 모음 아이콘 클릭
- "Portal Groups" 섹션으로 스크롤
- "Add Group" 클릭
- 구성:
- Group Name: 설명적인 이름(예: "Production" 또는 "Dev Environment")
- Jamf Pro Instance: 드롭다운에서 선택(먼저 구성되어 있어야 함)
- Security Cloud Customer ID: (선택 사항) 도메인 차단을 배포하는 경우 선택
- Jamf Protect Instance: (선택 사항) Prevent Lists를 배포하는 경우 선택
- ⚠️ Portal Group에는 Protect 또는 Security Cloud 중 하나가 필요합니다
- "Add Group" 클릭
Portal Group 예시:
Name: Production Environment
Jamf Pro: https://myorg.jamfcloud.com
Security Cloud: Customer ID 12345
Jamf Protect: https://overview.protect.jamfcloud.com
Portal Groups가 중요한 이유:
- 확장 프로그램이 배포 대상 Protect/Security Cloud 인스턴스를 자동으로 감지
- Jamf Pro의 디바이스 세부 정보 페이지에 플랫폼 간 데이터(취약점, 위협 등) 표시
- AI Visibility 배포가 올바른 시스템으로 자동 라우팅
파트 1: AI Visibility 대시보드 및 배포
이제 재미있는 부분입니다! Jamf Account에서 AI 거버넌스 차단을 배포합니다.
AI Visibility 액세스
- Jamf Account로 이동:
account.jamf.com - Jamf 자격 증명으로 로그인
- 이동: AI Governance → AI Visibility
- 환경 선택(여러 개를 관리하는 경우)
표시되는 내용:
- "N unique products in use" 카운트
- 감지된 각 AI 도구에 대한 제품 카드(예: Claude, Cursor, ChatGPT)
- 각 카드에 표시되는 내용:
- 제품 이름 및 번들 ID
- Launchers(메인 앱의 서명 ID)
- Commands(헬퍼 프로세스의 서명 ID)
- 선택한 기간 동안의 이벤트 카운트

차단 상태 표시기 이해
Jamf Extender는 이미 차단된 항목을 보여주는 실시간 상태 표시기를 삽입합니다.
클릭하기 전에 다음을 확인하세요:
- 제품 옆의 녹색 알약: "✓ Block Configured in Protect"
- 프로세스 옆의 녹색 알약: "✓ Block Configured"
- 헤더 요약 알약:
- "✓ All prevent lists configured (N)" — 모든 항목이 차단됨
- "N of M signing IDs blocked in Protect" — 부분 커버리지
이러한 표시기는 자동으로 나타나며 — 구성이 필요하지 않습니다. Protect 인스턴스를 실시간으로 확인합니다. 처음 로드될 때 표시되기까지 잠시 시간이 걸릴 수 있습니다.
차단 배포(모든 제품)

페이지에서 감지된 모든 AI 도구를 차단하려면:
"Configure Additional Blocks" 버튼 클릭
- "N unique products in use" 카운트 왼쪽에 위치
- 페이지의 모든 제품을 포함
자격 증명 확인(자동 발생):
- 확장 프로그램이 환경 UUID에서 Protect 인스턴스를 확인
- 자격 증명이 쓰기 가능한지(읽기 전용이 아닌지) 확인
- 읽기 전용인 경우: 설정 지침과 함께 오류 표시
- 준비된 경우: 배포 모달 열기
차단할 항목 선택:
Custom Prevent Lists:
- 제품이 체크박스와 함께 그룹화됨
- 각 제품에는 다음이 있음:
- ☐ 제품 번들 ID 체크박스(예:
com.anthropic.claudefordesktop) - ☐ launcher/command 서명 ID당 체크박스 하나 ✅ 핵심 사항:
- ☐ 제품 번들 ID 체크박스(예:
- 헤더 체크박스를 선택하면 모든 하위 체크박스가 선택됨
- 하위 체크박스는 독립적임
- 기본적으로 아무것도 선택되지 않음
- 이미 차단된 ID는 녹색 "Already blocked" 배지 표시
Custom Domain Blocks:
- (Portal Group에 Security Cloud가 구성된 경우)
- 각 제품이 알려진 도메인 표시
- 차단할 도메인 선택(예:
claude.ai,claude.com) - 도메인 차단은 macOS, iOS, iPadOS, VisionOS, Android, Windows 엔드포인트에 적용됨
"Deploy" 클릭
결과:
- 성공 카운트: "Created N Prevent Lists, Skipped M duplicates"
- 이미 존재하는 항목은 자동으로 건너뜀
- Prevent Lists가 배포된 모든 Plan에서 즉시 활성화됨
최종 화면에는 추가된 차단을 확인하기 위해 Protect 또는 Security Cloud로 바로 이동하는 버튼이 표시됩니다
차단 배포(단일 제품)
단 하나의 AI 도구만 차단하려면:
- 제품 카드 찾기(예: "Claude")
- "Block {Product}" 링크 클릭
- 카드의 컨트롤 클러스터(기간 선택 옆)에 위치
- 위와 동일한 배포 흐름 따르기(해당 제품에만 범위 지정)
최종 화면에는 추가된 차단을 확인하기 위해 Protect 또는 Security Cloud로 바로 이동하는 버튼이 표시됩니다
배포 확인
Jamf Protect에서:
- 이동: Configuration → Prevent Lists
- 다음과 같은 이름의 새 항목 찾기:
- "Block AI Tool: com.anthropic.claudefordesktop"
- "Block AI Tool: com.openai.chatgpt.atlas"
- 각 항목에는 다음이 있음:
- 유형: Custom Prevent List
Jamf Security Cloud에서:
- 이동: Policies → Content filtering policy → Custom rules
- 새 사용자 지정 도메인 차단 찾기
- 도메인이 나열되어 있고 필요한 그룹에 할당되어 있는지 확인
다시 AI Visibility에서:
- 페이지 새로 고침
- 배포된 항목 옆에 녹색 "✓ Block Configured" 배지가 나타나야 함
모범 사례
1. 설명적인 Portal Group 이름 사용
좋은 이름: "Production", "Dev - US East", "QA Environment"
나쁜 이름: "Test", "Group 1", "asdf"
이유: 여러 환경을 관리하는 경우 여러 개의 Portal Group을 갖게 됩니다.
2. Prevent List 효과 모니터링
배포 후:
- Jamf Protect에서: Alerts → View All
- 필터링: Prevent List 차단
- AI 도구가 실제로 차단되고 있는지 확인
이유: 배포가 프로덕션에서 작동하는지 검증합니다.
3. 예외 허용
특정 AI 도구를 허용하려면(예: 개발자용 Claude):
옵션 1 - 해당 차단을 배포하지 않음:
- 배포 시 해당 상자를 선택하지 않으면 됨
- 다른 도구는 차단되고 이 도구는 열린 상태로 유지됨
옵션 2 - Prevent Lists 제거:
- Jamf Protect에서: Configuration → Prevent Lists
- "Block AI Tool: com.anthropic.claudefordesktop" 목록 찾기
- 삭제
- 이제 도구가 허용됨
- Jamf Security Cloud → Policies → Content filtering policy → Custom rules에서
- 더 이상 필요하지 않은 규칙 제거
파트 2: Windows AI 정책 배포 (선택 사항)
네트워크 및 프로세스 수준에서 AI 도구를 차단하는 것 외에도, Windows 엔드포인트의 AI 애플리케이션에 정책 구성을 직접 배포할 수 있습니다. 이는 다음이 필요한 조직에 특히 유용합니다.
- 조직 승인 설정으로 AI 도구 구성(예: 승인된 모델, API 엔드포인트, 기능 플래그)
- MDM을 통해 Windows 플릿 전반에 일관된 구성 시행
- 관리 설정으로 Claude Code 또는 Claude Desktop 배포

배포되는 내용
Jamf Extender는 정책 구성을 Windows 레지스트리에 기록하는 Windows 배포 번들을 생성합니다.

Claude Code:
- 레지스트리 경로:
HKLM\SOFTWARE\Policies\ClaudeCode\Settings - 형식: 모든 설정을 포함하는 단일 압축 JSON 문자열
- 배포 방법: 레지스트리 값을 검증하고 기록하는 PowerShell 스크립트
Claude Desktop (Claude Cowork):
- 레지스트리 경로:
HKLM\SOFTWARE\Policies\Claude - 형식: 설정 키당 하나의 레지스트리 값(예:
model,temperature) - 배포 방법: 개별 문자열 값을 기록하는 PowerShell 스크립트
Windows용 정책 내보내기
AI Policies로 이동:
- Jamf Account에서 이동: AI Governance → AI Policies
- Windows에 배포할 정책 찾기
단일 정책 내보내기:
- 정책 옆의 점 세 개 메뉴(⋯) 클릭
- "Export for Windows" 선택
- 브라우저가
claude-code-windows-deploy.zip과 같은 이름의 ZIP 파일 다운로드
또는 모든 정책 내보내기(대량):
- 도구 모음에서 "Download Policies for Windows" 클릭
- 브라우저가 다운로드:
ai-policies-windows-deploy.zip - 각 정책에 대한 별도의 배포 폴더 포함
번들 구조 이해
각 정책 내보내기에는 다음이 포함됩니다.
claude-code-windows-deploy/
├── Deploy-ClaudeCode-Registry.ps1 # 디바이스 측 레지스트리 기록기
├── intune/
│ ├── Provision-ClaudeCode-Intune.ps1 # 관리자 프로비저너(PowerShell)
│ └── provision_claudecode_intune.py # 관리자 프로비저너(Python/MSAL)
├── metadata.json # 소스 정책 세부 정보
└── README.txt # 설정 지침
Claude Desktop 정책의 경우 다음도 표시됩니다:
settings/settings.json # 설정 참조 사본
대량 내보내기의 경우:
ai-policies-windows-deploy/
├── policy-1/ # 정책당 폴더 하나
│ ├── Deploy-ClaudeCode-Registry.ps1
│ └── intune/...
├── policy-2/
│ ├── Deploy-ClaudeDesktop-Registry.ps1
│ └── intune/...
├── all-policy-import/
│ ├── Import-All-AIPolicies-Intune.ps1 # 다중 정책 프로비저너
│ └── import_all_aipolicies_intune.py # 다중 정책 프로비저너
└── metadata.json # 모든 정책의 인덱스
배포 옵션 1: 모든 MDM(수동 스크립트 실행)
디바이스 측 스크립트(Deploy-*.ps1)는 PowerShell 스크립트를 실행할 수 있는 모든 MDM에서 작동합니다.
단계:
- ZIP 번들 압축 해제
Deploy-ClaudeCode-Registry.ps1또는Deploy-ClaudeDesktop-Registry.ps1검토- 스크립트를 MDM(Intune, Workspace ONE 등)에 업로드
- Windows 디바이스 그룹에 할당
- 스크립트가 SYSTEM으로 실행되어 레지스트리에 기록
스크립트가 수행하는 작업:
- 정책 JSON을 스크립트에 직접 포함
ConvertFrom-Json으로 JSON 구문 검증(오류 시 즉시 실패)- 레지스트리 키가 없으면 생성
- 설정을 적절한 레지스트리 경로에 기록
- 코드 0(성공) 또는 1(실패)로 종료
지원되는 MDM 도구:
- Microsoft Intune(Platform Scripts)
- VMware Workspace ONE(Scripts & Sensors)
- SYSTEM 컨텍스트로 PowerShell을 실행할 수 있는 모든 MDM
배포 옵션 2: Microsoft Intune(자동 프로비저닝)
Intune 프로비저너는 Microsoft Graph API를 통해 Microsoft Intune에 스크립트를 업로드하는 과정을 자동화합니다.
프로비저너 선택:
PowerShell 프로비저너 (Provision-*-Intune.ps1)
사전 요구 사항:
- PowerShell 5.1+가 설치된 Windows 컴퓨터
- PowerShell Microsoft.Graph 모듈 설치:
Install-Module Microsoft.Graph - Entra ID Global Administrator 또는 Intune Administrator 역할
단계:
- ZIP 번들 압축 해제
- 이동:
intune/ Provision-ClaudeCode-Intune.ps1마우스 오른쪽 버튼 클릭 → Run with PowerShell- 다음을 표시하는 확인 프롬프트 검토:
- 정책 이름 및 버전
- 필요한 Intune 권한
- Intune에서 생성될 항목
Y를 입력하여 확인- 대화형 Microsoft 로그인을 위해 브라우저가 열림(MFA 지원)
- 스크립트가 인증하고 디바이스 측 스크립트를 Intune에 업로드
- 스크립트 출력: Intune Platform Script ID 및 성공 확인
Intune 포털에서의 다음 단계:
- 이동: Devices → Scripts and remediations → Platform scripts
- 새로 생성된 스크립트 찾기(예: "Claude Code Policy v1")
- Assignments 클릭 → 디바이스 그룹 추가
- 해당 그룹의 디바이스가 다음 체크인 시 정책을 받음
Python/MSAL 프로비저너 (provision_*_intune.py)
Python을 사용하는 이유?
- Windows, macOS 또는 Linux에서 작동
- 앱 등록 불필요
- OAuth 디바이스 코드 흐름 사용(브라우저 기반, MFA와 함께 작동)
- 관리할 시크릿 없음
사전 요구 사항:
pip install msal requests
단계:
- ZIP 번들 압축 해제
- 이동:
intune/ - 실행:
python provision_claudecode_intune.py - 확인 프롬프트 검토
yes를 입력하여 확인- 스크립트가 출력: "Go to https://microsoft.com/devicelogin and enter code: XXXXXX"
- 브라우저를 열고 코드를 입력한 후 Intune 관리자 계정으로 로그인
- 스크립트가 업로드 완료
- Intune 포털에서 디바이스 그룹에 할당(PowerShell 흐름과 동일)
장점:
- 크로스 플랫폼(Windows 불필요)
- 앱 등록 오버헤드 없음
- 브라우저 기반 인증(친숙한 MFA 흐름)
- 오픈 소스 종속성만 사용
대량 정책 배포(여러 정책 동시)
여러 AI 정책을 관리하는 조직의 경우:
All-Policy 프로비저너 사용:
ai-policies-windows-deploy.zip압축 해제- 이동:
all-policy-import/ - 다음 중 하나 실행:
- PowerShell:
Import-All-AIPolicies-Intune.ps1 - Python:
python import_all_aipolicies_intune.py
- PowerShell:
- 단일 인증 흐름으로 모든 정책 업로드
- 각 정책이 별도의 Intune Platform Script가 됨
결과:
- 한 번의 실행으로 여러 Intune 스크립트 생성
- 각 스크립트를 서로 다른 디바이스 그룹에 할당 가능
- 서로 다른 팀에 서로 다른 구성을 배포하는 데 유용(예: 엔지니어링 대 마케팅)
Windows 배포 확인
테스트 디바이스에서:
- 레지스트리 편집기 열기(
regedit.exe) - 이동:
- Claude Code:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\ClaudeCode - Claude Desktop:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Claude
- Claude Code:
- 레지스트리 값이 존재하는지 확인
Claude Code의 경우:
Settings(REG_SZ)라는 이름의 값 찾기- 값에 압축된 JSON 포함(줄 바꿈 없음)
Claude Desktop의 경우:
- 여러 값, 설정 키당 하나씩
- 각 값은 문자열(부울/숫자의 경우에도)
- 애플리케이션 실행(Claude Code 또는 Claude Desktop)
- 설정이 시행되는지 확인(예: 모델 선택, API 엔드포인트)
문제 해결:
- 레지스트리 값이 누락된 경우: MDM 스크립트 실행 로그 확인
- 앱이 설정을 무시하는 경우: 앱 버전이 관리 레지스트리 설정을 지원하는지 확인
- 스크립트가 실패하는 경우:
metadata.json에서 검증 오류 확인
스키마 검증 (Claude Code만 해당)
Claude Code 정책은 배포 전에 공식 JSON 스키마에 대해 검증됩니다.
검증 발생 시점:
- 내보내기 시(Jamf Extender에서)
- 스크립트 실행 시(디바이스 측 PowerShell이 JSON 구문 검증)
검증되는 항목:
- 유형 불일치(예: 부울이 예상되는 곳에 문자열)
- 잘못된 열거형 값(예: 지원되지 않는 모델 이름)
- 알 수 없는 구성 키
- 환경 변수 명명(대문자, 영숫자 + 밑줄이어야 함)
오류 표시:
- 내보내기 중 브라우저에서(치명적 오류 시 다운로드 차단)
- 내보내기 후
README.txt에서(경고만) - PowerShell 스크립트 출력에서(JSON 구문 분석 실패)
Claude Desktop:
- 게시된 스키마 없음(있는 그대로 배포)
- 관리자는 Claude Desktop 문서에 따라 설정을 검증할 책임이 있음
Windows 배포 모범 사례
1. 프로덕션 전 테스트
- 먼저 파일럿 디바이스 그룹에 배포
- 레지스트리 값이 올바르게 기록되었는지 확인
- 관리 설정으로 애플리케이션 동작 테스트
2. 정책 버전 관리
- 정책 버전이 Intune 스크립트 이름에 포함됨(예: "Claude Code Policy v2")
- 정책 업데이트 시 새 버전 생성
- 이전 버전은 수동으로 삭제하지 않는 한 Intune에 남아 있음
3. 설명적인 정책 이름 사용
- 좋음: "Claude Code - Engineering Team - GPT-4 Only"
- 나쁨: "Policy 1", "Test", "asdf"
- 정책 이름은 Intune Platform Script 목록에 표시됨
4. 자격 증명 보안 유지
- Intune 프로비저너는 대화형 인증 사용(자격 증명 미포함)
- 디바이스 측 스크립트에는 정책 JSON만 포함(시크릿 없음)
- 민감한 설정이 포함된 경우 압축 해제된 번들을 소스 제어에 커밋하지 마세요
5. 배포 전 검토
- 항상 번들의
README.txt확인 - 메타데이터의 검증 오류/경고 검토
- MDM 업로드 전 개발 컴퓨터에서 PowerShell 스크립트 구문 테스트
Windows 배포 제한 사항
이 기능이 수행하지 않는 것:
- Claude Code 또는 Claude Desktop을 설치하지 않음(별도 배포 필요)
- 프로세스 수준에서 AI 도구를 차단하지 않음(이를 위해서는 Jamf Protect 사용)
- macOS에서 작동하지 않음(macOS MDM 프로필 또는 파일 기반 설정 사용)
- Linux 엔드포인트에 배포하지 않음
레지스트리 전용:
- 파일 기반 설정(예: 앱 디렉터리의
settings.json)은 기록되지 않음 - 애플리케이션은 레지스트리 정책 위치에서 읽어야 함
- 앱 버전이 레지스트리 기반 관리 설정을 지원하는지 확인
지원 및 피드백
- GitHub Issues: https://github.com/Jamf-Concepts/Jamf-Extender/issues
- 문서: https://github.com/Jamf-Concepts/Jamf-Extender
- 질문: "question" 레이블로 이슈 열기
알 수 없는 도구의 서명 ID를 발견한 경우:
- 실행:
codesign -dv /Applications/YourApp.app - 캡처: Bundle ID, Team ID, 도메인
- 검증 보고서를 첨부하여 GitHub 이슈 제출
여러분의 기여는 전체 Jamf 커뮤니티에 도움이 됩니다!