I took credentials away from my agents. They still act on mail and Slack on my behalf.

개요

AI 에이전트에게 프로바이더 토큰과 같은 자격 증명을 직접 제공하지 않고도 Gmail 및 Slack과 같은 외부 서비스에서 사용자 데이터를 처리할 수 있도록 하는 새로운 인증 및 권한 부여 방식이 소개됩니다.

주요 내용

* 기존 방식의 문제점: API 키를 코드나 환경 변수에 직접 저장하는 방식은 보안 취약성을 야기하며, 에이전트 간 권한 공유로 인한 문제 발생 시 모든 에이전트의 키를 교체해야 하는 번거로움이 있습니다. 또한, 권한 부족 시 사용자에게 명확한 정보 없이 오류가 발생하고 디버깅이 복잡해집니다.
* URL 기반 인증: 외부 에이전트는 프로바이더 토큰 대신, 플랫폼에서 제공하는 관리형 MCP 엔드포인트(도어)로 연결되는 URL을 받습니다.
* OAuth 및 동적 클라이언트 등록 (DCR): Claude Code와 같은 에이전트는 OAuth 클라이언트로 도어에 연결하며, DCR을 통해 클라이언트 ID를 등록하고 리디렉션 URL 목록을 허용합니다. 사용자는 로그인 후 연결에 필요한 최대 권한을 승인합니다.
* 스코프 KDCube 베어러: OAuth 교환은 프로바이더 토큰 대신, 클라이언트와 승인에 연결된 스코프 KDCube 베어러를 반환합니다. 이 승인 과정에서 필요한 기능과 연결된 계정이 표시되며, 연결되지 않은 경우 연결 링크가 제공됩니다.
* 연결 거버넌스: 승인된 연결은 "카드" 형태로 관리되며, 사용자 인터페이스를 통해 에이전트가 어떤 서비스에 대해 어떤 작업을 수행할 수 있는지 명확히 정의합니다. 사용자는 연결된 계정별로 세분화된 권한(읽기 전용, 읽기/쓰기 등)을 설정할 수 있습니다.
* 권한 경계 및 검증: 연결 시 설정된 권한은 최대 허용치(천장)이며, 실제 접근 권한은 연결된 계정과 해당 계정에 부여된 권한에 따라 결정됩니다. 모든 API 호출은 권한이 있는지, 연결된 계정이 해당 요청을 승인했는지 두 가지 게이트를 통과해야 합니다.
* 거부 시 자체 수정: 권한 부족 시 발생하는 거부 메시지는 단순한 오류 보고를 넘어, 누락된 작업 및 필요한 권한을 명시하고 수정 경로를 안내하는 프로토콜 역할을 합니다. 계정 부족 시에는 가능한 계정 목록을 제공하여 사용자가 선택하도록 합니다.
* 균일한 에이전트 관리: 외부 애플리케이션과 내부 호스팅 에이전트 모두 동일한 "카드"를 통해 관리되며, 클라이언트 ID, 권한, 계정별 바인딩, 편집 및 취소 기능이 일관되게 적용됩니다.
* 보안 강화 설계: 프로바이더 비밀 정보 유출, 사용자 계정 간 접근, 잘못된 계정 사용, 연결 시점 이후 변경된 권한 등의 문제를 방지합니다. 에이전트 자체는 프로바이더 자격 증명을 보유하지 않으며, 신뢰할 수 있는 계층에서 인증, 스코핑, 취소를 담당합니다.
* KDCube 런타임: 이 시스템은 자체 호스팅되고 MIT 라이선스로 제공되는 KDCube 런타임 위에서 구축됩니다.

시사점

이 새로운 인증 방식은 AI 에이전트의 보안을 대폭 강화하고, 사용자에게는 명확하고 세분화된 권한 제어 기능을 제공하며, 개발자에게는 복잡한 자격 증명 관리 및 오류 처리를 간소화하여 프로덕션 환경에서의 AI 시스템 구축 및 운영을 더욱 용이하게 합니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions