계정 및 활성화
제로 컨피그 활성화, CI 및 헤드리스 머신, 오프라인일 때 벌어지는 일, 그리고 기기 취소가 실제로 하는 일.
활성화는 계정 아래에 머신을 프로비저닝합니다. 일반적인 사용에서는 손수 실행할 일이 없습니다 — 첫 암호화에 통합되어 있기 때문입니다.
제로 컨피그 활성화
새 머신에서의 첫 protect / protect-model / build 호출은 로그인(브라우저를 엽니다)과 머신 활성화를 한 단계로 처리한 뒤 암호화합니다.
magiclock protect app.py # first run: sign in + activate, then encrypt
magiclock protect app.py # every run after: encrypts immediately, no prompts명시적 명령
직접 실행할 일은 거의 없지만, 필요할 때를 위해 존재합니다.
magiclock activate # authenticate (opens a browser) + provision this machine
magiclock activate --no-browser # print a link + code instead of opening a browser
magiclock status # this machine's account + activation state
magiclock status --offline # same, without a live server round-trip
magiclock deactivate # remove this machine (frees its seat server-side by default)
magiclock deactivate --local-only # remove it locally only, without touching the serverCI와 헤드리스 머신
브라우저를 여는 대신 포털에서 발급한 토큰을 전달할 수 있습니다.
export MAGICLOCK_TOKEN=<token-from-your-account-portal>
magiclock protect app.py # provisions non-interactively, then encrypts릴리스 빌드의 CLI에는 라이선스 서버 URL이 이미 내장되어 있으므로, 기본값이 아닌 다른 서버를 가리켜야 할 때만 MAGICLOCK_SERVER가 필요합니다.
환경 변수
| 변수 | 사용처 | 용도 |
|---|---|---|
MAGICLOCK_TOKEN | activate, 그리고 첫 암호화 시 자동 활성화 | 비대화형 로그인을 위한 Bearer 토큰. |
MAGICLOCK_SERVER | activate | 라이선스 서버 URL을 재정의합니다(거의 필요하지 않음). |
MAGICLOCK_PASSPHRASE | protect/protect-model/run | --lock-passphrase 또는 포터블 --passphrase 산출물을 위한 비대화형 패스프레이즈. |
MAGICLOCK_DECRYPT_KEY | run | 포터블 --emit-key 산출물에 대해 run --key 대신 사용. |
MAGICLOCK_NO_BROWSER | 모든 인증 흐름 | 브라우저 자동 열기를 억제합니다(헤드리스 Linux에서는 자동으로도 감지됨). |
MAGICLOCK_NO_OS_KEYRING | 모든 명령 | 로컬 자격 증명 저장소에 추가되는 OS 키링 래핑을 건너뜁니다 — 키링 서비스가 없는 최소 구성 컨테이너에서 유용합니다. |
오프라인일 때 벌어지는 일
암호화(protect/protect-model/build)는 매번 라이선스 서버에 확인합니다. 이 확인이 성공하면 문제없이 진행됩니다. 네트워크가 끊겨 있다면 다음과 같습니다.
| 상황 | 결과 |
|---|---|
| 서버에 연결 가능하고 라이선스가 유효함 | 정상적으로 암호화합니다. |
| 서버에 연결 불가능하지만 마지막 성공한 확인이 12시간 이내 | 오프라인 유예 창을 사용해 암호화합니다. |
| 서버에 연결 불가능하고 성공한 확인 이력이 아직 없음(또는 유예 기간 만료) | 다시 온라인이 될 때까지 차단됩니다. |
| 서버에 연결 가능하지만 명시적으로 거부함(기기 취소, 플랜 만료/해지) | 즉시 차단됩니다 — 온라인이든 오프라인이든 이 경우에는 유예가 주어지지 않습니다. |
복호화와 magiclock run은 이 중 어떤 것에도 영향을 받지 않습니다. 이들은 오직 로컬의, 이미 활성화된 볼트만 읽습니다 — 네트워크 호출도, 서버 의존성도 전혀 없습니다. 머신이 온라인이든, 오프라인이든, 활성화 이후 한 번도 온라인이었던 적이 없든 마찬가지입니다.
취소와 비활성화
magiclock deactivate(--local-only 없이)는 서버에 이 머신의 시트를 해제하도록 알리고, 이 머신이 새로운 것을 암호화하지 못하도록 막습니다. 이는 그 머신에서 이미 만들어진 산출물에는 소급 적용되지 않습니다 — 복호화는 서버나 어떤 취소 목록도 참조하지 않으므로, 그 산출물들은 계속 복호화됩니다. 머신을 분실했거나 침해당했다면, 비활성화는 그 머신이 계정 아래에서 새로운 보호 산출물을 만드는 것을 막을 뿐, 이미 만든 파일들을 소급해서 취소하지는 않습니다.