AN-04 L1 적합성 수준: Authority 그룹: 권한

Capability Lease 권한 리스

한 번의 실행을 위한 좁은 인가. 만료 시점과 예산이 있고, 하위 리스는 더 좁아지기만 합니다.

정의

Capability Lease는 특정 데이터와 특정 작업에 대한 인가이며, 명시적인 만료 시점과 예산이 있습니다. 하나의 실행에 발급되고, 실행이 NAS에 닿는 유일한 길입니다. 하위 리스는 상위 리스보다 좁아지기만 할 수 있습니다.

v0.2 명세 초안 최종 수정

해결하려는 문제

RBAC와 ACL은 넓고 오래가는 권한을 가진 안정적인 사용자를 가정합니다. 에이전트에게 필요한 것은 작업에 맞게 잘라 낸 권한, 작업이 끝나면 멈추는 권한입니다. 더 나쁜 것은 장기 자격 증명이 에이전트의 손이 닿는 곳에 놓여 있는 경우가 많다는 점입니다. 2026년 4월의 사고에서 토큰은 관계없는 파일에 있었고, 도메인을 관리하려고 만들었는데 무엇이든 할 수 있었습니다.

동작 방식

  • 누가 열쇠를 쥐는가. 장기 자격 증명은 오케스트레이터나 소유자에게 남고, 실행은 열쇠가 아니라 리스를 받습니다. 모델은 장기 자격 증명을 결코 보지 못합니다.
  • 리스는 액세스 토큰입니다. authorization_details(RFC 9396)가 경로, 동작, 브랜치를 기술하고, 소유자나 오케스트레이터가 토큰 교환(RFC 8693)으로 요청하며, act 클레임이 위임 체인을 기록하고, NAS는 취소와 예산 계산을 위한 상태를 보관합니다.
  • 좁아지기만 합니다. 하위 리스는 상위 리스의 부분집합이어야 하며, 발급할 때 NAS가 이를 검사합니다.
  • 예산. 읽고 쓴 바이트 수, 요청 수, 선택적으로 외부 전송 바이트 수와 지출 상한을 게이트웨이에서 셉니다. 정확한 과금이 아니라 서킷 브레이커입니다.
  • 정책 범위. 소유자가 미리 범위를 정해 두면 그 안의 리스는 자동으로 발급되고, 밖의 것은 Human Gate로 갑니다. 장기 접근은 장기 리스가 아니라 범위로 표현합니다.
  • B와 C는 명시적으로 선언합니다. 리스는 읽을 수 있는 가장 높은 민감도와, 보호된 트리에 쓰거나 데이터를 내보낼 수 있는지를 밝힙니다. 이것이 Trust Labels의 입력입니다.
  • 취소. 짧은 TTL(기본 4시간, 최대 24시간)과 즉시 취소. 취소는 하위 리스로 연쇄됩니다.
  • **purpose는 기록하되 강제하지 않습니다.** 자유 형식 텍스트는 기계가 검사할 수 없기 때문입니다.

작게 시작하기

  • nas lease create 명령을 하나 만듭니다. 역할마다 경로 접두사, 동작, TTL이 담긴 토큰을 발급해 환경 변수로 샌드박스에 넘기고, NAS가 접두사와 동작을 강제하게 합니다.
  • 이것만으로도 그런 사고의 앞 절반은 막습니다. 토큰은 리스 밖에서는 아무것도 할 수 없습니다.
  • 예산, 위임 체인, 정책 범위는 나중에 더해도 됩니다.

인터페이스 스케치

설명을 위한 예시입니다. 필드 이름은 명세 v0.3 이전에 바뀔 수 있습니다.

lease.json
{
  "lease_id": "lse_7Qk3",
  "run": "run_91ab",
  "principal": "agt_cleo",
  "on_behalf_of": "usr_wei",
  "parent": null,
  "purpose": "Draft the Q4 release notes",
  "paths": ["/shared/launch/**", "/agents/cleo/workspace/**"],
  "actions": ["read", "write", "propose"],
  "branch": "cleo/run_91ab",
  "sensitivity_max": "private",
  "egress": false,
  "requires_gate": ["merge", "delete", "share"],
  "budgets": { "bytes_read": 200000000, "bytes_written": 5000000, "requests": 5000 },
  "expires_at": "2026-11-12T16:00:00Z"
}

명세가 요구하는 것

  • 리스에는 만료 시점이 있어야 하며 최대 TTL을 넘겨 갱신해서는 안 됩니다. 갱신하려면 새로 발급받아야 합니다.
  • 하위 리스는 상위 리스의 부분집합이어야 하며, NAS가 발급할 때 이를 검증해야 합니다.
  • 리스를 취소하면 모든 하위 리스로 연쇄되어야 합니다.
  • 장기 접근은 정책 범위로 표현해야 하며, 장기 리스로 만들어서는 안 됩니다.
  • 리스는 자신의 민감도 상한과, 외부 전송과 보호된 쓰기를 허용하는지 여부를 선언해야 합니다.
  • 장기 자격 증명을 모델이나 실행에 노출해서는 안 됩니다.

빌려 온 것과 새로운 것

아래에 나오는 것은 모두 이미 자리 잡은 부품입니다. 새로운 것은 실행과 작업의 형태를 단위로 삼아 브랜치, 예산, Rule of Two 속성을 하나의 리스에 담은 것입니다. 토큰과 케이퍼빌리티 모델 자체는 새롭지 않습니다.

솔직한 한계

  • NAS 안의 작업만 다루며, 에이전트가 다른 곳에서 하는 일은 통제할 수 없습니다.
  • purpose는 강제할 수 없고, 예산은 대략적입니다.
  • 리스는 정당한 권한 안에서의 오용을 막지 못합니다. 그것은 브랜치와 게이트의 일입니다.

열린 질문

  • purpose를 자유 형식 텍스트에서 기계가 검사할 수 있는 구조화된 의도로 어떻게 옮길 수 있는가?
  • 연합 환경에서 예산은 어떻게 계산하는가?

자주 묻는 질문

리스는 API 키와 무엇이 다른가요?

API 키는 오래가는 공유 비밀이고, 가진 사람은 계정이 할 수 있는 일을 무엇이든 할 수 있습니다. 리스는 하나의 실행에 묶여 있고, 경로, 동작, 시간을 제한하며, 좁아지기만 할 수 있습니다. 만료되면 멈추고 언제든 취소할 수 있습니다.

그냥 OAuth를 쓰면 안 되나요?

OAuth가 맞습니다. 리스는 액세스 토큰이며, 토큰 교환(RFC 8693)으로 요청하고 Rich Authorization Requests(RFC 9396)로 기술합니다. Agent NAS가 더하는 것은 OAuth가 정하지 않은 부분뿐입니다. 실행을 단위로 삼고, 브랜치, 예산, Rule of Two 속성을 하나의 인가에 담는 것입니다.

리스가 만료되면 실행은 어떻게 되나요?

마운트는 읽기 전용이 되었다가 해제되고, 새 요청은 거부되어 기록됩니다. 브랜치는 자체 TTL이 끝날 때까지 유지되므로, 끝낸 작업은 사라지지 않고 검토를 거쳐 병합할 수 있습니다.

이 페이지 인용하기

사람, 검색 엔진, 에이전트를 위한 고정 주소와 권장 인용 형식입니다.

권장 인용 형식
Agent NAS project. “Capability Lease (권한 리스).” agentnas.com, 2026-11-11. https://agentnas.com/ko/concepts/capability-lease/