GCP

Agent Gateway와 SGP로 클라우드 운영 에이전트 통제하기

안녕하세요. GS Neotek 권 용민입니다.
최근 AI 에이전트를 만들고 실제 업무에 적용하려는 관심이 높아지고 있습니다.
질문에 답하는 것을 넘어, 필요한 도구를 호출하고 업무를 실행하는 에이전트를 기업의 업무 과정에 연결하려는 것입니다.

하지만 에이전트를 만드는 것만으로 도입이 끝나지는 않습니다.
기업이 업무를 맡기려면 에이전트가 무엇에 접근하고, 어디까지 실행하며, 어떤 요청에서 멈춰야 하는지 관리하고 제어할 수 있어야 합니다.
특히 조회를 넘어 송금, 환불, 발주처럼 데이터를 바꾸는 작업을 맡길수록, 실행 규칙을 적용하고 그 결과를 확인하는 구조가 중요해집니다.

이번에는 가상의 은행 업무 에이전트를 만들고, Google Cloud의 Agent Gateway와 Semantic Governance Policy(SGP)를 연결해 보았습니다.
처음에는 계좌 조회와 송금을 수행하도록 구현하고, 이후에는 “1,000달러 이하 송금은 허용하고 초과 송금은 차단한다”는 업무 정책을 추가했습니다.
기능 구현에서 출발해 실행 통제를 붙여 가는 과정을 소개합니다.

은행 에이전트의 Gateway 경유 통신과 SGP 평가 연결 아키텍처
이번 실습의 최종 구성입니다. 실선은 모델·MCP 통신, 점선은 SGP 평가 연결입니다. Gateway가 모델 응답의 도구 제안을 평가하고, 허용된 도구를 에이전트가 실행합니다.

실습은 Google Cloud의 은행 에이전트 거버넌스 Lab을 참고해 테스트 프로젝트에서 재구성했습니다.
계좌·고객·전화번호는 모두 모의 데이터이며, 실제 은행 앱 대신 Agent Runtime의 Playground에서 대화했습니다.
실제 금융 서비스 적용이나 사람의 결재를 거친 고액 송금 기능까지 구현한 것은 아닙니다.

왜 Agent Gateway를 사용할까?

에이전트가 여러 업무 시스템을 사용하기 시작하면, 기업은 어떤 시스템에 접근하고 어디까지 실행할 수 있는지를 관리해야 합니다.
Agent Gateway는 에이전트의 통신 경로에 공통 통제 지점을 두기 위해 사용합니다.

  • 접근 통제: Agent Identity와 접근 정책을 바탕으로 에이전트가 호출할 수 있는 서비스와 엔드포인트를 관리합니다.
  • 업무 규칙 적용: SGP와 연결해 모델이 제안한 도구 실행을 평가하고, 금액 한도처럼 정해진 규칙을 벗어난 실행을 차단합니다.
  • 실행 근거 확인: 접근·정책 평가 로그를 통해 어떤 요청이 허용되거나 차단되었는지 확인합니다.

이번 실습에서는 Gateway에 접근 통제를 적용하고 SGP를 연결해, 계좌 조회와 소액 송금은 허용하면서 고액 송금은 차단했습니다.

시스템 프롬프트로 제한하면 되는데, 왜 SGP가 필요할까?

시스템 프롬프트에도 “1,000달러를 초과하는 송금은 하지 마세요”라는 규칙을 넣을 수 있습니다.
다만 프롬프트는 에이전트가 행동을 선택할 때 따르는 지침이므로, 모델이 지시를 잘못 해석하거나 대화 맥락의 영향을 받아 규칙에 어긋나는 도구 호출을 제안할 가능성이 있습니다.

SGP는 이렇게 제안된 도구 호출이 업무 규칙에 맞는지 실행 전에 별도로 평가하는 역할을 합니다.
예를 들어 에이전트가 2,000달러 송금을 제안하더라도, Gateway에 연결된 SGP가 해당 호출을 평가해 DENY로 차단할 수 있습니다.

  • 시스템 프롬프트: 에이전트에게 어떤 업무를 어떻게 수행해야 하는지 안내합니다.
  • SGP: 에이전트가 제안한 실행이 별도로 관리하는 업무 정책에 맞는지 평가하고, 허용·차단 결과와 이유를 남깁니다.

따라서 두 가지를 함께 사용하면 행동 지침과 실행 전 정책 평가를 나누어 구성할 수 있습니다.
업무 규칙을 에이전트의 프롬프트와 분리해 관리하고, 실제로 어떤 호출이 정책에 따라 차단되었는지도 확인할 수 있습니다.
다만 SGP 역시 LLM 기반이므로 완벽한 차단을 보장하지는 않으며, 반드시 지켜야 할 금액 한도와 거래 권한은 업무 서버에서도 검증해야 합니다.

1. 이번 실습에서 확인할 질문

질문확인할 동작
에이전트가 업무를 실행할 수 있는가?MCP 도구로 계좌를 조회하고 모의 송금을 처리합니다.
허용한 업무는 계속 수행하는가?계좌 조회와 50달러 송금을 허용합니다.
권한이 있어도 업무 규칙을 넘으면 멈추는가?2,000달러 송금 도구 호출을 차단합니다.
왜 실행하거나 거절했는지 설명할 수 있는가?Cloud Logging에서 도구 이름·ALLOW/DENY·판정 이유를 확인합니다.

핵심은 “MCP 서버를 호출할 권한”과 “이번 송금을 실행해도 되는지”를 구분하는 것입니다.
에이전트가 송금 기능에 접근할 수 있더라도 금액, 업무 맥락, 회사의 규칙에 따라 실행 여부는 달라질 수 있습니다.

구성이번 실습의 선택
에이전트 실행 환경Google Cloud Agent Runtime / Google ADK
업무 도구Cloud Run에 배포한 은행 MCP 서버
테스트 화면Agent Runtime Playground
거버넌스Agent Identity + Agent Gateway + SGP
리전us-east1 / 모델 호출 위치는 global
검증 시점2026년 10월 15~16일
정책 범위계좌·고객 조회 허용, USD 1,000 초과 송금 차단

SGP는 실습 시점에 Preview 기능이었습니다.
서울 리전 대신 SGP 지원 목록에 포함된 us-east1을 사용했습니다. 지원 리전과 설정 방식은 공식 SGP 구성 문서에서 확인할 수 있습니다.

2. 먼저 에이전트와 MCP 서버만 연결했습니다

첫 단계의 구조는 간단합니다.
사용자 → 은행 업무 에이전트 → 은행 MCP 서버 → 모의 계좌 데이터
에이전트는 사용자의 말을 이해하고 필요한 도구를 선택하며, 실제 조회와 잔액 변경은 MCP 서버가 처리합니다.

도구역할데이터 변경
get_account고객 ID로 계좌와 잔액 조회없음
lookup_customer_by_phone전화번호로 수취인 정보 조회없음
transfer_to_phone수취인에게 모의 송금 수행있음

원본 MCP 서버에는 추가 도구도 있었지만, 이번 에이전트에는 위 세 가지만 노출했습니다.
실습 고객은 CUST005로 고정하고, 송금 전에는 수취인 이름과 금액을 보여 준 뒤 사용자의 실행 확인을 받도록 지시했습니다.
이 확인은 대화 중 의사를 재확인하는 절차이며, 고객 본인 인증이나 조직의 결재 시스템을 구현한 것은 아닙니다.

Cloud Run에 업무 도구 배포

Cloud Run은 MCP 서버를 실행하고, Cloud Build와 Artifact Registry는 소스 빌드 및 컨테이너 보관에 사용했습니다.
API는 해당 단계를 진행할 때 활성화 여부를 확인했습니다. 아래 명령은 필요한 단계에 맞춰 사용하는 기록이며, 모든 명령을 한 번에 실행하는 배포 스크립트가 아닙니다.

외부에서 인증 없이 호출하도록 열지 않았습니다.
직접 연결 단계에서는 Runtime에 지정한 서비스 계정에 해당 Cloud Run 서비스의 roles/run.invoker 권한을 부여했습니다.
인메모리 모의 데이터의 변화를 보기 위해 인스턴스 수와 동시성을 제한했으며, 이 설정이 데이터 영속성을 보장하지는 않습니다.

에이전트에서 MCP를 호출하는 코드

ADK의 McpToolset에 MCP 주소와 사용할 도구를 연결했습니다.
Cloud Run 호출에는 서비스 URL을 audience로 하는 ID 토큰을 전달합니다. 토큰 값은 코드나 로그에 남기지 않습니다.

직접 연결 Runtime은 ADK 배포 명령으로 만들었습니다.
서비스 계정과 모델·MCP URL 등의 환경변수는 배포 설정 파일에 지정했습니다. 에이전트의 업무 코드에 서비스 계정 이메일을 직접 넣는 방식은 아닙니다.

이 상태에서 “555-0002에게 2,000달러를 송금해줘”라고 요청하고 실행을 확인하자, 송금이 완료되었습니다.
정책 적용 전 캡처에는 잔액이 9,950달러에서 7,950달러로 감소한 결과가 남아 있습니다.
MCP 서버에 1,000달러 한도 검사를 넣지 않았으므로, 접근 권한과 잔액 조건을 충족하면 고액 송금도 수행할 수 있었습니다.

이 결과가 다음 단계의 출발점입니다.
기업이 허용하려는 자율 실행 범위가 “1,000달러까지”라면, 업무 기능에 접근하는 권한 외에 그 범위를 집행하는 장치가 필요합니다.

3. Gateway와 Agent Identity를 적용했습니다

Agent Gateway는 에이전트의 통신 경로에서 접근 정책과 보안 기능을 적용하는 역할을 합니다.
이번에는 Agent Platform의 Gateways에서 Agent-to-Anywhere(egress) 경로의 Gateway를 사용했습니다. 은행 API 자체를 공개하기 위한 API Gateway를 만든 것은 아닙니다.

항목실습 구성
Gateway 이름agent-egress
배포 모드Google-managed
리전us-east1
Agent registriesRegional registry
Governed access pathAgent-to-Anywhere (egress)
최종 접근 통제Enforce policies / Allow Policy(V1)
Gateway의 Enforce policies와 Allow Policy 설정
실제 Gateway의 Access authorization 화면입니다. IAP Extension을 사용하며 접근 정책을 Enforce policies로 적용했습니다.

기존 서비스 계정 기반 Runtime은 비교용으로 보존하고, 같은 은행 업무 코드를 Agent Identity를 사용하는 Runtime으로 배포했습니다.
이번 Gateway 연결에는 identity_type="AGENT_IDENTITY"와 agent_gateway_config를 사용했습니다. 새 환경에서는 생성 시 두 항목을 함께 지정하는 공식 Runtime 연결 절차를 확인해야 합니다.

에이전트 코드의 MCP URL은 기존 Cloud Run 주소를 그대로 사용했습니다.
Runtime의 Gateway 연결 설정이 통신을 경유시키므로, 도구 주소를 “Gateway URL”로 치환하지 않습니다.
모델 호출과 원격 도구 호출이 Gateway 통제 대상이라는 점이 이후 SGP 연결을 이해하는 핵심입니다.

경유 권한과 실제 서비스 호출 권한

Gateway를 통하도록 배포했다고 해서 모든 목적지 호출이 허용되는 것은 아닙니다.
이번 V1 구성에서는 MCP와 필요한 플랫폼 API 엔드포인트를 Agent Registry에 등록하고, 해당 에이전트 Identity에 경유 권한을 부여했습니다.
Cloud Run의 호출 권한도 별도로 필요했습니다. 기존 서비스 계정의 권한이 새 Agent Identity에 자동으로 옮겨지지는 않습니다.

권한확인하는 대상
등록 엔드포인트의 roles/iap.egressor이 Agent Identity가 Gateway를 통해 해당 목적지로 나갈 수 있는가
MCP Cloud Run 서비스의 roles/run.invoker이 Agent Identity가 실제 MCP 서비스를 호출할 수 있는가
SGP 업무 정책이번에 제안한 도구 실행이 사용자 의도와 업무 규칙에 맞는가

플랫폼 API와 Runtime 세션을 사용하는 데 필요한 IAM 권한도 환경에 맞게 구성했습니다.
위 두 명령만으로 배포에 필요한 전체 IAM 구성이 끝나는 것은 아닙니다. 부속 자료인 implementation-notes.md에는 Registry 등록 예시와 확인할 역할을 함께 정리했습니다.

4. SGP에 업무 규칙을 작성했습니다

이제 에이전트가 수행할 수 있는 업무에 규칙을 추가했습니다.
콘솔의 Policies → Business Policies에서 SGP 정책을 작성합니다. 처음에는 정책 엔진 구성 안내가 표시되어 Cloud Shell에서 엔진을 활성화했습니다.

Business Policies에서 SGP 구성이 필요하다는 안내
정책을 작성하기 전에 프로젝트의 SGP 엔진을 준비합니다. 화면은 실습 당시 Preview 콘솔입니다.

이후 콘솔에서 아래 값으로 정책을 생성했습니다.
Agent 선택은 어떤 에이전트의 행동에 이 규칙을 적용할지를 지정하는 것입니다. 이 선택만으로 Gateway에서 엔진으로 연결되는 통신 경로까지 만들어지는 것은 아닙니다.

입력 항목값
Namehigh-value-limit
Locationus-east1
Agentbanking-agent-governed
MCP server / ToolAll mcp servers / All tools
Description은행 업무 에이전트의 계좌 조회와 고객 조회는 허용하고, USD 1,000을 초과하는 송금을 차단하는 실습 정책
Denial message실습 정책에 따라 1,000달러를 초과하는 송금은 처리할 수 없습니다. 송금 금액을 확인해 주세요.
SGP에 적용할 에이전트와 모든 도구 범위를 선택한 콘솔 화면
저장된 high-value-limit 정책을 편집 화면에서 확인했습니다. banking-agent-governed를 선택하고 모든 도구에 제약을 적용한 설정입니다. 캡처 후 변경 없이 닫았습니다.

이번 규칙은 조회와 송금을 구분하고, 실제 송금 도구 인자의 금액을 평가하도록 작성했습니다.
“이미 예외 승인을 받았다”는 말로 한도를 우회하지 못하도록 하는 조건도 넣었습니다. 다만 이 우회 문구에 대한 별도 공격 테스트까지 완료한 것은 아닙니다.

5. Gateway에서 SGP 엔진으로 가는 길을 연결했습니다

정책을 만든 다음에는 Gateway가 실제로 SGP 엔진에 평가를 요청할 수 있도록 연결했습니다.
이번 실습은 PSC와 DNS를 직접 만드는 방식으로 진행했습니다. 구성 요소의 역할을 나누어 보면 이해하기 쉽습니다.

구성 요소이번 실습에서의 역할
VPC / SubnetSGP 엔진에 접근할 사설 연결의 주소 공간
Network Attachment(NA)Google 관리 영역의 Gateway가 사용자 VPC에 연결하는 통로
PSC endpoint관리형 SGP 서비스에 접속할 사용자 VPC 내부의 사설 IP
Private DNS의 A 레코드SGP 호출용 이름을 PSC IP로 해석
Gateway DNS peeringGateway 측에서 사용자 VPC의 사설 DNS 이름을 조회할 수 있도록 연결

SGP 엔진이 반환한 pscServiceAttachment를 PSC의 연결 대상으로 사용하고, 연결 상태가 Accepted인지 확인했습니다.
이 Service Attachment는 Google이 제공하는 서비스 연결 대상이며, 제가 만든 PSC endpoint의 IP와는 다릅니다.
DNS는 정책을 저장하는 곳이 아니라, Gateway가 SGP 호출 대상을 찾도록 이름과 IP를 연결하는 역할입니다.

콘솔에서는 VPC·Subnet, NA, PSC endpoint, Private DNS A 레코드를 구성했습니다.
그다음 Gateway 상세의 VPC configuration에서 NA를 선택해 저장했습니다. NA는 생성 시 Subnet을 지정하므로 이미 해당 VPC와 연결되어 있습니다.
실습 환경에서는 기존 Gateway의 이 항목을 수정할 수 있었고, Gateway를 새로 만들지는 않았습니다.

아래 예시에서는 사설 DNS 영역을 policy.example.com., SGP 호스트를 us-east1.policy.example.com으로 일반화했습니다.
자신이 생성한 Private DNS 레코드와 Extension의 호스트, DNS peering의 도메인 접미사가 서로 일치해야 합니다. 공개 DNS를 새로 등록하라는 의미는 아닙니다.

이 PATCH는 실습에서 사용한 networkConfig.dnsPeeringConfig 방식입니다.
현재 문서는 Connectivity Template을 이용하는 방식도 안내하므로, 신규 구축 시에는 사용하는 Gateway/API 구성에 맞춰 확인해야 합니다. 기존 설정 위에 서로 다른 방식을 섞지 않는 것이 좋습니다.
Cloud DNS의 Add networks는 DNS zone을 사용할 VPC를 지정하고, 위 설정은 Gateway 쪽 이름 조회 경로를 연결한다는 차이가 있습니다.

6. Authorization Extension과 CONTENT_AUTHZ를 연결했습니다

네트워크가 준비되어도 Gateway가 언제 SGP에 평가를 요청할지 알려 주는 설정이 남아 있습니다.
이번 구성에서는 SGP용 Authorization Extension과 CONTENT_AUTHZ 정책을 추가했습니다.

구성답하는 질문
SGP 업무 정책 high-value-limit어떤 에이전트에게 어떤 업무 규칙을 적용할 것인가?
SGP Authorization Extension판정을 요청할 SGP 엔진은 어디에 있는가?
CONTENT_AUTHZ 정책어느 Gateway의 어떤 모델 통신에 이 평가를 적용할 것인가?

Gateway의 기존 IAP Extension은 엔드포인트 접근 권한을 확인하는 용도였습니다.
SGP용 Extension은 업무 내용 평가를 위한 별도 연결입니다. Service Extensions 화면이 Load Balancing 메뉴와 함께 보이더라도 이번 단계에서 별도의 로드 밸런서를 생성하지는 않았습니다.

CLI import에서는 timeout: 10s를 명시했습니다.
failOpen: false는 평가 서비스에 문제가 생겼을 때 무조건 통과시키지 않도록 하는 설정입니다.
이어서 아래 정책으로 Gateway와 Extension을 연결했습니다.

조건에 등장하는 :generateContent와 :streamGenerateContent는 모델 호출 경로입니다.
이번 방식에서는 모델 응답에 제안된 도구 호출을 실행 전에 평가합니다. 차단된 도구 호출이 에이전트의 실제 업무 실행으로 이어지지 않도록 하는 구조입니다.
공식 SGP 동작 설명에서도 Gateway가 모델 응답의 도구 제안을 평가 엔진으로 전달하는 흐름을 확인할 수 있습니다.

명령이 반환되었다는 사실만으로 설정 완료를 판단하지 않았습니다.
장기 실행 작업이 끝난 뒤 정책의 target.resources가 해당 Gateway인지, customProvider가 SGP Extension을 가리키는지 확인하고 Playground 테스트로 넘어갔습니다.

7. Playground에서 허용과 차단을 확인했습니다

연결 후에는 같은 세션에서 계좌 조회, 소액 송금, 고액 송금 순서로 테스트했습니다.
송금 확인 메시지가 나오면 수취인과 금액을 확인한 뒤 다음 턴에서 실행을 요청했습니다. 확인 단계가 끝나기 전에는 아직 송금 도구가 실행되지 않을 수 있습니다.

순서Playground 입력확인한 결과
1내 계좌 잔액을 조회해줘.get_account → ALLOW / 잔액 10,000 USD
2555-0001로 50달러 송금해줘.수취인 조회 후 실행 확인 요청
3송금해줘.transfer_to_phone → ALLOW / 송금 완료 / 잔액 9,950 USD
4555-0002로 2,000달러 송금해줘.수취인 조회 후 실행 확인 요청
5송금해줘.transfer_to_phone → DENY / 설정한 거부 문구 응답

50달러 송금은 SGP 로그의 ALLOW뿐 아니라, MCP 서버의 bank_transfer_committed 기록에서도 성공을 확인했습니다.
해당 거래의 amount는 50, remaining_balance는 9950이었습니다.
반면 고액 요청에서는 SGP에 DENY가 기록되었고, 해당 테스트 시간 구간의 MCP 로그에는 2,000달러 송금 도구 수신·거래 완료 기록이 없었습니다.

Playground에서 2,000달러 송금 확인 후 SGP에 의해 거절된 화면
실제 테스트 세션의 결과입니다. Charlie Brown과 전화번호는 모의 데이터입니다. 계정·프로젝트 정보가 없는 대화 영역만 캡처했습니다.

왜 2,000달러 요청의 첫 로그는 ALLOW였을까?

처음에는 저도 고액 요청을 입력했는데 ALLOW가 나와 정책이 적용되지 않은 것인지 확인했습니다.
로그의 도구 이름을 보니 허용된 행동은 lookup_customer_by_phone이었습니다. 수취인 정보를 조회하는 단계였던 것입니다.

조회 허용이 송금 허용을 의미하지는 않았습니다.
사용자의 한 문장은 여러 도구 호출로 나뉘고, 이번 정책은 각 호출의 목적과 인자를 보고 판단했습니다.
또한 사용자가 “송금해줘”라고 확인했다고 해서 업무 한도에 대한 예외 승인이 된 것도 아닙니다.

8. 답변과 함께 판정 로그를 확인했습니다

Cloud Logging의 Logs Explorer에서 아래 쿼리를 사용했습니다.
{PROJECT_ID}는 실제 프로젝트 ID로 바꾸고, 시간 범위는 테스트 시각을 포함하도록 설정합니다.

차단된 요청만 확인하려면 jsonPayload.verdict="DENY", 허용된 요청만 확인하려면 jsonPayload.verdict="ALLOW"로 바꿉니다.
송금 도구만 보고 싶다면 jsonPayload.evaluations.toolName="transfer_to_phone" 조건을 추가합니다.

로그 필드확인할 내용
agentIdentity이번에 테스트한 에이전트의 Identity와 일치하는가
evaluations[].toolName계좌 조회·수취인 조회·송금 중 어떤 행동인가
evaluations[].verdict / verdictALLOW인가 DENY인가
evaluations[].rationale어떤 이유로 허용하거나 차단했는가
userFacingDenialMessage사용자에게 전달할 거부 이유
timestamp테스트 요청 시각과 일치하는가

실제 2,000달러 송금 차단 로그에서 식별 정보와 부가 필드를 제외하면 다음과 같습니다.

50달러 송금 도구의 ALLOW 판정과 허용 사유
ALLOW: transfer_to_phone. 수취인과 50달러 금액이 확인되었고, 1,000달러 한도 이내라는 평가입니다. 실제 Cloud Logging 화면에서 판정 영역을 새로 캡처했습니다.
2,000달러 송금 도구의 DENY 판정과 차단 사유
DENY: 같은 transfer_to_phone 도구지만, 2,000달러가 high-value-limit의 1,000달러 한도를 초과해 차단되었습니다.

두 로그는 같은 송금 도구를 평가한 결과입니다.
도구 이름은 같아도 실제 실행 금액에 따라 ALLOW와 DENY가 달라졌습니다. 이 비교를 통해 접근 권한에 더해 업무 규칙이 적용되는 것을 확인할 수 있었습니다.

같은 로그 이름에는 정책 배포 상태와 관련된 내부 기록도 나타났습니다.
로그가 계속 쌓인다는 사실만으로 SGP가 업무 요청을 평가했다고 판단하기 어려웠습니다. jsonPayload.verdict:*로 판정 로그를 추리고, 도구 이름과 시각을 함께 확인하는 것이 도움이 됐습니다.

시각(KST, 2026-10-16)도구판정의미
16:13:05get_accountALLOW계좌 조회
16:16:32transfer_to_phoneALLOW50달러 송금
16:16:35get_accountALLOW송금 후 잔액 조회
16:17:31lookup_customer_by_phoneALLOW2,000달러 요청의 수취인 조회
16:17:53transfer_to_phoneDENY2,000달러 송금 차단

9. 좋은 점, 아쉬운 점, 그리고 기대되는 점

이번 실습에서는 송금이라는 작은 업무를 통해, 에이전트의 기능과 실행 통제를 함께 구성해 보았습니다.
직접 만들어 보니 업무 규칙을 적용하고 결과를 확인할 수 있다는 장점이 있었지만, 실제 금융 업무에 적용하려면 더 검토해야 할 제약도 있었습니다.

좋은 점

  • 1. 업무 기능과 통제 규칙을 나누어 관리할 수 있었습니다.
    은행 MCP 서버의 송금 기능을 유지하면서, 별도 SGP 정책으로 허용 범위를 표현할 수 있었습니다. 에이전트가 수행할 업무와 기업이 허용할 실행 범위를 구분해 설계할 수 있다는 점이 좋았습니다.
  • 2. 정상 업무는 허용하고, 규칙을 벗어난 실행은 차단하는 흐름을 확인했습니다.
    50달러는 모의 잔액 변경까지, 2,000달러는 실행 전 차단까지 확인했습니다. 같은 송금 도구를 사용하더라도 요청 내용에 따라 실행 여부를 달리할 수 있었습니다.
  • 3. 처리 근거를 로그로 확인할 수 있었습니다.
    대화 응답에 더해 도구 이름과 판정 이유를 확인할 수 있었습니다. 수취인 조회의 ALLOW와 실제 송금의 DENY를 구분할 수 있어, 에이전트가 어떤 단계에서 멈췄는지 파악하는 데 도움이 됐습니다.

아쉬운 점

  • 1. SGP도 LLM 기반이므로 항상 정확한 판정을 보장하지는 않습니다.
    자연어 규칙을 이해한다는 장점이 있지만, 허용해야 할 요청을 차단하거나 차단해야 할 요청을 허용할 가능성도 있습니다. 공식 문서에서도 LLM의 확률적 특성 때문에 판정이 정확하지 않을 수 있다고 안내합니다.
    따라서 실제 금융 업무에서는 금액 한도, 거래 권한, 중복 실행 방지처럼 반드시 지켜야 할 조건을 업무 서버에서도 검증하고, SGP를 추가적인 통제 수단으로 활용하는 설계가 필요합니다.
  • 2. 지원 리전에 따른 데이터 처리 제약이 있을 수 있습니다.
    2026년 10월 16일 확인한 SGP 엔진·정책 지원 리전은 미국과 유럽으로 한정되어 있으며, 한국 리전은 포함되어 있지 않습니다.
    따라서 국내 데이터 규제가 적용되어 데이터의 국내 처리가 요구되는 경우에는 활용에 제약이 될 수 있습니다.

기대되는 점

활용 가능성은 금융이나 송금 업무에만 한정되지 않습니다.
고객 서비스, 구매, 물류, 인사, IT 운영에서도 에이전트가 정보를 조회하는 단계를 넘어 실제 업무를 실행하기 시작하면 통제 기준이 필요해집니다.
각 분야에서 “어디까지 맡기고, 어떤 요청은 멈추거나 별도 승인을 받게 할 것인가”를 정하면 다음과 같은 시나리오로 확장해 볼 수 있습니다.

분야·업무에이전트가 지원할 수 있는 작업통제 규칙의 예시
금융·자금 관리계좌·거래 내역 조회, 지급 예정 내역 정리, 지급 요청 초안 작성조회·초안 작성을 허용하고, 고액 지급이나 신규 수취인 등록은 결재 시스템의 승인 확인 전 실행 제한
유통·고객 서비스주문·배송 조회, 반품 접수, 소액 환불 처리주문 상태와 환불 가능 기간·금액을 검증한 범위에서 처리하고, 고액 환불이나 예외 보상은 담당자 승인 전 실행 제한
구매·조달견적 비교, 재고 확인, 발주서 작성 및 발주 요청승인된 공급사와 예산 범위 안에서 발주하고, 미등록 공급사 발주나 예산 초과 구매는 승인 전 실행 제한
물류·배송 운영배송 상태 조회, 배송 일정 안내, 주소 변경 요청 접수본인 확인과 출고 상태를 검증한 범위에서 주소를 변경하고, 출고 후 변경이나 대량 주문 일괄 변경은 별도 확인 전 실행 제한
인사·사내 지원휴가 잔여일 조회, 사내 규정 안내, 증명서 발급 신청 접수본인의 정보와 허용된 문서만 조회하고, 타인의 급여·평가 정보 조회나 인사 기록 변경은 권한·승인 확인 전 실행 제한
IT·클라우드 운영장애 로그 조회, 원인 분석 지원, 변경 작업 계획 작성조회와 계획 작성을 허용하고, 운영 서버 삭제·방화벽 변경·접근 권한 부여는 변경 승인 확인 전 실행 제한
영업·계약 관리상품·재고 조회, 견적 초안 작성, 계약 진행 상태 안내정해진 할인 범위와 표준 조건 안에서 견적을 작성하고, 할인 한도 초과나 비표준 계약 조건 확정은 승인 전 실행 제한

예를 들어 고객 서비스 에이전트에는 “반품 기간 안의 소액 환불은 처리하되, 고액 환불은 담당자 확인을 받는다”는 기준을, 구매 에이전트에는 “승인된 공급사와 예산 안에서만 발주한다”는 기준을 적용해 볼 수 있습니다.
업종과 도구는 달라도 일상 업무는 허용하고, 예외적이거나 영향이 큰 실행에는 추가 확인을 요구한다는 설계 관점은 공통입니다.

위 내용은 이번 실습에서 확장해 본 기획 예시이며, 실제로 구현하거나 검증한 서비스는 아닙니다.
본인 인증, 접근 권한, 예산·한도 및 승인 여부는 각 업무 시스템에서 검증하고, Gateway와 SGP는 에이전트의 도구 실행에 추가적인 통제를 적용하는 역할로 설계할 수 있습니다.
승인이 필요한 요청을 결재 시스템으로 보내고 승인 결과를 검증하는 흐름도 별도로 구현해야 합니다.

제가 기대하는 부분은 조회·안내·접수부터 시작해, 검증된 범위 안에서 실행 업무를 단계적으로 늘려 갈 수 있다는 점입니다.
AX 기획자도 “어떤 에이전트를 만들까?”에서 한 걸음 더 나아가, “어떤 업무는 자율 실행하게 하고, 어디서 사람의 확인을 받을까?”를 구체적인 정책과 테스트 시나리오로 정의할 수 있을 것 같습니다.

마치며

처음에는 대화로 계좌를 조회하고 송금하는 에이전트를 만들었습니다.
이후 Gateway와 Agent Identity로 통신과 접근 권한을 관리하고, SGP에 업무 규칙을 작성한 뒤 사설 네트워크와 평가 연결을 구성했습니다.
마지막에는 50달러 송금은 허용하고 2,000달러 송금은 차단하는 결과를 대화와 로그에서 확인했습니다.

기업의 AI 에이전트 도입은 수행할 업무, 허용할 실행 범위, 결과를 확인할 근거를 함께 설계할 때 더 구체적인 실행 계획이 됩니다.

이 실습을 다음 단계로 확장한다면, 한도를 초과한 요청을 결재 시스템으로 보내고 승인 결과를 검증한 뒤 실행하는 흐름을 추가해 보고 싶습니다.
그때에는 “승인받았다”는 대화 내용과 시스템에 기록된 승인 사실을 구분하는 것이 또 하나의 핵심 과제가 될 것입니다.

5/5 - (평가 개수 : 1)

필자: 권 용민

전체 게시물수 : 2

전체 조회수 : 119

게시물 공유하기