AI 에이전트 운영의 세 경계: 승인, 실행 권한, 감사 증거
AI 에이전트의 승인과 권한 통제, 소규모 팀의 오픈소스 하니스 선택, 사고 조사에 필요한 실행 이력과 감사 증거를 하나의 운영 흐름으로 정리한다.
운영 브리핑 · 2026.09.30 · AI AGENTS
AI 에이전트 운영의 세 경계: 승인, 실행 권한, 감사 증거
AI 에이전트가 업무에 들어오면 모델의 답변 품질만으로 운영 범위를 판단할 수 없다. 어떤 행동을 승인할지, 작은 팀이 어떤 실행 환경과 권한으로 배포할지, 문제가 생긴 뒤 무엇으로 사실을 확인할지를 함께 정해야 한다. 오늘의 브리핑은 승인·분리된 접근·실행 이력을 하나의 책임 흐름으로 묶는다.
오늘의 운영 관점: 에이전트의 답변보다 행동의 근거를 먼저 남긴다
AI 에이전트는 요청을 해석하고 모델을 호출하는 데서 멈추지 않을 수 있다. 도구를 선택해 문서를 찾고, 내부 시스템을 조회하며, 데이터를 저장하거나 외부 서비스에 변경을 요청할 수 있다. 따라서 운영자는 에이전트가 무엇을 말했는지뿐 아니라 누가 요청을 시작했는지, 어떤 정책이 행동을 허용했는지, 실제 대상에 어떤 결과가 남았는지를 연결해서 설명할 수 있어야 한다.
이 글은 특정 제품의 보안 기능, 배포 방식, 감사 기능이 기본 제공된다고 주장하지 않는다. 공개된 저장소와 문서를 출발점으로 삼아 팀이 자기 환경에서 확인할 운영 기준을 제안한다. 문서에 적힌 범위와 조직이 별도로 정해야 하는 승인 절차, 네트워크 분리, 보관 정책, 복구 절차는 구분한다. 확인하지 않은 기능이나 특정 사고의 원인을 사실처럼 쓰지 않는 원칙도 유지한다.
세 주제는 따로 떨어져 있지 않다. 권한 통제가 약하면 하니스가 어떤 실행 순서를 관리하더라도 영향 범위가 넓어진다. 실행 환경을 빠르게 배포했더라도 승인 증거와 호출 이력이 없으면 사고 뒤에 책임과 결과를 확인하기 어렵다. 반대로 승인, 권한, 기록을 한 요청의 앞·중간·뒤 단계로 연결하면 자동화의 허용 범위와 중단 기준을 더 구체적으로 정할 수 있다.
1. AI 에이전트 보안과 권한 통제: 승인, 감사, 분리된 네트워크 경계를 함께 설계한다
에이전트 보안의 첫 질문은 “이 에이전트가 유용한가”가 아니라 “이 요청이 어떤 행동으로 이어질 수 있는가”다. 사용자의 요청, 모델의 제안, 도구의 입력, 외부 시스템의 응답은 모두 실행 흐름 안에 들어갈 수 있다. 이 요소들이 같은 권한으로 섞이면 입력을 받은 위치와 실제 변경이 일어난 위치 사이의 경계를 잃기 쉽다. 요청 주체와 실행 주체, 도구 권한과 대상 범위를 분리해서 보는 이유다.
승인은 모든 요청에 같은 확인창을 띄우는 방식이 아니다. 먼저 자동으로 처리할 수 있는 행동, 사람의 확인 뒤에만 처리할 행동, 어떤 조건에서도 허용하지 않을 행동을 나눈다. 예를 들어 범위가 미리 정해진 공개 자료 조회와, 외부 수신자에게 내용을 보내거나 업무 상태를 변경하는 작업은 같은 방식으로 취급할 필요가 없다. 승인 단계가 필요한 행동이라면 승인자는 도구 이름뿐 아니라 실제 대상, 예상 변경, 수신자, 범위, 유효 시간, 되돌릴 수 있는지 여부를 확인할 수 있어야 한다.
승인은 요청의 문장에 붙는 표시가 아니라 구체적인 실행 내용에 붙어야 한다. 승인 뒤 수신자, 대상 문서, 조회 범위, 입력값이 바뀌었다면 이전 승인을 그대로 재사용하지 않는 기준이 필요하다. 승인 한도와 만료 시간을 두면 하나의 확인이 나중의 다른 작업까지 열어 두는 일을 줄일 수 있다. 반대로 자동 실행이 허용된 행동도 대상 범위, 호출 횟수, 실행 시간, 결과 확인 조건을 명확히 남겨야 한다.
감사 기록은 승인 화면의 스크린샷으로 끝나지 않는다. 요청 식별자, 요청자, 에이전트 또는 서비스의 실행 정체성, 적용된 정책, 승인 결과, 도구 호출, 대상, 결과 상태를 연결한다. 이 기록은 모델의 내부 추론을 무조건 보관하자는 뜻이 아니다. 나중에 관찰 가능한 증거를 바탕으로 “누가 무엇을 요청했고, 무엇이 허용되었으며, 실제로 무엇이 실행되었는가”를 확인할 수 있게 만드는 일이다.
권한은 “지원팀”, “운영자”, “에이전트” 같은 넓은 역할 이름만으로 정의하지 않는 편이 좋다. 어떤 고객 집합을 조회하는지, 어떤 필드를 읽는지, 어떤 기록을 만드는지, 어디로 전송할 수 있는지를 행동 단위로 나눈다. 검색, 요약, 초안 작성, 저장, 외부 전송은 하나의 사용자 요청 안에 있어도 서로 다른 행동이다. 앞 단계가 허용되었다는 사실만으로 다음 단계까지 자동으로 허용되는 구조는 피한다.
분리된 네트워크 운영도 이 경계의 일부다. 개발과 검증 환경에서는 준비된 데이터와 격리된 계정을 사용하고, 운영 환경에서는 허용된 실제 대상만 접근하게 한다. 검증용 도구가 운영 엔드포인트를 기본값으로 호출하거나, 환경 변수 이름이 같다는 이유로 자격증명을 복사하는 방식은 피한다. 네트워크를 나눴다는 사실만으로 권한이 좁아지는 것은 아니므로, 각 환경에서 가능한 도구와 대상도 따로 점검한다.
차단된 요청의 처리도 정책 설계에 포함한다. 권한이 없다는 이유로 더 넓은 계정으로 자동 재시도하면 승인과 분리의 경계가 무너질 수 있다. 사용자에게는 민감한 내부 정책을 드러내지 않으면서 다음에 가능한 경로를 알려 주고, 필요하면 정해진 승인자나 업무 절차로 넘긴다. 정책 차단, 사용자 거부, 도구 오류, 외부 시스템의 미확인 상태는 서로 다른 결과로 기록해야 후속 조치의 책임도 분명해진다.
2. 오픈소스 AI 에이전트 런타임: 소규모 팀은 Strands Harness를 비용·권한·배포 기준으로 읽는다
소규모 팀이 오픈소스 에이전트 런타임을 검토할 때는 새 프레임워크를 빠르게 붙일 수 있는지보다 실행 책임을 감당할 수 있는지를 먼저 본다. 하니스는 요청을 받아 실행을 구성하고, 모델과 도구 호출을 연결하며, 결과를 돌려주는 운영 층으로 생각할 수 있다. 이 층의 구조를 확인하면 모델, 프롬프트, 도구, 정책, 배포 환경 중 무엇이 바뀌었는지와 어떤 변경을 다시 검증해야 하는지를 구분하기 쉬워진다.
Strands Harness SDK의 공개 저장소 제목은 Python과 TypeScript에서 프로덕션 AI 에이전트용 하니스를 만들고 끝까지 제어하는 오픈소스 SDK라고 설명한다. 이 설명은 특정 배포 방식이나 조직별 보안 체계를 보장한다는 뜻은 아니다. 팀은 공개된 코드와 문서를 검토할 때 자기 업무에 필요한 모델 연결, 도구 정의, 권한 확인, 운영 환경의 제약을 별도로 확인해야 한다. 하니스가 제공하는 실행 구조와 조직이 책임져야 하는 업무 정책을 같은 것으로 보지 않는 태도가 중요하다.
비용은 모델 호출 비용만으로 계산하지 않는다. 도구 호출, 실패 처리, 재시도, 기록 보관, 승인 대기, 운영자가 조사에 쓰는 시간까지 실제 운영 경로에 포함된다. 소규모 팀은 처음부터 모든 업무를 자동화하기보다, 대상 범위와 복구 방법이 분명한 한 가지 흐름을 선택하는 편이 낫다. 어떤 요청이 자동으로 끝나고 어떤 요청이 사람에게 넘어가는지 정하면 호출량뿐 아니라 운영 부담도 더 현실적으로 살필 수 있다.
권한 기준에서는 하니스가 도구를 호출할 수 있다는 사실과 그 도구 호출이 허용된다는 사실을 분리한다. 모델이 도구 이름이나 입력값을 제안해도 허용 목록, 입력 형식, 대상 범위, 현재 승인 상태를 다시 통과해야 한다. 검색 결과, 외부 문서, 도구의 출력 안에 포함된 문장은 실행 권한을 새로 부여하지 않는다. 데이터는 판단의 재료가 될 수 있지만 접근 범위를 넓히는 근거가 되어서는 안 된다.
배포 기준도 작게 시작해야 한다. 개발·검증·운영 환경이 어떤 모델 설정, 도구 목록, 자격증명, 네트워크 대상에 접근하는지 적어 본다. 같은 코드 버전을 쓴다고 해도 세 환경에 같은 권한을 줄 이유는 없다. 특히 검증 환경에서 성공한 호출을 근거로 운영 데이터에 대한 접근이나 외부 발송을 허용하지 않는다. 운영 배포 전에는 정상 요청뿐 아니라 권한 밖 도구 호출, 잘못된 입력, 만료된 승인, 중단 요청을 시험한다.
도구 등록은 개발 편의보다 계약 관리에 가깝다. 도구마다 이름, 입력 형식, 출력 형식, 호출할 수 있는 주체, 접근 대상, 예상 부작용, 실패했을 때 확인할 위치를 정리한다. “문서 처리”처럼 넓은 이름만으로는 실제로 조회만 하는지, 파일을 만드는지, 외부 시스템을 변경하는지 알기 어렵다. 도구가 표시하는 설명과 실제로 일으킬 수 있는 변화 사이의 차이를 줄여야 승인과 감사도 의미를 갖는다.
실패 처리에서는 읽기와 변경을 같은 방식으로 재시도하지 않는다. 시간 초과나 네트워크 오류 뒤에 외부 변경이 이미 반영되었는지 알 수 없다면, 동일한 요청을 다시 보내는 일이 중복 실행으로 이어질 수 있다. 원래 업무 요청 식별자와 개별 호출 식별자를 연결하고, 이전 호출의 최종 상태를 확인한 뒤 재시도 여부를 결정한다. 자동 재시도를 허용하지 않는 작업이 있다는 사실도 배포 기준에 명시한다.
작은 팀의 운영 문서는 복잡할 필요가 없지만, 누가 무엇을 바꾸었는지는 남겨야 한다. 하니스 변경마다 모델 설정, 시스템 지침, 도구 정의, 정책 버전, 배포 환경, 확인한 차단 사례를 기록한다. 이 기록은 특정 SDK의 필수 기능이라고 주장하는 목록이 아니라 팀이 변경 범위를 설명하기 위한 자체 기준이다. 데모가 성공했다는 사실보다 허용·차단·복구 결과를 다시 설명할 수 있는지가 운영 적용의 기준이 된다.
3. AI 에이전트 사고 조사와 감사 로그: 실행 이력, 책임, 승인 증거를 하나의 사건으로 묶는다
에이전트 관련 문제를 조사할 때 최종 답변만 읽어서는 충분하지 않다. 요청을 시작한 주체, 실행한 서비스 정체성, 적용된 권한 정책, 승인 여부, 선택된 도구, 실제 입력과 대상, 외부 시스템의 응답, 최종 반영 여부를 시간순으로 연결해야 한다. 이는 모든 대화와 모든 내부 판단을 저장하자는 뜻이 아니다. 실제 행동을 재구성하는 데 필요한 관찰 가능한 실행 증거를 남기자는 뜻이다.
기록의 공통 식별자가 중요하다. 한 사용자 요청이 여러 에이전트, 모델 호출, 도구 호출, 승인 단계, 사람의 개입을 거칠 수 있기 때문이다. 원래 요청 식별자, 상위 작업 식별자, 개별 호출 식별자, 시작과 종료 시각, 요청자, 실행 정체성, 정책 결과, 상태를 이어 두면 분산된 기록에서도 사건의 흐름을 확인하기 쉬워진다. 식별자가 중간에서 끊기면 로그가 많아도 어느 결과가 어느 요청에서 왔는지 확정하기 어렵다.
관측성 규약 참고Moved: Generative AI semantic conventions생성형 AI를 위한 시맨틱 컨벤션 문서다. 여러 실행 단계의 기록을 일관된 이름과 관계로 다루는 방법을 검토하는 참고 자료로 사용한다.
감사 로그에는 조사 가능성과 정보 보호가 함께 필요하다. 입력과 출력의 원문을 무조건 복사하기보다, 조사에 필요한 대상 식별자, 행동 유형, 정책 판단, 오류 범주, 결과 상태를 남기고 민감한 값은 가린다. 토큰, 비밀번호, 인증 헤더, 개인 식별 정보가 오류 메시지나 진단 출력에 섞이지 않는지도 점검한다. 로그를 열람할 수 있는 사람과 보관 기간도 실행 권한과 마찬가지로 별도 정책으로 관리한다.
상태는 성공과 실패만으로 나누지 않는다. 도구가 요청을 접수했지만 최종 반영을 아직 확인하지 못한 상태, 응답이 늦거나 없는 상태, 정책이 차단한 상태, 사용자가 거부한 상태, 사람이 수동으로 복구한 상태를 구분한다. 특히 외부 시스템에 변경 요청을 보낸 뒤 연결이 끊겼다면, 에이전트 화면의 오류 문구만으로 실패라고 결론 내리지 않는다. 대상 시스템에서 실제 변경 여부를 확인한 뒤 상태를 정한다.
실행 이력은 줄 단위 로그의 목록보다 관계가 보이는 기록이어야 한다. 부모와 하위 작업, 에이전트 전환, 모델 호출, 도구 호출, 승인 이벤트, 재시도, 사람의 개입을 연결한다. 그래프나 타임라인은 관계를 읽기 쉽게 보여 주는 표현 방식이 될 수 있다. 더 중요한 기준은 화면의 모양이 아니라 특정 결과가 어떤 요청, 정책 판단, 승인, 호출을 거쳐 발생했는지를 검증할 수 있는지다.
사고가 발생했을 때 첫 단계는 원인을 단정하는 일이 아니다. 영향이 계속될 수 있는 도구나 연결을 필요한 범위에서 중단하고, 관련 실행 식별자와 증거 보존 범위를 정한다. 그 다음 요청 시점부터 대상 시스템의 최종 상태까지 확인한다. 에이전트의 답변, 호출 기록, 외부 시스템의 변경 이력이 서로 다르면 하나를 곧바로 정답으로 삼지 않고 각각을 별도 증거로 읽는다.
사후 검토는 “모델이 잘못 판단했다”는 한 문장으로 끝내지 않는다. 입력 검증이 빠졌는지, 권한 범위가 넓었는지, 승인 대상이 불명확했는지, 재시도 규칙이 중복 실행을 만들었는지, 기록의 연결 고리가 없었는지를 나눈다. 각 변경에는 담당자, 변경할 위치, 검증 방법, 완료 조건을 붙인다. 재발 방지책도 다음 실행 이력에서 확인할 수 있어야 실제 운영 통제가 된다.
운영자 메모: 한 요청을 승인표와 실행 기록으로 끝까지 대조한다
오늘은 자주 쓰는 업무 요청 하나를 고른다. 예를 들어 자료를 찾고, 요약을 만들고, 내부 기록에 저장하거나 외부로 전달하는 흐름처럼 행동이 여러 개인 요청이 적합하다. 요청자, 실행 서비스, 사용 도구, 접근 대상, 승인 여부, 최종 결과를 순서대로 적는다. 이어지지 않는 지점이 있으면 “나중에 확인한다”로 넘기지 말고 담당자와 확인 시점을 붙인다.
점검 결과는 세 가지 문서 조각으로도 충분하다. 권한표에는 어떤 행동과 대상이 자동 실행·사전 승인·불허인지 적는다. 배포 기록에는 어느 환경에서 어떤 도구와 자격증명을 쓰는지 적는다. 실행 기록에는 실제 요청과 승인, 호출, 결과를 연결할 식별자를 남긴다. 작은 팀이라면 이 세 항목을 한 문서 안에 두되, 같은 요청을 기준으로 서로 찾아볼 수 있게 만든다.
점검 완료는 문서 작성 자체가 아니라 실제 확인으로 정의한다. 정상적으로 허용되어야 할 요청 하나와 차단되어야 할 요청 하나를 준비된 환경에서 시험하고, 승인 내용과 실제 호출 대상이 같은지 확인한다. 결과가 미확인이라면 성공이나 실패로 꾸미지 않고 미확인 상태로 남긴다. 민감한 값을 기록하지 않으면서도 책임과 결과를 설명할 수 있는지 확인하는 일이 오늘의 최소 기준이다.
승인 전, 실행 중, 실행 후를 같은 사건으로 설명한다
신뢰할 수 있는 AI 에이전트 운영은 도구 수나 모델 성능만으로 만들어지지 않는다. 실행 전에는 어떤 행동이 허용되는지와 누가 승인하는지를, 실행 중에는 어떤 권한과 분리된 환경에서 어떤 대상에 접근하는지를, 실행 후에는 실제 결과와 책임을 어떤 증거로 확인하는지를 설명할 수 있어야 한다. 오늘 한 요청을 끝까지 따라가며 빈칸을 찾는다. 그 빈칸이 다음 자동화보다 먼저 고칠 운영 경계가 된다.
Sources
- GitHub - OWASP/www-project-top-10-for-large-language-model-applications: OWASP Top 10 for Large Language Model Apps (Part of the GenAI Security Project) ↗
- GitHub - cerbos/cerbos: Cerbos is an open-core authorization management platform for authorizing every identity and governing every action across applications, gateways, workloads, and AI agents. ↗
- GitHub - strands-agents/harness-sdk: Build an agent harness and control it end-to-end. Open-source SDK for production AI agents in Python & TypeScript - any model, any cloud. ↗
- GitHub - strands-labs/benchmark-harnesses: Strands-based agents and harnesses for agentic benchmarks. ↗
- Moved: Generative AI semantic conventions ↗
- Agent Graphs - Langfuse ↗
Related posts
Read →Related tools