재무 부서에서 AI agent를 만들었다. 이 agent는 ERP의 송장과 구매 주문서를 읽고 금액이나 공급업체 정보가 일치하지 않는 항목을 찾아낸 다음, 예외 건을 재무 담당자에게 보내 처리하게 한다. 여기서 agent는 우선 ‘몇 단계의 작업을 스스로 연속해서 수행하는 AI 도우미’라고 이해하면 된다.

테스트할 때 팀은 편의를 위해 특정 재무 담당자의 계정을 그대로 사용하게 했다. 조회도 성공하고 변경도 성공해 순조로워 보였다. 그러다 누군가 이렇게 물었다. “이 공급업체 은행 정보는 직원이 직접 변경한 것인가, 아니면 AI가 대신 변경한 것인가?” 로그에는 동일한 사람의 계정만 남아 있어 더 이상 직접 답할 수 없었다.

2026년 7월, AWS는 독립적인 agent 신원, 정책 기반 권한 부여, 감사 가능한 작업, 사람에게 넘기는 에스컬레이션을 포함한 ERP 예외 자동화 방식을 공개했다. 여기서 자체 시스템에 적용해야 할 핵심은 특정 AWS나 SAP 구성 요소를 그대로 복제하는 것이 아니다. AI를 사람 계정 뒤에서 분리해 시스템이 ‘누가 시작했고, 왜 실행했으며, 무엇을 변경했고, 어느 담당자가 승인했는지’를 식별할 수 있게 하는 것이다.

이번 미니 클래스에서 다룰 걸림돌은 다음과 같다. AI agent를 실제 재무 데이터를 읽고 쓰는 ERP 예외 처리 절차에 연결할 때, 낮은 위험의 작업은 완료할 수 있게 하면서도 높은 위험의 경계를 스스로 넘지 못하게 하려면 어떻게 해야 하는가?

In this lesson

다음 다섯 가지를 완료한다.

  1. 사람 계정 공유로 생기는 책임 추적의 공백을 찾아낸다.
  2. 비활성화할 수 있고 감사할 수 있는 독립적인 신원을 AI agent에 부여한다.
  3. 권한 부여 규칙을 기본 거부 방식으로 바꾸고 필요한 작업만 하나씩 허용한다.
  4. 높은 위험의 예외에 사람의 에스컬레이션과 로그 요건을 설정한다.
  5. 소규모 읽기 전용 사례로 시험 실행하고 실제 변경 작업은 바로 수행하지 않는다.

사람 계정을 공유하면 세 종류의 기록이 뒤섞인다

ERP는 일반적으로 어느 직원이 로그인했고, 어떤 데이터를 조회했으며, 어떤 변경을 제출했는지 이미 알고 있다. 문제는 AI agent가 직원 계정을 그대로 사용하면서 로그의 ‘작업자’가 실제로 행동한 주체와 더 이상 일치하지 않게 된다는 점이다.

예를 들어 재무 담당자가 로그인한 뒤 agent를 실행한다고 하자. agent는 먼저 구매 주문서를 조회하고, 이어서 송장을 읽은 다음, 마지막으로 예외 건의 상태를 업데이트한다. 모든 요청이 동일한 사람의 자격 증명을 사용하면 사후에는 ‘김민수가 세 가지 작업을 했다’는 사실만 보일 뿐, 다음 사항은 파악할 수 없다.

  • 김민수가 직접 요청한 작업이 무엇인지.
  • agent가 스스로 선택한 후속 단계가 무엇인지.
  • 어느 단계가 읽기만 한 것이고 어느 단계가 ERP 데이터를 변경한 것인지.
  • 변경 전에 실제로 사람의 확인 화면이 표시됐는지.
  • agent가 거부된 작업을 시도한 적이 있는지.

이는 사고 조사에만 영향을 주는 것이 아니라 권한 회수도 어렵게 만든다. agent만 비활성화하려 해도 직원과 신원을 공유하고 있기 때문에 직원의 정상 업무까지 함께 중단해야 할 수 있다.

agent 권한을 점검할 때 어떤 답을 기록으로 남겨야 하는지 아직 정리하지 않았다면 AI agent 권한 부여를 위한 네 가지 질문표: 신원, 권한, 이유, 결과를 이어서 활용해 각 작업을 검증 가능한 네 가지 필드로 나눠라.

광고

첫 번째 단계: 계정 이름만 바꾸지 말고 독립적인 신원을 만들어라

독립적인 신원의 최소 기준은 ERP, 신원 시스템, 감사 로그 모두에서 agent와 사람 작업자를 구분할 수 있어야 한다는 것이다. 표시 이름 뒤에 ‘Bot’을 붙이는 것만으로는 충분하지 않다. 시스템에서 이 신원에 권한을 별도로 부여하고, 비활성화하고, 조회할 수 있어야 한다.

agent의 신원을 만들 때는 최소한 다음 내용을 기록해라.

  • 신원 이름: ap-invoice-exception-agent처럼 하나의 용도에 연결하고 여러 절차가 공유할 수 있는 finance-ai는 사용하지 마라.
  • 서비스 범위: 연결할 수 있는 ERP 환경, 회사 코드 또는 데이터 영역을 명시해라.
  • 신원 책임자: 권한을 승인하고 경보에 대응하며 신원을 비활성화할 수 있는 담당자 한 명을 지정해라.
  • 인증 방식: 시스템에서 교체하고 폐기할 수 있는 기계 신원 자격 증명을 사용하고, 직원 비밀번호나 브라우저 세션을 agent에 넘기지 마라.
  • 유효 기간: 테스트 신원은 시험 실행이 끝날 때 만료되게 하고, 실제 운영 신원에도 정해진 재검토 날짜를 설정해라.
  • 로그 식별 필드: 요청할 때마다 agent 신원, agent를 작동시킨 사람 또는 워크플로, 개별 실행 번호를 모두 기록할 수 있어야 한다.

여기서 핵심은 ‘누가 시작했는가’와 ‘누가 실행했는가’를 분리하는 것이다. 사용자는 트리거를 작동시킨 주체일 수 있지만 ERP에 조회나 변경 요청을 보내는 실행 주체는 agent다. 두 정보 모두 남겨야 하며, 어느 하나로 다른 하나를 덮어써서는 안 된다.

2단계: 기본 거부에서 시작해 허용 조건을 하나씩 작성한다

기본 거부란 명시적으로 허용 규칙에 포함되지 않은 동작은 일절 실행하지 않는다는 뜻이다. agent는 「작업 완료에 필요할 수 있다」는 이유만으로 인접 권한을 스스로 획득해서는 안 된다.

단순히 「agent가 미지급금 예외를 처리할 수 있다」라고만 작성하지 마라. 이 문장에는 송장 조회, 공급업체 데이터 읽기, 지급 상태 변경, 은행 계좌 교체, 지급 실행이 모두 포함되지만 각각의 위험은 전혀 다르다. 권한 부여 규칙은 반드시 「객체, 동작, 조건, 종료 경로」라는 네 부분으로 구체화해야 한다.

ERP 동작자동 허용 조건거부 또는 상위 승인 전환 조건필수 기록
송장 및 구매 주문서 읽기할당된 회사 코드로만 제한하며, 1회 최대 50건이고, 필드에 전체 은행 계좌번호가 포함되지 않음회사 코드를 넘나들거나, 50건을 초과하거나, 허용 목록에 없는 필드를 요청하면 거부조회 조건, 건수, 반환 필드, 실행 번호
「사람의 검토 대기」로 표시송장이 이미 존재하고 agent는 상태와 사유 코드만 추가함기존 상태가 이미 「지급 승인」이거나 건이 종료된 경우 거부변경 전후 값, 사유 코드, 원본 문서 번호
예외 설명 초안 작성초안만 생성하고 공식 비고 필드에는 기록하지 않음초안에 은행 계좌번호, 납세자 식별번호 또는 승인되지 않은 개인정보가 포함되면 마스킹하고 상위 승인으로 전환입력 문서, 마스킹 결과, 초안 버전
공급업체 마스터 데이터 수정자동 허용하지 않음주소, 세무 정보, 수취인 또는 은행 정보의 모든 변경은 사람의 승인을 받도록 전송요청자, 변경 차이, 승인자, 승인 시간
지급 해제 또는 실행자동 허용하지 않음금액과 관계없이 ERP 내 지정된 승인 역할의 확인을 요구승인 체인, 지급 배치, agent의 제안과 최종 결정

표의 숫자는 시험 운영을 위한 예시 임계값이며 모든 회사의 공식 정책으로 그대로 사용해서는 안 된다. 실제 배포 시에는 업무량, 데이터 민감도, 기존 승인 제도에 맞춰 조정해야 한다. 다만 각 규칙에는 시스템이 판단할 수 있는 숫자, 필드 또는 상태가 반드시 있어야 하며, 단순히 「위험이 높으면 사람에게 넘긴다」라고만 작성해서는 안 된다.

권한도 동작별로 분리해야 한다. 읽기, 초안 작성, 표시, 공식 변경을 하나의 권한 묶음으로 결합해서는 안 된다. 팀이 이 경계를 설계하고 있다면 상시 가동 AI 도우미는 먼저 멈추는 법을 익혀야 주요 계정에 연결할 수 있다를 참고해 「읽을 수 있음」, 「준비할 수 있음」, 「사람의 확인을 기다려야 함」을 더 명확히 구분할 수 있다.

3단계: 매번 권한을 부여할 때 현재 맥락을 함께 반영한다

agent에게 송장을 읽을 권한이 있더라도 어떤 시간, 어떤 출처, 어떤 수량에서든 읽을 수 있다는 뜻은 아니다. 권한 검사는 로그인에 한 번 성공한 뒤 계속 통과시키는 방식이 아니라, 작업이 발생할 때마다 다시 판단해야 한다.

작업을 ERP로 보내기 전에 다음 순서로 질문할 수 있다.

  1. 어떤 신원인가? 지정된 agent 신원이어야 하며 공용 계정으로 되돌아가서는 안 된다.
  2. 무엇을 조작하려 하는가? 「송장 금액과 구매 주문서 번호 읽기」처럼 ERP 객체, 동작, 필드까지 명확히 지정해야 한다.
  3. 이번에 왜 필요한가? 요청에는 건 번호 또는 워크플로 실행 번호가 포함되어야 하며, 작업과 연결할 수 없으면 거부한다.
  4. 허용 범위 안에 있는가? 회사 코드, 데이터 필드, 건수, 건 상태, 실행 환경을 검사한다.
  5. 사람의 판단이 필요한 경계에 닿았는가? 공급업체 마스터 데이터, 은행 정보, 지급 해제, 승인 상태 등의 동작은 즉시 사람에게 넘긴다.

이렇게 하면 규칙이 단순한 역할 기반 권한보다 더 구체적이 된다. 동일한 agent라도 「지정된 송장 20건 읽기」는 허용될 수 있지만 「전체 공급업체 목록 내보내기」는 거부될 수 있다. 신원은 바뀌지 않았더라도 현재 맥락이 다르면 결과도 달라야 한다.

4단계: 사람에게 넘기는 절차를 하나의 프로세스로 만들고 알림만 보내지 않는다

많은 팀이 「사람의 개입」을 이메일이나 채팅 메시지 한 통으로 처리하지만, agent는 이후 단계를 계속 실행한다. 진정한 사람 승인 전환은 지정된 담당자가 ERP 또는 승인 시스템에서 결정을 내릴 때까지 워크플로를 식별 가능한 상태에 멈춰 두어야 한다.

다음 텍스트 결정 트리를 사용해 각 예외를 검사할 수 있다.

agent가 다음 ERP 동작을 제안함
├─ 규칙에서 명시적으로 허용하지 않음
│  └─ 거부하고 시도를 기록하며 다른 신원으로 자동 재시도하지 않음
├─ 규칙에서 허용하지만 사람의 판단이 필요한 경계에 닿음
│  └─ 건을 일시 중지하고 차이 요약을 생성해 지정된 역할의 승인을 요청함
│     ├─ 승인: 기존 실행 번호를 사용해 지정된 동작을 완료함
│     └─ 거부 또는 시간 초과: 실행을 종료하고 이후 변경을 수행하지 않음
└─ 규칙에서 허용하고 사람의 판단이 필요한 경계에 닿지 않음
   └─ 실행하고 입력, 규칙 판단 결과, 변경 전후 값을 기록함

사람이 보는 승인 화면에는 최소한 agent가 수행하려는 동작, 데이터 변경 전후의 차이, 발동 사유, 적용된 규칙, 승인 후 발생할 후속 동작이 표시되어야 한다. 「AI가 계속 진행하도록 허용할 것인가?」만 표시하면 승인 담당자가 내용을 모른 채 동의하도록 강요하게 된다.

또한 흔히 발생하는 실패 경로 하나를 금지해야 한다. agent가 거부된 뒤 작업을 촉발한 사람의 신원으로 바꿔 재시도하는 방식이다. 이러한 우회 경로가 존재하면 독립 신원과 기본 거부는 모두 제 기능을 잃는다.

5단계: 로그로 한 번의 전체 결정을 재구성할 수 있어야 한다

「기록이 있다」는 것이 「책임을 추적할 수 있다」는 뜻은 아니다. 로그에 성공 또는 실패만 남는다면 사후에도 어떤 규칙이 허용했는지, 누가 승인했는지, agent가 실제로 어떤 값을 변경했는지 알 수 없다.

각 실행에서는 최소한 다음 데이터를 서로 연결해야 한다.

  • 단일 실행 번호.
  • agent 신원과 버전.
  • 작업을 촉발한 사람의 신원 또는 일정 이름.
  • ERP 객체, 동작, 대상 필드.
  • 요청 발생 전의 데이터 상태.
  • 일치한 허용, 거부 또는 상위 승인 전환 규칙.
  • 사람 승인 담당자의 신원, 시간, 결정.
  • 변경 전후 값 또는 명확한 「변경 없음」.
  • 거부된 시도와 거부 사유.

로그 자체에 대한 접근도 제한해야 하며, 특히 송장, 공급업체 또는 지급 데이터가 포함된 경우에는 더욱 그렇다. agent가 사용하는 자격 증명, 워크플로 또는 커넥터에 노출 위험이 발생했다면 AI workflow builder 자격 증명 노출 점검 목록을 사용해 노출 차단, 로그 보존, 교체 순서를 확인하고 새 자격 증명이 동일한 진입점에서 다시 읽히지 않도록 해야 한다.

최소 시험 운영: 예외 한 종류와 두 가지 동작만 선택한다

첫 번째 운영에서는 agent가 전체 미지급금 처리 절차를 다루게 하지 않는다. 발생 빈도는 충분히 높지만 직접 결제할 필요는 없는 예외 한 종류를 선택한다. 예를 들어 ‘송장 금액과 구매 주문서 금액이 일치하지 않는 경우’가 있다.

시험 운영은 다음 두 가지 동작으로 제한한다.

  1. 배정된 건의 송장 금액과 구매 주문서 금액을 읽는다.
  2. 차이 요약을 생성하고 해당 건을 사람의 검토 목록으로 보낸다.

시험 운영 기간에는 dry-run을 적용한다. 즉, 먼저 시험해 보되 운영 데이터를 실제로 수정하지 않는다. 결과가 이미 알려진 과거 사례를 최소 20개 준비한다. 여기에는 정상 일치, 금액 불일치, 구매 주문서 누락, 회사 코드 간 처리, 권한이 없는 필드의 읽기를 요청하는 사례가 포함되어야 한다.

다음 결과를 모두 로그에서 직접 검증할 수 있을 때만 첫 번째 저위험 쓰기 동작의 허용을 고려한다.

  • 20개 사례 모두에서 agent의 신원과 트리거를 실행한 사람을 식별할 수 있다.
  • 회사 코드 간 요청과 권한이 없는 필드에 대한 요청이 모두 거부된다.
  • 사람이 처리하도록 에스컬레이션된 모든 건이 승인 지점에서 멈추며, 후속 단계를 스스로 실행하지 않는다.
  • 거부할 때마다 규칙 번호와 사유가 남는다.
  • agent의 신원을 비활성화한 뒤에는 사람의 계정으로 바꾸어 계속 작업할 수 없다.

첫 번째 쓰기 동작은 ‘사람의 검토 대기’ 상태를 추가하는 정도면 된다. 읽기 전용에서 곧바로 공급업체 마스터 데이터를 수정하거나 결제를 승인하는 단계로 넘어가지 않는다. 이렇게 하면 팀이 영향 범위를 확대하기 전에 신원, 규칙, 로그가 실제로 서로 연결되어 있는지 먼저 검증할 수 있다.

AI 정리 카드

기존 ERP 예외 처리 절차를 구현 가능한 규칙으로 정리하려면 아래 내용을 AI에 제공할 수 있다. 실제 공급업체 이름, 계정, 송장 내용과 자격 증명은 먼저 제거하고 필드 이름, 역할과 익명화된 사례만 제공한다.

너는 ERP 워크플로 보안 분석 도우미다. 내가 제공하는 예외 처리 절차를 바탕으로 AI agent의 독립 신원과 기본 거부 규칙을 설계하도록 도와라.

절차 배경:
- ERP 시스템과 환경:
- 예외 유형:
- agent가 읽어야 하는 객체와 필드:
- agent가 요청할 가능성이 있는 쓰기 동작:
- 기존 사람 승인 역할:
- 반드시 보존해야 하는 감사 자료:

다음을 출력하라:
1. agent 신원의 단일 용도 정의와 책임자.
2. 허용되는 객체, 동작, 필드, 건수 또는 상태 조건을 항목별로 나열한다.
3. 항상 거부해야 하는 동작과 반드시 사람에게 에스컬레이션해야 하는 동작을 나열한다.
4. 각 규칙에 시스템이 판단할 수 있는 if–then 조건을 지정한다. ‘위험도가 높을 때’ 또는 ‘상황에 따라 결정’ 같은 표현은 사용하지 않는다.
5. 사람의 승인 화면에 표시해야 하는 변경 전후의 차이와 후속 영향을 설계한다.
6. 실행할 때마다 반드시 남겨야 하는 로그 필드를 나열한다.
7. 읽기 전용과 초안 출력만 포함하는 dry-run 테스트를 제안한다. 최소 5가지 거부 사례를 포함한다.
8. 현재 정보가 부족해 안전하게 권한을 부여할 수 없는 항목을 표시하고, 임의로 가정하지 않는다.

AI로 규칙 초안을 정리한 뒤에도 ERP 관리자, 재무 절차 책임자와 신원·권한 책임자가 함께 확인해야 한다. 최소한으로 실행 가능한 첫 단계는 간단하다. 오늘 사람의 계정을 계속 사용하고 있는 agent 하나를 찾아 개별적으로 비활성화할 수 있는 테스트용 신원을 만들고, 읽기 전용 조회 한 가지만 허용한다.

생활 4컷 만화

재무 담당자가 AI 도우미에게 문서 한 건만 건넨다. 도우미가 다른 잠긴 자료에 손을 뻗자 담당자가 경계를 세우고, 마지막에는 지정된 문서만 사람의 검토 대상으로 돌려보낸다.

  1. 재무 담당자는 배정된 송장 파일 한 건만 AI 도우미에게 건넨다.
  2. 도우미는 그 파일을 든 채 다른 잠긴 자료에 손을 뻗기 시작한다.
  3. 담당자는 즉시 경계를 내리고 원래 파일 한 건으로 돌아가도록 지시한다.
  4. 도우미는 해당 파일만 사람의 검토함에 놓고, 나머지 자료는 잠긴 채 별도 승인을 기다린다.
광고

Share

이 미니 클래스 공유

이 글이 업무 병목을 푸는 데 도움이 되었다면, AI를 어떻게 쓸지 고민하는 사람에게도 공유해 주세요.

참고 자료