인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
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
클라이언트 도구.tctl
및tsh
다운로드에 대한 지침은 설치 를 방문하십시오.
- macOS 장치를 등록하려면 다음이 필요합니다:
- 서명되고 공증된
tsh
바이너리. macOS tsh 설치 프로그램 다운로드.
- 서명되고 공증된
- Windows 장치를 등록하려면 다음이 필요합니다:
- TPM 2.0이 포함된 장치.
- 관리자 권한이 있는 사용자. 이는 등록 과정에서만 필요합니다.
tsh
v13.1.2 이상. Windows tsh 설치 프로그램 다운로드.
- 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_secretsudo 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 teleportsudo systemctl start teleport
your Teleport instance를 실행할 호스트에서 Teleport의 systemd 서비스 구성을 만들고, Teleport 서비스를 활성화한 후 Teleport를 시작합니다:
sudo teleport install systemd -o /etc/systemd/system/teleport.servicesudo systemctl enable teleportsudo 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 사용자를 생성합니다.
-
https://yourtenant.jamfcloud.com/accounts.html
에 접근하고,yourtenant
를 Jamf Pro 계정으로 변경합니다. -
다음 설정으로 새로운 표준 계정을 생성합니다:
- 사용자 이름: teleport (원하는 대로 변경 가능)
- 접근 수준: 전체 접근
- 권한 세트: 사용자 정의
- 접근 상태: 활성화됨
- 비밀번호: (선택한 강력한 비밀번호)
- 권한:
- 고급 컴퓨터 검색: 읽기
- 컴퓨터: 읽기
사용자 및 비밀번호를 기록해 두세요.
사용자 계정 설정:
권한 설정:
다음 단계
자동 등록으로 사용자 로그인 시 동기화된 장치를 자동으로 등록합니다.