Infograb logo
Jamf Pro 통합

장치 신뢰 Jamf Pro 통합을 통해 Jamf Pro 컴퓨터 인벤토리를 Teleport로 자동으로 동기화할 수 있습니다.

Teleport Jamf Pro 서비스는 주기적으로 Jamf Pro에서 컴퓨터 인벤토리를 읽고 이를 Teleport에 동기화하는 별도의 teleport 프로세스입니다. 이 서비스는 증분(“부분”이라고 불림) 및 전체 동기화는 물론, 컴퓨터가 Jamf Pro에서 제거될 경우 Teleport에서도 제거하는 작업을 수행합니다.

Jamf Pro에서 장치를 동기화하는 것은 인벤토리 관리 단계로, 해당하는 tctl devices add 명령을 자동으로 실행하는 것과 같습니다.

기본적인 장치 신뢰 개념과 동작을 보려면 장치 신뢰 가이드를 참조하세요.

In Teleport Enterprise Cloud, Teleport이 the Jamf Pro integration을 관리하며, Teleport 웹 UI에서 the Jamf Pro integration에 등록할 수 있습니다.

Teleport 웹 UI를 방문하고 화면 상단의 메뉴 바에서 Access Management를 클릭하세요.

왼쪽 사이드바에서 Enroll New Integration을 클릭하여 "신규 통합 등록" 페이지로 이동합니다:

"통합 유형 선택" 메뉴에서 귀하의 통합 용 타일을 클릭하세요. 통합 설정 지침과 통합 구성을 위한 양식이 있는 페이지가 표시됩니다.

사전 요구 사항

  • 실행 중인 Teleport 클러스터. Teleport를 시작하려면 가입하기 무료 체험판을 이용해 보세요.

  • tctl 관리 도구 및 tsh 클라이언트 도구 버전 >= 16.2.0.

    tctltsh 다운로드 방법에 대한 지침은 설치를 방문하세요.

  • macOS 장치를 등록하려면 다음이 필요합니다:
  • Windows 장치를 등록하려면 다음이 필요합니다:
  • Linux 장치를 등록하려면 다음이 필요합니다:
    • TPM 2.0이 있는 장치.
    • /dev/tpmrm0 장치를 사용할 수 있는 권한이 있는 사용자(일반적으로 tss 그룹을 사용자에게 할당하여 수행합니다).
    • tsh v15.0.0 이상. Linux용 tsh 설치.
  • 웹 UI 세션을 인증하려면 Teleport Connect가 필요합니다.

1/4단계. Jamf API 자격 증명 생성

v16.0.0 이하

Teleport 버전 v16.0.0 이하에서는 Jamf API 자격 증명을 지원하지 않습니다. 대신 Jamf 사용자 및 비밀번호 인증 사용 아래의 지침을 따르세요.

Jamf API 역할 및 클라이언트에서 역할 및 API 클라이언트를 생성하는 지침을 따르세요. Teleport 전용 역할 및 API 클라이언트 생성을 권장합니다.

Jamf 역할에 "컴퓨터 읽기" 권한이 있는지 확인하세요.

다음 Jamf 쿼리를 사용하여 클라이언트 자격 증명을 테스트할 수 있습니다:

URL='https://yourtenant.jamfcloud.com'
CLIENT_ID='your-client-id'
CLIENT_SECRET='your-client-secret'

# 액세스 토큰을 Jamf에서 가져옵니다.

TOKEN_RESP="$(curl -X POST "$URL/api/oauth/token" \ -H 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode "client_id=$CLIENT_ID" \ --data-urlencode "client_secret=$CLIENT_SECRET" -s)"
echo "$TOKEN_RESP"
ACCESS_TOKEN="$(echo "$TOKEN_RESP" | jq -r .access_token)"

# 액세스 토큰 권한을 테스트합니다.

curl -H "Authorization: Bearer $ACCESS_TOKEN" "$URL/api/v1/computers-inventory?page-size=1"

위 쿼리는 Jamf에서 인벤토리 항목을 인쇄해야 합니다. 권한 오류(401 또는 403)가 발생하면 클라이언트 자격 증명, 역할 권한을 재확인하고 API 클라이언트를 재생성하세요.

2/4단계. Jamf 서비스 구성

호스팅된 Jamf 플러그인

Teleport 클라우드 사용자는 웹 UI에서 호스팅된 Jamf 플러그인을 사용하여 Jamf 통합을 빠르게 시작할 수 있습니다.

Jamf 플러그인을 선택하세요:

필수 정보를 입력한 후 "Jamf 연결" 버튼을 클릭하세요:

Jamf 인벤토리 동기화는 jamf_service 키를 사용하여 구성된 별도의 teleport 프로세스에 의해 수행됩니다. 해당 서비스는 위 단계에서 생성된 Jamf 자격 증명을 필요로 하므로 다른 Teleport 프로세스와는 격리된 상태에서 실행하는 것이 좋습니다.

다음 파일을 /var/lib/teleport.yaml로 저장하고 필요에 따라 편집하세요:

version: v3
teleport:
  # Teleport에 장치를 다시 쓰기 위해 필요합니다.
  proxy_server: teleport.example.com:443 # 변경필요
  join_params:
    token_name: "/tmp/token"

jamf_service:
  enabled: true
  name: jamf
  api_endpoint: https://yourtenant.jamfcloud.com #변경필요
  client_id:    your-client-id #변경필요
  client_secret_file: /var/lib/teleport/jamf_client_secret.txt

auth_service:
  enabled: false

proxy_service:
  enabled: false

ssh_service:
  enabled: false

다음 설정을 적절하게 변경하세요:

  • teleport.proxy_server
  • jamf_service.api_endpoint
  • jamf_service.client_id

마지막으로, Jamf 클라이언트 비밀번호를 /var/lib/teleport/jamf_client_secret 파일에 작성하세요:

sudo nano /var/lib/teleport/jamf_client_secret # 또는 좋아하는 편집기를 사용하세요

오직 `teleport`를 실행하는 OS 사용자만 비밀번호 파일에 접근할 수 있어야 합니다.

sudo chmod 400 /var/lib/teleport/jamf_client_secret
sudo chown teleport /var/lib/teleport/jamf_client_secret

3/4단계. 조인 토큰 생성

Jamf 서비스는 장치를 Teleport에 쓰기 위해 MDM 토큰이 필요합니다. 로컬 작업 공간에서 아래와 같이 토큰을 생성하세요:

tctl tokens add --type=mdm
초대 토큰: efgh456-insecure-do-not-use-this이 토큰은 30분 후에 만료됩니다.
Jamf 서비스 호스트에서 이 토큰을 사용하여 Teleport에 MDM 서비스를 추가하세요.
> teleport start \ --token=efgh456-insecure-do-not-use-this \ --ca-pin=sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678\ --config=/path/to/teleport.yaml

Jamf 서비스 호스트에서 토큰을 /tmp/token이라는 파일에 작성하세요.

4/4단계. Jamf 서비스 시작

위에서 생성한 토큰을 사용하여 서비스를 시작하세요:

호스트가 부팅될 때 your Teleport instance가 자동으로 시작되도록 시스템 데몬 서비스를 생성하여 구성합니다. 지침은 your Teleport instance를 설치한 방법에 따라 다릅니다.

your Teleport instance를 실행할 호스트에서 Teleport를 활성화하고 시작하십시오:

sudo systemctl enable teleport
sudo systemctl start teleport

your Teleport instance를 실행할 호스트에서 Teleport에 대한 시스템 데몬 서비스 구성을 생성하고, Teleport 서비스를 활성화한 후 Teleport를 시작하십시오:

sudo teleport install systemd -o /etc/systemd/system/teleport.service
sudo systemctl enable teleport
sudo systemctl start teleport

your Teleport instance의 상태는 systemctl status teleport로 확인할 수 있으며, 로그는 journalctl -fu teleport로 볼 수 있습니다.

초기 동기화는 몇 분 내에 수행되어야 합니다. Teleport 서비스 로그에서 확인할 수 있습니다:

2023-06-21T17:26:40-03:00 INFO [JAMF:1]    Jamf 서비스가 성공적으로 시작되었습니다. pid:25757.1 service/service.go:228
2023-06-21T17:26:40-03:00 INFO [JAMF:1]    동기화 시작 CutTime:0001-01-01 00:00:00 +0000 UTC FilterRSQL: Mode:1 OnMissing:DELETE pid:25757.1 service/service.go:261
2023-06-21T17:26:40-03:00 INFO [JAMF:1]    장치 동기화 보고서, 페이지 #0 삭제:0 실패:0 pid:25757.1 삽입:1 service/service.go:666
2023-06-21T17:26:40-03:00 INFO [JAMF:1]    동기화 완료 pid:25757.1 service/service.go:277

기본 구성으로, 서비스는 몇 시간마다 Jamf에서 장치를 동기화합니다. 하루에 한 번 전체 인벤토리 동기화가 수행되어 Jamf의 모든 장치를 열거하고 Teleport에서의 추가 및 제거를 반영합니다.

초기 동기화가 수행된 후, tctl devices ls를 사용하여 동기화된 장치를 확인할 수 있습니다:

tctl devices ls
자산 태그 OS 등록 상태 장치 ID------------ ------- ------------- ------------------------------------CXXXXXXXXX17 macOS 등록되지 않음 20ec6373-9e8e-46e0-8f1c-47ad6b06a768CXXXXXXXXX2T macOS 등록되지 않음 79755778-7cbe-4e2c-83ec-7eaa3d4d7e36CXXXXXXXXX3T macOS 등록되지 않음 665e59d5-393a-4894-841d-edad06329717CXXXXXXXXX4T macOS 등록되지 않음 dd032e90-bfb0-47d5-bce5-e57545f6788fCXXXXXXXXX5T macOS 등록되지 않음 bf189863-a94a-40dc-9013-d96f8dada2f1(...)

선택 사항: 동기화 일정 사용자 정의

위 단계에서 설명한 최소 구성을 사용할 때, Jamf 서비스는 기본 동기화 일정을 사용합니다. 동기화 간격을 사용자 정의하고 Jamf에서 동기화되는 장치 세트를 RSQL 필터를 적용하여 조정할 수 있습니다. Jamf에서는 전체 동기화를 24시간마다 한 번 이하로 수행할 것을 권장합니다.

기본 "인벤토리" 구성은 대략 다음과 같습니다:

jamf_service:
  enabled: true
  # ...
  inventory:
  - sync_period_partial: 6h
    sync_period_full: 24h
    on_missing: DELETE
    filter_rsql: general.remoteManagement.managed==true

구성을 분석하면, 다음 키를 얻습니다:

sync_period_*

  • sync_period_partial: 부분 동기화 주기. 부분 동기화는 새롭고 수정된 장치를 가져오려고 시도하지만 Jamf 인벤토리를 전체적으로 스캔하지 않습니다.
  • sync_period_full: 전체 동기화 주기. 전체 동기화는 Jamf 인벤토리를 전체적으로 스캔하고 새/수정된 장치와 Jamf에서의 제거를 처리합니다.

두 동기화 주기는 주기를 0 또는 -1로 설정하여 비활성화할 수 있습니다. Teleport가 두 인벤토리를 완전히 동기화할 수 있는 기회를 갖도록 정기적으로 전체 동기화를 수행하는 것이 좋습니다.

on_missing

on_missing 키는 Jamf에서 삭제되었지만 Teleport에 존재하는 장치에 대해 수행할 작업을 결정합니다. 가능한 작업은 다음과 같습니다:

  • DELETE: Jamf에서 제거된 장치는 결국 Teleport에서 제거됩니다. (전체 동기화가 필요합니다.)
  • NOOP: Jamf에서 제거된 장치는 Teleport 인벤토리에 남아 있을 수 있습니다.

Jamf에서 동기화된 장치만 이러한 방식으로 삭제될 수 있습니다. tctl devices add를 통해 수동으로 작성되었거나 다른 소스에서 작성된 장치는 삭제되지 않습니다.

원하는 장치를 즉시 제거하려면 먼저 Teleport에서 해당 장치를 잠그고 그 후 Jamf에서 제거해야 합니다:

tctl devices lock --asset-tag=SERIAL_NUMBER --message='잠근 이유'
"잠그기"라는 이름의 잠금을 생성했습니다 "a2f1491c-4a3e-4daf-9c83-2fe931668076".

tctl devices rm를 통한 수동 제거도 가능하지만, 장치가 여전히 Jamf 인벤토리에 있는 경우 다음 동기화에서 재생성됩니다.

filter_rsql

filter_rsql 키는 장치 쿼리 시 Jamf Pro API 필터를 적용합니다. 가능한 필터 값은 https://developer.jamf.com/jamf-pro/reference/get_v1-computers-inventory를 참조하세요.

선택 사항: 여러 소스 동기화

인벤토리를 동기화할 때 Jamf 서비스는 모든 동기화된 장치의 소유권을 주장합니다. 이는 장치의 source 필드를 검사하여 확인할 수 있습니다:

# tctl get device/mydevice
kind: device
metadata:
  name: 20ec6373-9e8e-46e0-8f1c-47ad6b06a768
spec:
  asset_tag: mydevice
  os_type: macos
  # ...
  source:         # 인벤토리 동기화 시 설정됨
    name: jamf    # jamf_service.name에서 복사됨
    origin: jamf  # Jamf 서비스의 경우 항상 "jamf"
  update_time: "2023-06-21T19:44:40.40601Z"
version: v1

장치 소유권은 몇 가지 상황에서 중요하지만, "on_missing=DELETE" 동기화를 실행할 때 특히 중요합니다. 동기화 소스가 소유한 장치만 삭제 대상으로 간주됩니다.

여러 Jamf 소스를 실행하고 싶다면 각기 다른 구성 및 자격 증명을 가진 여러 Jamf 서비스를 간단히 실행할 수 있습니다. 각 서비스는 다른 "jamf_service.name"을 가지고 있어야 합니다. 예를 들어:

teleport.yaml - 서비스 #1:

version: v3
teleport:
  proxy_server: teleport.example.com:443

jamf_service:
  enabled: true
+ name: jamf1
+ api_endpoint: https://tenant1.jamfcloud.com
+ client_id: tenant1-id
+ client_secret_file: /var/lib/teleport/jamf1_client_secret.txt

auth_service:
  enabled: false

proxy_service:
  enabled: false

ssh_service:
  enabled: false

teleport.yaml - 서비스 #2:

version: v3
teleport:
  proxy_server: teleport.example.com:443

jamf_service:
  enabled: true
+ name: jamf2
+ api_endpoint: https://tenant2.jamfcloud.com
+ client_id: tenant2-id
+ client_secret_file: /var/lib/teleport/jamf2_client_secret.txt

auth_service:
  enabled: false

proxy_service:
  enabled: false

ssh_service:
  enabled: false

선택 사항: Jamf 사용자 및 비밀번호 인증 사용

v16.1.0 이상

Teleport 버전 v16.1.0 이상에서는 Jamf API 자격 증명를 지원합니다. 사용자 이름 및 비밀번호 인증보다는 API 자격 증명을 사용하는 것이 좋습니다.

인벤토리 동기화를 위해 읽기 전용 Jamf 사용자를 생성하세요.

  1. https://yourtenant.jamfcloud.com/accounts.html에 접근합니다. 인벤토리 동기화로 yourtenant를 Jamf Pro 계정으로 교체하세요.

  2. 다음 설정으로 새 표준 계정을 만듭니다:

    • 사용자 이름: teleport (원하는 대로 변경 가능)
    • 접근 수준: 전체 접근
    • 권한 집합: 사용자 정의
    • 접근 상태: 활성
    • 비밀번호: (원하는 강력한 비밀번호)
    • 권한:
      • 고급 컴퓨터 검색: 읽기
      • 컴퓨터: 읽기

    사용자 이름과 비밀번호를 기록해 두세요.

    사용자 계정 설정:

    Jamf 사용자 설정

    권한 설정:

다음 단계

동기화된 장치를 사용자 로그인 시 자동으로 등록하려면 자동 등록을 참조하세요.

Teleport 원문 보기