콘텐츠로 이동

배포 모델

관리형 설치는 하나 이상의 소스에서 구성을 받는다. 관리 구성을 적용하는 방법은 세 가지이며, 서로 조합된다. 프로비저닝 프로필이 신뢰를 부트스트랩하고, 중앙 서명 정책이 살아 있는 정책을 네트워크로 전달하며, 머신 정책이 신뢰된 로컬 경로에서 정책을 적용한다. 이 문서는 각 모델, 사용 시점, 소스가 결합되는 방식을 설명한다.

정책 문서 스키마는 정책 스키마 레퍼런스를 참고한다. 중앙 정책을 서빙하는 서버를 세우는 방법은 정책 서버 배포와 운영을 참고한다.

세 가지 모델

머신 정책

머신 정책은 관리자만 쓸 수 있는 로컬 경로에 둔 서명되지 않은 EnterprisePolicy JSON 문서다. 그 경로로 신뢰한다. 경로가 곧 신뢰 경계이므로 정책에 서명이 필요 없다. Backend.AI GO는 다음 순서로 찾는다.

  • AIGO_POLICY 환경 변수.
  • 작업 디렉터리의 ./aigo-policy.json.
  • 사용자 설정 디렉터리의 ~/.config/aigo/policy.json.
  • /etc/aigo/policy.json(Unix 시스템 경로).

단일 머신, 실험실, 또는 MDM 도구나 구성 관리자가 이미 파일로 통제하는 배포에는 머신 정책을 쓴다. 머신 정책은 강제 레이어로 적용되며 지정한 설정을 잠근다. 네트워크나 정책 서버가 필요 없다.

중앙 서명 정책

중앙 서명 정책은 정책 서버에서 네트워크로 가져오는 Ed25519 서명 SignedPolicy 문서다. 프로비저닝 신뢰 앵커로 검증하고, 일정 간격으로 폴링하며, 로컬에 캐시한다. 신뢰는 경로가 아니라 서명에서 오므로, 문서는 신뢰되지 않은 네트워크를 거쳐 이동할 수 있다.

검증된 정책은 <app_data>/enterprise/central_policy.json에 캐시되며, 로드할 때마다 신뢰 앵커로 다시 검증된다. 기기는 등록 시 반환된 간격(pollIntervalSecs)으로 서버를 폴링하면서, 먼저 저렴한 정책 버전을 비교하고 id가 바뀐 경우에만 전체 문서를 내려받는다.

각 기기를 건드리지 않고 정책 업데이트를 받아야 하는 플릿에는 중앙 정책을 쓴다. 중앙 정책은 강제 레이어로 적용되며 지정한 설정을 잠근다.

프로비저닝 프로필

프로비저닝 프로필은 기기를 조직에 연결하고 나머지 두 모델을 부트스트랩한다. 신뢰 앵커(중앙 정책과 오프라인 라이선스를 검증하는 공개 키), 관리 서버 URL, 네트워크 호출 전에 설치되는 선택적 부트스트랩 이그레스 방화벽, 선택적 일회용 등록 토큰을 담는다. 프로필을 탐색하는 것이 설치를 관리 모드로 만든다.

Backend.AI GO는 다음 순서로 프로필을 탐색한다. CLI 플래그나 환경 변수, aigo://enroll 딥링크, OS 관리 경로(설치 관리자나 MDM 배포), 이전 실행에서 캐시된 프로필. 검증된 프로필은 <app_data>/enterprise/provision.json에 캐시되며, 일회용 토큰은 첫 사용 후 제거된다. 기기 온보딩은 기기 등록과 신뢰 앵커에서 다룬다.

소스가 결합되는 방식: ConfigSource 우선순위

실효 설정은 각 소스를 사용자 설정 위에 RFC 7386 JSON 병합 패치로 정해진 우선순위 순서로 쌓아 결정한다. 각 설정의 출처는 ConfigSource로 보고된다.

우선순위 ConfigSource 와이어 값 잠금? 출처
1(가장 낮음) 빌트인 기본값 builtin_default 아니오 컴파일된 기본값
2 권장값 recommended 아니오 빈 곳만 채우는 권고 레이어
3 사용자 설정 user_settings 아니오 사용자 본인의 설정
4 머신 정책 machine_policy 신뢰된 경로의 서명되지 않은 로컬 정책
5(가장 높음) 중앙 정책 central_policy 서버의 Ed25519 서명 정책

우선순위가 높은 쪽이 이긴다. 권장 레이어는 사용자가 설정하지 않은 항목만 채운다. 사용자 값을 덮어쓰지 않고 잠그지도 않는다. 두 정책 소스는 강제다. 사용자 값을 덮어쓰고 지정한 모든 경로를 잠근다.

machine_policycentral_policy만 설정을 잠근다. 잠긴 설정은 사용자가 바꿀 수 없다. 입력이 비활성화되고 "조직에서 관리함" 배지가 붙으며, 잠긴 설정에 대한 사용자 쓰기는 조용히 버리지 않고 백엔드가 거부한다. 머신 정책과 중앙 정책이 같은 경로를 지정하면 중앙 정책이 이긴다. 가장 높은 우선순위 소스이기 때문이다.

병합 패치와 잠금 동작(settingsOverrideslockedPaths가 설정을 지정하는 방식)은 모든 소스에서 동일하며 정책 스키마 레퍼런스에 정리돼 있다.

해석된 상태 확인

두 전송 경로가 하나의 공유 서비스에서 해석된 관리 상태를 노출한다. Tauri 명령 get_managed_status와 REST 경로 GET /api/v1/enterprise/status다. 상태는 설치가 관리되는지, 조직 레이블, 소스 맵(어떤 ConfigSource가 각 관리 경로를 결정했는지), 잠긴 경로 집합, 이그레스 상태, 오프라인 라이선스 상태를 보고한다.

앱에서는 같은 정보가 설정의 조직 탭에 나타난다. 등록 상태, 잠긴 설정 개수, 이그레스 상태, 에어갭 표시, 라이선스 배지다. 관리되지 않는 설치는 managed: false에 맵이 비어 있고 이그레스가 강제되지 않으므로, 동작이 그대로다.

모델 선택

모델은 배타적이지 않다. 보통 플릿은 셋을 모두 쓴다. 프로비저닝 프로필로 등록하고 신뢰를 세우며, 중앙 정책으로 살아 있는 구성을 받고, (선택적으로) 머신 정책으로 첫 폴링 전에도 유지되는 기준선을 둔다.

필요 사용
파일로 구성하는 단일 머신이나 실험실 머신 정책 단독
정책 업데이트를 중앙에서 받는 플릿 프로비저닝 프로필 + 중앙 정책
첫 중앙 폴링 전에도 유지되는 기준선 머신 정책 + 중앙 정책
완전 오프라인 관리형 설치 에어갭 모드 머신 정책(에어갭 배포 참고)

애플리케이션 데이터 디렉터리

캐시된 중앙 정책, 프로비저닝 프로필, 기기 ID, 오프라인 라이선스는 애플리케이션 데이터 디렉터리 아래에 있다.

  • Linux: ~/.local/share/ai.backend.go/enterprise/
  • Windows: %APPDATA%\ai.backend.go\enterprise\
  • macOS: ~/Library/Application Support/ai.backend.go/enterprise/

이들은 앱이 쓰는 사용자별 캐시다. 관리자가 관리하는 입력(머신 정책과 프로비저닝 프로필 배포)은 위에 적은 OS 경로와 기기 등록과 신뢰 앵커에 있는 경로에 둔다.

다음 단계