AWS, AI 에이전트 도구 호출에 시간 정책을 더한 Dogwood 공개
AI 에이전트가 답변을 넘어 실제 작업을 수행하면서 권한 제어의 기준도 달라지고 있다. 현재의 도구 호출 하나만 허용할지 판단하는 것만으로는 부족하다. 에이전트가 앞서 어떤 데이터를 읽었고, 어떤 외부 서비스를 호출했으며, 어떤 작업을 동시에 시작했는지까지 고려해야 하기 때문이다. AWS는 이 문제를 겨냥한 정책 언어 Dogwood를 오픈소스로 공개했다.
Cedar에 실행 이력을 더하다
Dogwood는 Cedar와 호환된다. 기존의 유효한 Cedar 정책은 그대로 사용할 수 있고, 기본 거부와 forbid가 permit보다 우선하는 규칙도 유지된다. 가장 큰 차이는 when temporal 절이다. Cedar가 개별 요청만 평가한다면, Dogwood는 이전 도구 요청과 결과로 구성된 이벤트 이력을 읽어 현재 요청을 판단한다.
따라서 다음과 같은 정책을 작성할 수 있다.
- 민감한 작업 전에 승인을 요구한다;
- 일정 시간 동안 호출 횟수나 누적 금액을 제한한다;
- 기밀 데이터에 접근한 뒤 외부 연락을 차단한다;
- 과거 워크플로 이벤트에 따라 현재 도구 호출을 허용하거나 거부한다.
Dogwood의 작업 패턴은 에이전트의 MCP 도구 목록에서 생성된다. 시간 조건은 내부적으로 Cedar의 컨텍스트 필드로 바뀌며, 인터프리터가 이벤트 이력을 반영한 뒤 Cedar가 결정을 내린다. formerly는 특정 이벤트의 발생 여부를, count_within은 횟수를, count_distinct_within은 서로 다른 값의 수를, sum_within은 기간 내 누적값을 계산한다. bind는 집계 결과에 이름을 붙여 현재 요청과 비교하게 한다.
병렬 호출은 정책의 허점을 만든다
가장 이해하기 쉬운 사례는 송금 한도다. 완료 응답을 기준으로 금액을 합산하면, 여러 송금이 동시에 시작되고 아직 완료된 건이 없는 순간에는 처리 중인 금액이 보이지 않는다. 그 결과 전체 한도를 넘는 요청들이 모두 통과할 수 있다. 반대로 요청 이벤트 단계에서 금액을 합산하면 한도를 넘기는 다음 요청을 사전에 거부할 수 있다.
문법상 작은 차이가 실제 결과를 바꾸는 이유는 에이전트 실행이 분산 시스템의 특성을 갖기 때문이다. 에이전트는 여러 도구를 병렬로 호출하고, 여러 에이전트의 작업은 서로 끼어들 수 있다. 순차 실행을 전제로 만든 정책은 요청과 응답의 지연, 실행 순서 변화에 따라 무너질 수 있다. 정책 설계자는 제약을 요청, 결과, 또는 전체 워크플로 상태 중 어디에 연결할지 명확히 해야 한다.
표현력의 대가
시간 기반 평가는 이벤트 상태를 계속 추적해야 하며, 계산 시간은 로그 길이에 영향을 받을 수 있다. 또한 시간 조건을 포함한 정책은 Cedar가 제공하는 자동 추론과 형식 분석 도구를 사용할 수 없다. AWS가 Cedar를 단순히 확장하지 않고 별도의 언어를 만든 배경도 이 trade-off에 있다.
Dogwood의 참고용 인터프리터는 언어를 탐색하고 테스트하기 위한 것이며, 프로덕션 권한 실행기를 의미하지 않는다. 실제 운영에는 신뢰할 수 있는 타임스탬프, 인증된 이벤트, 영속적인 실행 기록, 테넌트 간 이력 격리, 결정 로그와 적절한 보존 정책이 필요하다. 도구 호출 이력에 민감한 정보가 포함될 수 있기 때문에 신뢰할 수 있는 이벤트 로그가 정책의 전제다.
MCP가 인프라에서 에이전트의 메서드와 도구 이름을 식별하기 쉽게 만든다면, Dogwood는 이런 호출이 누적될 때 무엇을 계속 허용할지 표현한다. 향후 절대 시간 구간, 최종적으로 반드시 일어나야 하는 조건, 다중 에이전트의 작업 인계와 잠금을 위한 정책이 추가될 가능성이 제시됐다.
출처: InfoQ 中文
댓글
로그인 상태 확인 중…
댓글 불러오는 중…