InfoGrab Docs

Jamf Pro 연동

요약

Device Trust Jamf Pro 연동을 통해 Jamf Pro 컴퓨터 인벤토리를 Teleport에 자동으로 동기화할 수 있습니다. Teleport Jamf Pro 서비스는 별도의 teleport 프로세스로, Jamf Pro에서 컴퓨터 인벤토리를 주기적으로 읽어 Teleport에 동기화합니다.

Device Trust Jamf Pro 연동을 통해 Jamf Pro 컴퓨터 인벤토리를 Teleport에 자동으로 동기화할 수 있습니다.

작동 방식#

Teleport Jamf Pro 서비스는 별도의 teleport 프로세스로, Jamf Pro에서 컴퓨터 인벤토리를 주기적으로 읽어 Teleport에 동기화합니다. 증분("부분") 동기화와 전체 동기화를 모두 수행하며, Jamf Pro에서 컴퓨터가 제거되면 Teleport에서도 제거합니다.

Jamf Pro에서 디바이스를 동기화하는 것은 인벤토리 관리 단계로, 해당하는 tctl devices add 명령을 자동으로 실행하는 것과 동일합니다.

기본적인 Device Trust 개념과 동작에 대해서는 Device Trust 가이드를 참조하세요.

이 연동은 Teleport Cloud에서 호스팅됩니다

In Teleport Enterprise Cloud, Teleport manages the Jamf Pro integration for you, and you can enroll the Jamf Pro integration from the Teleport Web UI.

Visit the Teleport Web UI and on the left sidebar, click Add New followed by Integration:

Enroll an Access Request plugin

On the "Select Integration Type" menu, click the tile for your integration. You will see a page with instructions to set up the integration, as well as a form that you can use to configure the integration.

사전 요구 사항#

  • A running Teleport Enterprise cluster. If you want to get started with Teleport, sign up for a free trial or set up a demo environment.

  • The tctl and tsh clients.

    Installing `tctl` and `tsh` clients
    1. Determine the version of your Teleport cluster. The tctl and tsh clients must be at most one major version behind your Teleport cluster version. Send a GET request to the Proxy Service at /v1/webapi/find and use a JSON query tool to obtain your cluster version. Replace with the web address of your Teleport Proxy Service:

      $ TELEPORT_DOMAIN=
      $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')"
      
    2. Follow the instructions for your platform to install tctl and tsh clients:

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

v16.0.0 이하

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

역할 및 API 클라이언트를 생성하려면 Jamf API 역할 및 클라이언트의 지침을 따르세요. Teleport 전용으로 역할과 API 클라이언트를 생성하는 것을 권장합니다.

Jamf 역할에 "Read Computers" 권한이 있는지 확인하세요.

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

You can check the status of your Teleport instance with systemctl status teleport and view its logs with journalctl -fu teleport.

초기 동기화는 몇 분 안에 발생합니다. Teleport 서비스 로그에서 확인할 수 있습니다:

2023-06-21T17:26:40-03:00 INFO [JAMF:1]    Jamf service successfully started pid:25757.1 service/service.go:228
2023-06-21T17:26:40-03:00 INFO [JAMF:1]    Starting sync 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]    Device sync report, page #0 deletes:0 failures:0 pid:25757.1 upserts:1 service/service.go:666
2023-06-21T17:26:40-03:00 INFO [JAMF:1]    Sync complete pid:25757.1 service/service.go:277

기본 구성을 사용하면 서비스가 몇 시간마다 Jamf에서 디바이스를 동기화합니다. 하루에 한 번 전체 인벤토리 동기화가 수행되어 Jamf의 모든 디바이스를 열거하고 Teleport에서 추가 또는 제거를 반영합니다.

초기 동기화 후 tctl devices ls를 사용하여 동기화된 디바이스를 확인할 수 있습니다:

$ tctl devices ls
Asset Tag    OS    Source Enroll Status Owner Device ID
------------ ----- ------ ------------- ----- ------------------------------------
CXXXXXXXXX17 macOS Jamf   not enrolled        20ec6373-9e8e-46e0-8f1c-47ad6b06a768
CXXXXXXXXX2T macOS Jamf   not enrolled        79755778-7cbe-4e2c-83ec-7eaa3d4d7e36
CXXXXXXXXX3T macOS Jamf   not enrolled        665e59d5-393a-4894-841d-edad06329717
CXXXXXXXXX4T macOS Jamf   not enrolled        dd032e90-bfb0-47d5-bce5-e57545f6788f
CXXXXXXXXX5T macOS Jamf   not enrolled        bf189863-a94a-40dc-9013-d96f8dada2f1
(...)

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

위 단계에서 설명한 최소 구성을 사용할 때 Jamf 서비스는 기본 동기화 일정을 사용합니다. Jamf Pro API에서 제공하는 RSQL 필터를 적용하여 동기화 간격 및 Jamf에서 동기화되는 디바이스 집합을 사용자 지정할 수 있습니다. 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='reason for locking'
Created a lock with name "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:         # Set during inventory sync
    name: jamf    # Copied from jamf_service.name
    origin: jamf  # Always "jamf" for Jamf service
  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: (=clusterDefaults.clusterName=):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. <code>[jamf.api_endpoint]</code>/accounts.html에 액세스하여 yourtenant를 Jamf Pro 계정으로 교체하세요.

  2. 다음 설정으로 새 표준 계정을 생성하세요:

    • 사용자 이름: teleport (원하는 대로 변경)
    • 액세스 레벨: 전체 액세스
    • 권한 집합: 사용자 지정
    • 액세스 상태: 활성화됨
    • 비밀번호: (원하는 강력한 비밀번호)
    • 권한:
      • 고급 컴퓨터 검색: 읽기
      • 컴퓨터: 읽기

    사용자와 비밀번호를 기록해 두세요.

    사용자 계정 설정: Jamf user setup

    권한 설정: Jamf privileges setup

다음 단계#

자동 등록을 사용하여 사용자 로그인 시 동기화된 디바이스를 자동으로 등록하세요.

Jamf Pro 연동

원문 보기
요약

Device Trust Jamf Pro 연동을 통해 Jamf Pro 컴퓨터 인벤토리를 Teleport에 자동으로 동기화할 수 있습니다. Teleport Jamf Pro 서비스는 별도의 teleport 프로세스로, Jamf Pro에서 컴퓨터 인벤토리를 주기적으로 읽어 Teleport에 동기화합니다.

Device Trust Jamf Pro 연동을 통해 Jamf Pro 컴퓨터 인벤토리를 Teleport에 자동으로 동기화할 수 있습니다.

작동 방식#

Teleport Jamf Pro 서비스는 별도의 teleport 프로세스로, Jamf Pro에서 컴퓨터 인벤토리를 주기적으로 읽어 Teleport에 동기화합니다. 증분("부분") 동기화와 전체 동기화를 모두 수행하며, Jamf Pro에서 컴퓨터가 제거되면 Teleport에서도 제거합니다.

Jamf Pro에서 디바이스를 동기화하는 것은 인벤토리 관리 단계로, 해당하는 tctl devices add 명령을 자동으로 실행하는 것과 동일합니다.

기본적인 Device Trust 개념과 동작에 대해서는 Device Trust 가이드를 참조하세요.

이 연동은 Teleport Cloud에서 호스팅됩니다

In Teleport Enterprise Cloud, Teleport manages the Jamf Pro integration for you, and you can enroll the Jamf Pro integration from the Teleport Web UI.

Visit the Teleport Web UI and on the left sidebar, click Add New followed by Integration:

Enroll an Access Request plugin

On the "Select Integration Type" menu, click the tile for your integration. You will see a page with instructions to set up the integration, as well as a form that you can use to configure the integration.

사전 요구 사항#

  • A running Teleport Enterprise cluster. If you want to get started with Teleport, sign up for a free trial or set up a demo environment.

  • The tctl and tsh clients.

    Installing `tctl` and `tsh` clients
    1. Determine the version of your Teleport cluster. The tctl and tsh clients must be at most one major version behind your Teleport cluster version. Send a GET request to the Proxy Service at /v1/webapi/find and use a JSON query tool to obtain your cluster version. Replace with the web address of your Teleport Proxy Service:

      $ TELEPORT_DOMAIN=
      $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')"
      
    2. Follow the instructions for your platform to install tctl and tsh clients:

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

v16.0.0 이하

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

역할 및 API 클라이언트를 생성하려면 Jamf API 역할 및 클라이언트의 지침을 따르세요. Teleport 전용으로 역할과 API 클라이언트를 생성하는 것을 권장합니다.

Jamf 역할에 "Read Computers" 권한이 있는지 확인하세요.

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

You can check the status of your Teleport instance with systemctl status teleport and view its logs with journalctl -fu teleport.

초기 동기화는 몇 분 안에 발생합니다. Teleport 서비스 로그에서 확인할 수 있습니다:

2023-06-21T17:26:40-03:00 INFO [JAMF:1]    Jamf service successfully started pid:25757.1 service/service.go:228
2023-06-21T17:26:40-03:00 INFO [JAMF:1]    Starting sync 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]    Device sync report, page #0 deletes:0 failures:0 pid:25757.1 upserts:1 service/service.go:666
2023-06-21T17:26:40-03:00 INFO [JAMF:1]    Sync complete pid:25757.1 service/service.go:277

기본 구성을 사용하면 서비스가 몇 시간마다 Jamf에서 디바이스를 동기화합니다. 하루에 한 번 전체 인벤토리 동기화가 수행되어 Jamf의 모든 디바이스를 열거하고 Teleport에서 추가 또는 제거를 반영합니다.

초기 동기화 후 tctl devices ls를 사용하여 동기화된 디바이스를 확인할 수 있습니다:

$ tctl devices ls
Asset Tag    OS    Source Enroll Status Owner Device ID
------------ ----- ------ ------------- ----- ------------------------------------
CXXXXXXXXX17 macOS Jamf   not enrolled        20ec6373-9e8e-46e0-8f1c-47ad6b06a768
CXXXXXXXXX2T macOS Jamf   not enrolled        79755778-7cbe-4e2c-83ec-7eaa3d4d7e36
CXXXXXXXXX3T macOS Jamf   not enrolled        665e59d5-393a-4894-841d-edad06329717
CXXXXXXXXX4T macOS Jamf   not enrolled        dd032e90-bfb0-47d5-bce5-e57545f6788f
CXXXXXXXXX5T macOS Jamf   not enrolled        bf189863-a94a-40dc-9013-d96f8dada2f1
(...)

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

위 단계에서 설명한 최소 구성을 사용할 때 Jamf 서비스는 기본 동기화 일정을 사용합니다. Jamf Pro API에서 제공하는 RSQL 필터를 적용하여 동기화 간격 및 Jamf에서 동기화되는 디바이스 집합을 사용자 지정할 수 있습니다. 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='reason for locking'
Created a lock with name "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:         # Set during inventory sync
    name: jamf    # Copied from jamf_service.name
    origin: jamf  # Always "jamf" for Jamf service
  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: (=clusterDefaults.clusterName=):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. <code>[jamf.api_endpoint]</code>/accounts.html에 액세스하여 yourtenant를 Jamf Pro 계정으로 교체하세요.

  2. 다음 설정으로 새 표준 계정을 생성하세요:

    • 사용자 이름: teleport (원하는 대로 변경)
    • 액세스 레벨: 전체 액세스
    • 권한 집합: 사용자 지정
    • 액세스 상태: 활성화됨
    • 비밀번호: (원하는 강력한 비밀번호)
    • 권한:
      • 고급 컴퓨터 검색: 읽기
      • 컴퓨터: 읽기

    사용자와 비밀번호를 기록해 두세요.

    사용자 계정 설정: Jamf user setup

    권한 설정: Jamf privileges setup

다음 단계#

자동 등록을 사용하여 사용자 로그인 시 동기화된 디바이스를 자동으로 등록하세요.