등록된 신원
모든 에이전트는 기록입니다: 안정적인 agent_id, 역할, Ed25519 키 바인딩, 생성 날짜. 어떤 프로세스가 무엇을 했는지 추측할 필요가 없습니다 — 레지스트리가 누가 존재하는지에 대한 진실의 원천입니다.
2027년에는 플릿(fleet) 자체가 — 익명의 프로세스 집합은 부채입니다. LeanCTX는 모든 에이전트를 등록된 ID: 고유하고, 인간에게 소유되며, 생명주기 관리되고, 증명 및 취소 가능한 자산으로 만듭니다. 모든 전환은 위변조 방지 감사 추적에 기록됩니다.
역할(Role)은 재사용 가능한 권한 프로필로 유지됩니다. 신원(Identity)이 그 위에 책임 소재를 부여합니다: agent_id, owner, status, key binding, attestation, heartbeat. 이 네 가지 속성이 플릿을 관리 가능하게 만듭니다.
모든 에이전트는 기록입니다: 안정적인 agent_id, 역할, Ed25519 키 바인딩, 생성 날짜. 어떤 프로세스가 무엇을 했는지 추측할 필요가 없습니다 — 레지스트리가 누가 존재하는지에 대한 진실의 원천입니다.
인간 소유자가 없는 등록은 거부됩니다. 책임 소재는 구조적입니다: 모든 감사 항목, 모든 생명주기 이벤트, 모든 증거 번들은 에이전트에 대한 책임을 지는 사람에게 추적됩니다.
에이전트를 일시 중지하거나, 소유자를 오프보딩하고 그들의 전체 플릿을 원자적으로 일시 중지할 수 있습니다 — 각 일시 중지는 개별 감사 대상입니다. 폐기는 최종적이며 감사 종료 항목을 기록합니다.
등록 시점과 모든 하트비트에서 바이너리 및 역할 구성 해시를 사용합니다. 드리프트(Drift)는 즉시 감지됩니다 (종료 코드 3) — 업그레이드, 설정 편집 또는 변조. 우리는 이것이 무엇을 보호하지 못하는지 문서화합니다.
모든 것이 CLI 우선이며 종료 코드에 정직하므로, 파이프라인과 모니터링 시스템에서 이를 기반으로 동작할 수 있습니다.
$ lean-ctx agent register --id ci-reviewer-1 --role reviewer --owner alice@org registered: ci-reviewer-1 (role reviewer, owner alice@org) spiffe id: spiffe://org.example/agent/reviewer/ci-reviewer-1 $ lean-ctx agent heartbeat ci-reviewer-1 # liveness + drift; exit 3 on drift $ lean-ctx agent offboard-owner alice@org --reason "left company" suspended 2 agent(s): ci-coder-1, ci-reviewer-1 $ lean-ctx agent check ci-reviewer-1 # enforce-path decision point ci-reviewer-1: DENIED — suspended: left company # exit 1
모든 전환은 위변조 방지 감사 항목을 기록합니다. 등록(registered), 일시 중지(suspended), 재개(resumed), 폐기(decommissioned)는 표준화된 이벤트 유형(OCP Part 4)이므로, ID 이력은 자동으로 증거 번들에 기록됩니다. 전체 모델 및 위협 모델: agent-identity 문서.
"누군가 떠나면 어떻게 되나요?"
그들의 에이전트는 멈춥니다. 기계적으로요. 소유자 오프보딩은 해당 소유자의 모든 활성 에이전트를 하나의 잠금 트랜잭션으로 일시 중지합니다. 이는 SCIM 비활성화 흐름에 연결하거나 퇴사 체크리스트에서 실행할 수 있습니다. 고아 에이전트는 에이전트 시대의 잊힌 서비스 계정이며, LeanCTX는 이를 구조적으로 불가능하게 만듭니다.
역할은 프로세스가 무엇을 할 수 있는지 말해주고, ID는 누가 책임자인지 말해줍니다. 플릿의 경우 중요한 질문은 운영상의 문제입니다: 이 에이전트는 누가 소유하는가, 마지막으로 활성화된 것은 언제인가, 누가 끄고 왜 껐는가, 소유자가 떠날 때 권한은 어떻게 되는가? 레지스트리가 이를 기계적으로 답변합니다. ID(누구)는 역할(무엇)과 분리되어 유지되므로, 역할은 재사용 가능한 프로필로 남습니다.
인간 소유자가 회사에서 퇴사했지만 자격 증명으로 계속 실행되는 에이전트입니다. 이는 잊힌 서비스 계정의 에이전트 시대 버전이며, 코드를 읽고 명령을 실행합니다. LeanCTX는 이를 구조적으로 해결합니다: 등록 시 소유자는 필수이며, 하나의 명령어(또는 SCIM 비활성화 흐름)로 소유자의 전체 활성 플릿을 단일 잠금 트랜잭션으로 일시 중지하며, 모든 일시 중지는 감사됩니다.
active → suspended ⇄ active → decommissioned. 일시 중지는 사유를 포함하며 되돌릴 수 있고, 폐기는 설계상 최종적입니다. 기록은 절대 삭제되거나 다시 활성화되지 않기 때문입니다. ID는 감사 이력의 일부이기 때문입니다. 모든 전환은 표준화된 이벤트 유형(agent_registered, agent_suspended, agent_resumed, agent_decommissioned — OCP Part 4)을 사용하여 위변조 방지 감사 항목을 기록하므로, ID 변경 사항이 증거 번들에 자동으로 표시됩니다.
등록 및 모든 하트비트는 실행 중인 바이너리와 활성 역할 파일을 해시합니다. 해시가 변경되었다는 것은 무언가가 바뀌었다는 의미입니다—업그레이드, 구성 편집 또는 변조—그리고 모니터링에서 경고할 수 있는 0이 아닌 종료 코드로 드리프트로 표시됩니다. 이는 원격 어테스테이션이 아니라 드리프트 감지입니다: 전체 호스트 제어권을 가진 공격자는 해시를 위조할 수 있으며, 우리의 위협 모델은 이를 명확하게 말합니다. 이는 호스트 강화 및 코드 서명을 대체하는 것이 아니라 보완합니다.
세 가지 후크가 있습니다. SPIFFE: 모든 기록은 spiffe://<trust-domain>/agent/<role>/<agent_id>로 매핑되므로, K8s 워크로드 ID(SPIRE)와 LeanCTX ID는 동일한 이름입니다. SCIM: 비활성화 흐름을 소유자 오프보딩 호출에 연결합니다. 강제 모드: 검사 API는 단일 결정 지점입니다—미등록 또는 일시 중지된 에이전트는 거부됩니다. 모니터 모드로 시작하여 플릿 등록이 완료되면 강제 모드로 전환합니다.
1분 만에 로컬에서 무료로 첫 번째 에이전트를 등록하거나, SCIM 및 SPIFFE를 활용한 플릿 배포에 대해 상담해 보세요.