보이스 에이전트를 위한 안전한 발신자 인증 설계
- 게시일
- 최종 업데이트
보이스 에이전트는 단순한 FAQ 응답자에서 계정 변경, 거래 처리, 민감한 고객 데이터 접근까지 수행하는 시스템으로 빠르게 발전하고 있습니다. 이런 변화로 인해 중요한 과제가 생깁니다. 바로,
만약
이 글에서는 엔터프라이즈 환경에서 Forward Deployed Engineer로 일하며 검증된 인증 패턴을 소개합니다. 임베디드 위젯용 세션 기반 인증부터 전화 전용 방식, OTP 인증까지 다섯 가지 핵심 접근법을 다루고, ElevenLabs 플랫폼에서 결정적인 워크플로 게이팅을 통해 각 방법을 구현하는 방법을 설명합니다.
무엇보다 인증을 대화 추론에 맡겨서는 안 되는 이유를 보여드립니다. 대신, 인증은 분리된 서브에이전트, 도구 기반 검증, 조건부 워크플로 라우팅을 통해 설계되어야 하며, 인증된 사용자만이 권한이 필요한 작업에 접근할 수 있도록 해야 합니다.
요약
인증된 사용자만 계정 관련 정보에 접근할 수 있도록 하려면, ElevenLabs 워크플로를 통한 엄격한 환경 및 접근 분리가 필요합니다. 인증은 항상 불린 값(성공/실패)을 반환하는 도구 호출로 구현해야 하며, ElevenLabs 워크플로 빌더에서 디스패치 도구로 설정해야 합니다.
결정적 인증을 위한 아키텍처 기반
인증된 사용자만 계정 관련 정보에 접근할 수 있도록, ElevenLabs 워크플로우를 통한 엄격한 환경 및 접근 분리를 권장합니다. 인증은 항상 불린 값(성공/실패)을 반환하는 도구 호출로 구현되어야 하며, ElevenLabs 워크플로우 빌더에서 디스패치 도구로 설정해야 합니다.
전달 조건을 도구 호출 결과에 직접 연결하면, 계정 데이터에 접근할 수 있는 하위 에이전트는 인증에 성공한 경우에만 접근 가능하며, 인증되지 않은 사용자와 완전히 분리됩니다. 이를 통해 인증이 결정적으로 이루어지고, LLM의 판단에 의존하지 않으며, 신원이 확인되지 않은 상태에서는 다음 단계로 진행할 수 없습니다.
대안으로, 전달 표현식을 신뢰할 수 있는 전달 방식으로 사용할 수 있습니다. 이 표현식은 도구 호출 결과로 업데이트되는 동적 변수를 참조합니다.

사용자 신원 인증 방법
이러한 인증 방식은 ElevenLabs 플랫폼에서 기본적으로 지원하지 않습니다. CRM이나 백엔드/데이터베이스에 저장된 인증 데이터를 연동하는 서버 측 도구를 통해 구현할 수 있습니다.
사용자 신원 인증 방법
이러한 인증 방식은 ElevenLabs 플랫폼에서 기본적으로 지원되지 않습니다. 인증 데이터가 저장된 CRM 또는 백엔드/데이터베이스와 연동되는 서버 측 도구를 통해 구현할 수 있습니다.
호스트 애플리케이션 인증
웹사이트에 내장된 보이스 에이전트의 경우, 호스트 애플리케이션이 사용자 세션 데이터(로그인 상태, 계정 ID, 세션 토큰 등)를 에이전트/위젯 초기화 시 동적 변수로 전달할 수 있습니다. 이 변수들은 동일한 동적 변수로 도구 호출에 자동 삽입되어, 별도의 인증 없이도 통합 시스템에서 개인화된 데이터를 조회할 수 있습니다.
자세한 설정 방법은
지식 기반 인증(KBA)
보이스 에이전트가 발신자에게 계좌번호, 우편번호, 생년월일, 보안 질문 답변 등 인증 정보를 요청합니다. 서버 측 도구(웹훅 또는 백엔드 호출)가 이 값을 데이터베이스(CRM 또는 신원 저장소 등)와 대조해 확인합니다. 도구는 불린 상태(is_error)와 설명 텍스트가 포함된 성공/실패 결과를 반환합니다.
이 방식은 결정적 워크플로우 게이팅으로 구현할 수 있습니다. 관련 정보를 요청한 후, 도구 디스패치를 설정하고, 도구의 성공/실패 상태에 따라 분기하는 워크플로우 조건부 전달 엣지를 사용해 인증된 사용자를 '권한' 에이전트 노드로 라우팅합니다.
- https://panel.temphost.top/docs/agents-platform/customization/tools/server-tools
- https://panel.temphost.top/docs/eleven-agents/customization/agent-workflows#dispatch-tool-node
자세한 내용은
시스템 동적 변수(전화 시스템 전용)
전화 기반 대화(Twilio 또는 SIP 트렁크 사용)의 경우, 에이전트는 system__caller_id(발신자 전화번호) 등 전화 시스템 전용 변수를 자동으로 사용할 수 있습니다. 이 변수는 대화 시작 시 자동으로 채워집니다.
활용 방법은 두 가지입니다:
시스템 동적 변수 및 시작 웹훅 문서:
- https://panel.temphost.top/docs/agents-platform/customization/personalization/dynamic-variables#system-dynamic-variables
- https://panel.temphost.top/docs/agents-platform/customization/personalization/twilio-personalization
보안 참고:
자세한 내용은
고급 지식 기반/보안 질문 인증
에이전트가 여러 보안 질문을 통해 사용자를 인증하고, 정해진 개수 이상 정답 시에만 접근을 허용할 수 있습니다. 에이전트는 미리 정의된 질문 목록(예: 생년월일, 우편번호, 반려동물 이름 등)에서 무작위로 질문을 선택해, 도구 호출로 답변을 데이터베이스와 대조할 수 있습니다.

관련 문서:https://panel.temphost.top/docs/eleven-agents/customization/agent-workflows#edges-and-flow-control
일회용 코드
자세한 내용은
일회용 코드
- 코드 생성: 에이전트가 서버 도구 호출로 전용 엔드포인트에 요청을 보내면, 안전한 일회용 코드가 생성되어 사용자의 선호 채널(SMS 또는 이메일)로 전송됩니다.
- 사용자 안내: 에이전트가 사용자가 받은 코드를 입력하도록 요청합니다. 음성 모드에서는 사용자가 코드를 말하면, 이를 음성 인식으로 받아들입니다.
- 코드 검증: 에이전트가 사용자가 입력한 코드를 두 번째 도구 호출로 백엔드 검증 서비스에 전달합니다. 백엔드는 코드가 일치하는지, 만료되지 않았는지, 이미 사용된 적이 없는지 확인합니다.
- 워크플로 라우팅: 에이전트는 검증 결과에 따라 다음과 같이 처리합니다. 성공: 코드가 올바르면, 성공 조건을 통해 인증 이후 워크플로로 이동합니다. 실패: 코드가 틀리면, 사용자가 다시 입력하도록 안내하거나, 새로운 코드를 발송하는 등 대체 절차를 시작할 수 있습니다.
구현 워크플로우를 자세히 살펴보면:
결론
보안 고려사항: 무차별 대입 공격 방지를 위해 요청 횟수 제한, 코드 만료 시간(3~5분) 설정, 재시도 횟수 추적 및 제한이 필요합니다. 음성 상호작용에서는 코드 인식 정확도를 높이기 위한 확인 프롬프트도 고려하세요.



