클라우드 제어
출시한 뒤에도 끌 수 있는 산출물 — 포털에서 비활성화하거나 다시 켜면 다음 확인 시점에 적용됩니다.
MagicLock이 기본으로 암호화하는 모든 것은 완전히 오프라인으로, 영원히 실행됩니다. 이것은 약속이고, 약속에는 양면이 있습니다. 오프라인 산출물은 한번 내보내면 다시는 손이 닿지 않습니다. 클라우드 제어는 손이 닿아야만 하는 경우를 위한 선택 사항입니다.
보호할 때 --web-gate를 붙이면, 산출물은 복호화하기 전에 당신이 통제하는 서명된 승인을 받아옵니다. 포털에서 스위치를 내리면 멈춥니다 — 실행 중인 모든 곳에서, 각자의 다음 확인 시점에. 다시 올리면 재배포 없이 그대로 다시 동작합니다.
| 오프라인 산출물(기본) | 클라우드 제어(--web-gate) | |
|---|---|---|
| 약속 | 항상 실행됨 — 구독 만료나 좌석 변경과 무관 | 당신이 결정 — 포털에서 중지/재개 |
| 실행 시 네트워크 | 전혀 없음 | 승인이 유효한 동안 없음, 이후 갱신 |
| 출시 후 멈출 수 있나 | 아니오 — 의도된 설계 | 예, 다음 확인 시점에 |
임대와 구독, 반드시 종료되어야 하는 평가판, 잔금 회수 담보, 유출 차단에 적합합니다. 그 밖의 경우에는 기본 오프라인 산출물이면 충분합니다. 이 선택은 계정이 아니라 산출물 단위입니다 — 한 제품 안에서 둘을 섞어 쓸 수 있습니다.
켜기
magiclock protect app.py --web-gate
magiclock protect-model weights.bin --web-gate
magiclock build app.py --web-gate등록은 암호화하는 그 시점에 이루어지며, 온라인 상태이고 로그인되어 있어야 합니다. 클라우드 제어 산출물을 만드는 데에는 오프라인 대체 경로가 없습니다 — 아무도 등록하지 않은 산출물은 애초에 제어할 수 없으며, MagicLock은 할 수 있는 척하지 않습니다.
실행할 때 일어나는 일
- 산출물이 서버에 서명된 허용 또는 거부를 요청합니다.
- 그 승인이 유효한 동안에는 네트워크를 전혀 쓰지 않고 실행됩니다 — 실행할 때마다 서버에 연결하는 것이 아닙니다.
- 승인이 만료되면 갱신합니다. 거부를 받으면 즉시 멈춥니다 — 유예는 없습니다.
- 네트워크 단절로 갱신에 실패하면 유예 기간 안에서는 계속 실행되고, 그 기간이 지나면 fail-closed 됩니다.
알아둘 만한 두 가지. 거부는 끈적합니다: 연결이 끊긴 기기에서 오래된 승인 캐시를 재생해도 이미 중지된 산출물을 되살릴 수 없습니다. 그리고 첫 실행은 온라인이어야 합니다 — 아직 캐시된 승인이 없어 기댈 것이 없기 때문입니다.
유예 기간
--gate-grace는 마지막 승인 이후 산출물이 오프라인으로 얼마나 더 동작할지를 정합니다.
magiclock protect app.py --web-gate --gate-grace 24h
magiclock protect app.py --web-gate --gate-grace 7d1h부터 30d까지 지정할 수 있고 기본값은 12h입니다. 짧을수록 통제는 강해지지만 고객 쪽 네트워크에 더 의존하게 됩니다 — 불안의 크기가 아니라 실제 배포 형태에 맞춰 고르세요. --gate-grace는 --web-gate와 함께 쓸 때만 적용됩니다.
이미 내보낸 것 관리하기
고객 포털의 산출물 페이지에 등록한 모든 산출물과 상태, 최근 활동이 나열됩니다. 비활성화는 해당 산출물의 다음 확인 시점에 적용되고, 다시 켜는 것도 같은 속도로 반영됩니다.
명령줄에서:
magiclock artifacts # id, 레이블, 상태, 게이트 활동산출물 삭제는 영구적입니다. 그 뒤로는 계속 거부를 반환하며 되돌릴 수 없습니다. 정확히 그것을 의도한 경우가 아니라면 비활성화를 사용하세요.
비활성화를 더 빨리 적용하기
클라우드 제어 산출물은 자체 확인 시점에 다시 확인하므로, 오래 실행되는 프로세스(서버, 워커)는 시작할 때 받아온 승인으로 계속 동작할 수 있습니다. 포털에서의 비활성화를 그런 프로세스에 빠르게 적용하려면 타이머로 magiclock.revalidate()를 호출하세요 — 그 자리에서 새 승인을 강제로 받아옵니다. 이것이 "몇 초 안에 멈춤"과 "언젠가 멈춤"의 차이입니다.
클라우드 제어가 아닌 것
이것은 라이선스 확인이 아닙니다. 구독이 만료되면 새 산출물을 패키징할 수 없게 될 뿐, 이미 내보낸 것에 소급해 작용하지 않습니다 — 클라우드 제어 여부와 무관하게. 포털의 스위치는 당신의 것이며, 클라우드 제어 산출물을 멈출 수 있는 유일한 수단입니다.
기본 동작도 바뀌지 않습니다. --web-gate 없이 보호한 산출물은 영구히 오프라인으로 남고 원격으로 멈출 수 없습니다 — 저희도 마찬가지입니다.
제공 범위
클라우드 제어는 모든 유료 플랜에 포함됩니다. 무료 체험에는 포함되지 않습니다 — 무료 체험이 제공하는 것은 완전한 오프라인 보호입니다.
우회할 수 없는 이유
게이트 파라미터는 암호화 봉투의 인증 대상 데이터 내부에 들어 있으며 옆에 붙어 있는 것이 아닙니다 — 떼어내거나, 고치거나, 다른 산출물로 옮기면 복호화 자체가 깨집니다. 컴파일된 산출물은 같은 파라미터를 모듈마다 컴파일된 상수로 지닙니다.
승인은 당신의 MagicLock 패키지 안에 고정된 벤더 키로 서명되므로 위조하거나 재생한 판정은 검증을 통과하지 못합니다. 만료와 유예를 판단하는 시계는 시스템 시계와 영구 저장된 최고 수위 표시 중 더 나중의 것이므로, 기기 시계를 되돌려도 아무것도 연장되지 않습니다.