Infograb logo
Jamf Pro 통합

디바이스 신뢰 Jamf Pro 통합은 Jamf Pro 컴퓨터 인벤토리를 Teleport에 자동으로 동기화할 수 있게 해줍니다.

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

Jamf Pro에서 디바이스 동기화는 상대하는 tctl devices add 명령을 자동으로 실행하는 것과 동등한 인벤토리 관리 단계입니다.

기본적인 디바이스 신뢰 개념 및 동작에 대한 내용은 디바이스 신뢰 가이드를 참조하세요.

Teleport Enterprise Cloud에서 Teleport는 Jamf Pro 통합 을(를) 관리하며, Teleport 웹 UI에서 Jamf Pro 통합 을(를) 등록할 수 있습니다.

Teleport 웹 UI를 방문하여 화면 상단 메뉴 바에서 Access Management를 클릭하십시오.

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

"통합 유형 선택" 메뉴에서 귀하의 통합에 대한 타일을 클릭하십시오. 그럼 통합 설정을 위한 지침이 포함된 페이지와 통합 구성을 위한 양식이 표시됩니다.

전제 조건

  • 실행 중인 Teleport 클러스터. Teleport를 시작하려면 가입하여 무료 평가판을 이용해 보십시오.

  • tctl 관리자 도구 및 tsh 클라이언트 도구.

    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 Cloud 사용자는 웹 UI에서 호스팅된 Jamf 플러그인을 사용하여 Jamf 통합을 빠르게 시작할 수 있습니다.

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

필수 정보를 입력하고 "Connect Jamf" 버튼을 클릭하세요:

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

다음 파일을 /var/lib/teleport.yaml 로 저장하고 필요에 맞게 수정하세요:

version: v3
teleport:
  # Teleport에 디바이스를 다시 쓰기 위해 필요합니다.
  proxy_server: teleport.example.com:443 # CHANGEME
  join_params:
    token_name: "/tmp/token"

jamf_service:
  enabled: true
  name: jamf
  api_endpoint: https://yourtenant.jamfcloud.com # CHANGEME
  client_id: your-client-id # CHANGEME
  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가 자동으로 시작되도록 systemd 서비스를 생성하여 구성합니다. 지침은 your Teleport instance를 설치한 방법에 따라 다릅니다.

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

sudo systemctl enable teleport
sudo systemctl start teleport

your Teleport instance를 실행할 호스트에서 Teleport의 systemd 서비스 구성을 만들고, Teleport 서비스를 활성화한 후 Teleport를 시작합니다:

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

systemctl status teleport 로 your Teleport instance의 상태를 확인하고, 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 서비스는 기본 동기화 일정을 사용합니다. RSQL 필터를 적용하여 Jamf에서 동기화할 장치의 집합 및 동기화 간격을 사용자 정의하는 것이 가능합니다. Jamf는 하루에 한 번 이상 전체 동기화를 권장합니다.

기본 "인벤토리" 구성은 대략 아래와 같습니다:

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 필터를 적용합니다. 가능한 필터 값에 대해서는 Jamf Pro API 문서를 참조하십시오.

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

인벤토리를 동기화할 때, 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 원문 보기