Jamf Concepts
가이드

가이드

AI Governance: Jamf Extender로 커버리지 확장

~15 min read
도움이 되었나요?

AI Governance: Jamf Extender로 커버리지 확장

AI Governance란?

AI Governance는 "우리는 AI를 허용했다"와 "플릿 전반에서 올바르게 구성되어 있음을 증명할 수 있다" 사이의 격차를 해소합니다. Jamf for Mac을 통해 제공되며, IT 및 보안 팀에게 두 가지 통합 기능을 제공합니다. AI Visibility는 어떤 AI 도구가 실행 중이고, 무엇을 하고 있으며, 무엇에 연결되어 있는지에 대한 거의 실시간 인벤토리를 제공합니다. AI Policies는 각 AI 도구의 엔터프라이즈 제어를 평이한 언어의 선택지로 변환하여 OS에서 시행되는 관리 설정으로 제공합니다. 이 둘을 함께 사용하면 감사자와 경영진이 묻는 세 가지 질문에 답할 수 있습니다. 무엇이 실행 중인가, 올바르게 구성되어 있는가, 그리고 이를 증명할 수 있는가.

AI Governance에 대해 자세히 알아보기


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 엔드포인트용 즉시 배포 가능한 번들로 내보낼 수 있게 합니다.

달성할 수 있는 것:

  1. Jamf Account AI Visibility에서 AI 도구 사용 확인
  2. Custom Prevent Lists(Jamf Protect) 및 Custom Domain Blocks(Security Cloud) 배포
  3. AI 거버넌스 차단 확인 및 관리
  4. (선택 사항) 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를 설정하는 과정을 안내합니다.

달성할 수 있는 것:

  1. Jamf Pro, Jamf Protect, Jamf Security Cloud에 대한 API 자격 증명 구성
  2. Portal Groups를 사용하여 이러한 시스템 연결
  3. 플랫폼 간 디바이스 조회 및 배포 활성화

소요 시간: 초기 설정에 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 역할과 클라이언트를 생성합니다.

  1. Jamf Pro 인스턴스로 이동하여 로그인
  2. Settings 아래 왼쪽 메뉴에서 Jamf Extender 클릭
  3. Configuration 섹션에서 "Set Up Automatically" 클릭
  4. 확인을 기다림(보통 5~10초)
  5. 웹페이지 새로 고침
  6. 완료! 상태 알약이 **녹색 "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 클라이언트(읽기 전용 아님)가 필요합니다.

자동 설정(권장)

  1. Jamf Protect 인스턴스로 이동(예: tenant.protect.jamfcloud.com)하여 로그인
  2. 브라우저 도구 모음에서 Jamf Extender 아이콘 클릭
  3. Configuration 아래에 감지된 인스턴스를 표시하는 Jamf Protect 섹션이 나타남
  4. (선택 사항) 원하는 경우 Client Name 변경
  5. "Set Up Automatically" 클릭
  6. (한 번만 표시되는) Client ID와 Password를 복사하여 저장하고 비밀번호 관리자에 보관

⚠️ 중요: 자동 생성된 클라이언트는 기본적으로 읽기 전용 권한을 가집니다. AI Visibility 배포에는 쓰기 액세스가 필요합니다.

위에서 초기 API Client를 생성한 후:

옵션 A: 전체 관리자 권한 부여

  1. Administrative → API Clients로 이동하여 새로 생성된 API Client 선택
  2. Edit를 클릭하고 Roles 드롭다운 메뉴를 사용하여 Full Admin 역할 추가
  3. (선택 사항) 레이블의 X를 클릭하여 Read Only 역할 제거

옵션 B: 적절한 쓰기 권한 추가

  1. Administrative → Account → Roles로 이동하여 +Create Role 선택
  2. 새 API Client 이름 지정(예: Prevent List Creation)
  3. Write 열 상단의 상자를 선택 해제하여 모든 권한 선택 해제
  4. Write 열에서 Prevent Lists 상자 선택
  5. Administrative → API Clients로 이동하여 새로 생성된 API Client 선택
  6. Edit를 클릭하고 Roles 드롭다운 메뉴를 사용하여 생성한 새 제한 역할 추가
  7. (선택 사항) 레이블의 X를 클릭하여 Read Only 역할 제거

이 작업이 수행하는 것:

  • Protect의 GraphQL API를 통해 API 클라이언트 생성
  • 브라우저 세션에서 캡처한 Auth0 JWT 사용
  • 오리진별로 자격 증명 저장(예: protect_creds:https://overview.protect.jamfcloud.com)

파트 D: Jamf Security Cloud 자격 증명 구성

수동 설정

Security Cloud에서:

  1. 도메인에서 customerId 값 복사 - 예: https://radar.wandera.com/dashboard?customerId=1a2s3d4f5g6h7j8k9l0
  2. 왼쪽 메뉴에서 Integrations → Risk API로 이동
  3. Generate API key 클릭
  4. API 키 이름 지정
  5. (한 번만 표시되는) Application ID와 Secret를 복사하여 저장하고 비밀번호 관리자에 보관

Jamf Extender에서

  1. Jamf Extender 도구 모음 아이콘 클릭
  2. Configuration 섹션 내에서 Manual 섹션 확장
  3. Portals 아래 첫 번째 드롭다운에서 Add new... 선택
  4. Type 아래에서 Security Cloud 선택
  5. Customer ID 필드에 customerId 붙여넣기
  6. Client ID 필드에 Application ID 붙여넣기
  7. Client Secret 필드에 Application Secret 붙여넣기
  8. Security Cloud 로그인에 사용하는 관리자 이메일 및 암호 입력

파트 E: Portal Groups 생성(시스템 연결)

Portal Groups는 Jamf Pro 인스턴스를 Protect 및/또는 Security Cloud에 연결하여, 플랫폼 간 디바이스 조회 및 배포를 가능하게 합니다.

Portal Group 생성

  1. Jamf Extender 도구 모음 아이콘 클릭
  2. "Portal Groups" 섹션으로 스크롤
  3. "Add Group" 클릭
  4. 구성:
    • Group Name: 설명적인 이름(예: "Production" 또는 "Dev Environment")
    • Jamf Pro Instance: 드롭다운에서 선택(먼저 구성되어 있어야 함)
    • Security Cloud Customer ID: (선택 사항) 도메인 차단을 배포하는 경우 선택
    • Jamf Protect Instance: (선택 사항) Prevent Lists를 배포하는 경우 선택
    • ⚠️ Portal Group에는 Protect 또는 Security Cloud 중 하나가 필요합니다
  5. "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 액세스

  1. Jamf Account로 이동: account.jamf.com
  2. Jamf 자격 증명으로 로그인
  3. 이동: AI Governance → AI Visibility
  4. 환경 선택(여러 개를 관리하는 경우)

표시되는 내용:

  • "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 도구를 차단하려면:

  1. "Configure Additional Blocks" 버튼 클릭

    • "N unique products in use" 카운트 왼쪽에 위치
    • 페이지의 모든 제품을 포함
  2. 자격 증명 확인(자동 발생):

    • 확장 프로그램이 환경 UUID에서 Protect 인스턴스를 확인
    • 자격 증명이 쓰기 가능한지(읽기 전용이 아닌지) 확인
    • 읽기 전용인 경우: 설정 지침과 함께 오류 표시
    • 준비된 경우: 배포 모달 열기
  3. 차단할 항목 선택:

    Custom Prevent Lists:

    • 제품이 체크박스와 함께 그룹화됨
    • 각 제품에는 다음이 있음:
      • ☐ 제품 번들 ID 체크박스(예: com.anthropic.claudefordesktop)
      • ☐ launcher/command 서명 ID당 체크박스 하나 ✅ 핵심 사항:
    • 헤더 체크박스를 선택하면 모든 하위 체크박스가 선택됨
    • 하위 체크박스는 독립적임
    • 기본적으로 아무것도 선택되지 않음
    • 이미 차단된 ID는 녹색 "Already blocked" 배지 표시

    Custom Domain Blocks:

    • (Portal Group에 Security Cloud가 구성된 경우)
    • 각 제품이 알려진 도메인 표시
    • 차단할 도메인 선택(예: claude.ai, claude.com)
    • 도메인 차단은 macOS, iOS, iPadOS, VisionOS, Android, Windows 엔드포인트에 적용됨
  4. "Deploy" 클릭

  5. 결과:

    • 성공 카운트: "Created N Prevent Lists, Skipped M duplicates"
    • 이미 존재하는 항목은 자동으로 건너뜀
    • Prevent Lists가 배포된 모든 Plan에서 즉시 활성화됨

최종 화면에는 추가된 차단을 확인하기 위해 Protect 또는 Security Cloud로 바로 이동하는 버튼이 표시됩니다

차단 배포(단일 제품)

단 하나의 AI 도구만 차단하려면:

  1. 제품 카드 찾기(예: "Claude")
  2. "Block {Product}" 링크 클릭
    • 카드의 컨트롤 클러스터(기간 선택 옆)에 위치
  3. 위와 동일한 배포 흐름 따르기(해당 제품에만 범위 지정)

최종 화면에는 추가된 차단을 확인하기 위해 Protect 또는 Security Cloud로 바로 이동하는 버튼이 표시됩니다

배포 확인

Jamf Protect에서:

  1. 이동: Configuration → Prevent Lists
  2. 다음과 같은 이름의 새 항목 찾기:
    • "Block AI Tool: com.anthropic.claudefordesktop"
    • "Block AI Tool: com.openai.chatgpt.atlas"
  3. 각 항목에는 다음이 있음:
    • 유형: Custom Prevent List

Jamf Security Cloud에서:

  1. 이동: Policies → Content filtering policy → Custom rules
  2. 새 사용자 지정 도메인 차단 찾기
  3. 도메인이 나열되어 있고 필요한 그룹에 할당되어 있는지 확인

다시 AI Visibility에서:

  • 페이지 새로 고침
  • 배포된 항목 옆에 녹색 "✓ Block Configured" 배지가 나타나야 함

모범 사례

1. 설명적인 Portal Group 이름 사용

좋은 이름: "Production", "Dev - US East", "QA Environment"
나쁜 이름: "Test", "Group 1", "asdf"

이유: 여러 환경을 관리하는 경우 여러 개의 Portal Group을 갖게 됩니다.

2. Prevent List 효과 모니터링

배포 후:

  1. Jamf Protect에서: Alerts → View All
  2. 필터링: Prevent List 차단
  3. 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용 정책 내보내기

  1. AI Policies로 이동:

    • Jamf Account에서 이동: AI Governance → AI Policies
    • Windows에 배포할 정책 찾기
  2. 단일 정책 내보내기:

    • 정책 옆의 점 세 개 메뉴(⋯) 클릭
    • "Export for Windows" 선택
    • 브라우저가 claude-code-windows-deploy.zip과 같은 이름의 ZIP 파일 다운로드
  3. 또는 모든 정책 내보내기(대량):

    • 도구 모음에서 "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에서 작동합니다.

단계:

  1. ZIP 번들 압축 해제
  2. Deploy-ClaudeCode-Registry.ps1 또는 Deploy-ClaudeDesktop-Registry.ps1 검토
  3. 스크립트를 MDM(Intune, Workspace ONE 등)에 업로드
  4. Windows 디바이스 그룹에 할당
  5. 스크립트가 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 역할

단계:

  1. ZIP 번들 압축 해제
  2. 이동: intune/
  3. Provision-ClaudeCode-Intune.ps1 마우스 오른쪽 버튼 클릭 → Run with PowerShell
  4. 다음을 표시하는 확인 프롬프트 검토:
    • 정책 이름 및 버전
    • 필요한 Intune 권한
    • Intune에서 생성될 항목
  5. Y를 입력하여 확인
  6. 대화형 Microsoft 로그인을 위해 브라우저가 열림(MFA 지원)
  7. 스크립트가 인증하고 디바이스 측 스크립트를 Intune에 업로드
  8. 스크립트 출력: Intune Platform Script ID 및 성공 확인

Intune 포털에서의 다음 단계:

  1. 이동: Devices → Scripts and remediations → Platform scripts
  2. 새로 생성된 스크립트 찾기(예: "Claude Code Policy v1")
  3. Assignments 클릭 → 디바이스 그룹 추가
  4. 해당 그룹의 디바이스가 다음 체크인 시 정책을 받음

Python/MSAL 프로비저너 (provision_*_intune.py)

Python을 사용하는 이유?

  • Windows, macOS 또는 Linux에서 작동
  • 앱 등록 불필요
  • OAuth 디바이스 코드 흐름 사용(브라우저 기반, MFA와 함께 작동)
  • 관리할 시크릿 없음

사전 요구 사항:

pip install msal requests

단계:

  1. ZIP 번들 압축 해제
  2. 이동: intune/
  3. 실행: python provision_claudecode_intune.py
  4. 확인 프롬프트 검토
  5. yes를 입력하여 확인
  6. 스크립트가 출력: "Go to https://microsoft.com/devicelogin and enter code: XXXXXX"
  7. 브라우저를 열고 코드를 입력한 후 Intune 관리자 계정으로 로그인
  8. 스크립트가 업로드 완료
  9. Intune 포털에서 디바이스 그룹에 할당(PowerShell 흐름과 동일)

장점:

  • 크로스 플랫폼(Windows 불필요)
  • 앱 등록 오버헤드 없음
  • 브라우저 기반 인증(친숙한 MFA 흐름)
  • 오픈 소스 종속성만 사용

대량 정책 배포(여러 정책 동시)

여러 AI 정책을 관리하는 조직의 경우:

All-Policy 프로비저너 사용:

  1. ai-policies-windows-deploy.zip 압축 해제
  2. 이동: all-policy-import/
  3. 다음 중 하나 실행:
    • PowerShell: Import-All-AIPolicies-Intune.ps1
    • Python: python import_all_aipolicies_intune.py
  4. 단일 인증 흐름으로 모든 정책 업로드
  5. 각 정책이 별도의 Intune Platform Script가 됨

결과:

  • 한 번의 실행으로 여러 Intune 스크립트 생성
  • 각 스크립트를 서로 다른 디바이스 그룹에 할당 가능
  • 서로 다른 팀에 서로 다른 구성을 배포하는 데 유용(예: 엔지니어링 대 마케팅)

Windows 배포 확인

테스트 디바이스에서:

  1. 레지스트리 편집기 열기(regedit.exe)
  2. 이동:
    • Claude Code: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\ClaudeCode
    • Claude Desktop: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Claude
  3. 레지스트리 값이 존재하는지 확인

Claude Code의 경우:

  • Settings(REG_SZ)라는 이름의 값 찾기
  • 값에 압축된 JSON 포함(줄 바꿈 없음)

Claude Desktop의 경우:

  • 여러 값, 설정 키당 하나씩
  • 각 값은 문자열(부울/숫자의 경우에도)
  1. 애플리케이션 실행(Claude Code 또는 Claude Desktop)
  2. 설정이 시행되는지 확인(예: 모델 선택, 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)은 기록되지 않음
  • 애플리케이션은 레지스트리 정책 위치에서 읽어야 함
  • 앱 버전이 레지스트리 기반 관리 설정을 지원하는지 확인

지원 및 피드백

알 수 없는 도구의 서명 ID를 발견한 경우:

  1. 실행: codesign -dv /Applications/YourApp.app
  2. 캡처: Bundle ID, Team ID, 도메인
  3. 검증 보고서를 첨부하여 GitHub 이슈 제출

여러분의 기여는 전체 Jamf 커뮤니티에 도움이 됩니다!

도움이 되었나요?