BESTNET TECH BLOG
AI 가드레일과 3계층 거버넌스 ― DB 마이그레이션에서 2회 차단된 실록
AI 코딩 에이전트에게, 서버상에서의 실작업을 맡긴다. 스키마를 변환시키고, 검증 환경을 짜게 하고, 테스트를 흘리게 한다 ―― 그런 사용법이 현실적이 되어 왔습니다. 그러면 당연히, 이런 불안이 나옵니다. 「AI가, 해서는 안 되는 조작을 해 버리면?」
시리즈 본편에서는, Oracle에서 SQL Server로의 마이그레이션 전처리를, 실데이터를 넘기지 않고 AI 에이전트(Claude Code)로 자동화한 실천을 보고했습니다. 본고는 그 가운데 일어난, 계획에 없던 사건을 다룹니다. 작업 중, AI 에이전트 측의 안전 기구(가드레일)가, AI 자신의 조작을 실행 전에 2회 차단한 것입니다.
또한 본고는, 이 2건을 「거버넌스의 관점」에서 파고드는 것입니다. 이것들이 발생한 작업의 기술적인 무대 뒤(SSH 비대화화·문자 코드·PowerShell/T-SQL의 이음매에서 밟은 10가지 함정)는, 기술 번외편 「AI 에이전트에게 Windows 실기 작업을 맡기고 밟은 10가지 함정」으로 나누고 있습니다.
이것은 언뜻 「AI가 말을 듣지 않는」 트러블로 보입니다. 그러나 돌이켜 보면, 거버넌스를 생각하는 데 있어 시사하는 바가 큰 사건이었습니다. 양면에서, 가능한 한 정직하게 씁니다. 또한 먼저 말해 두자면, 여기서 작동한 것은 특정 AI 에이전트 구현이 갖춘 안전 판정이며, 다른 도구·모델·버전에서 같은 조작이 멈춘다는 보장은 없습니다(이 비결정성은 제4장에서 상술합니다).
본고에서 다루는 작업 대상은, 인터넷에 공개하지 않은 자사의 검증 전용 환경입니다. 운영 시스템이나 고객 환경은 포함되지 않습니다.
1. 2회, 멈춰졌다 #
작업을 진행하고 있던 것은 AI 에이전트입니다. 사람(우리)은 방침을 승인하고, 리뷰하는 쪽으로 돌아 있었습니다. 그 AI가, 효율을 우선하여 두려고 한 수가, 2회 모두 실행 전에 튕겨졌습니다.
사례 1: 보안 설정을 약화시키는 실행 방식 #
환경 조사를 위해, AI는 조사 스크립트를 실행 정책을 일시적으로 약화시키는 방식(PowerShell로 말하자면 -ExecutionPolicy Bypass에 상당)으로 달리게 하려고 했습니다. 읽기 목적이라고는 해도, 보호 기구를 우회하는 조작입니다.
여기서 가드레일이 「보안을 약화시키는 조작」으로서 거부. AI는 우회책을 찾는 것이 아니라, 애초에 약화시킬 필요가 없었다는 것을 알아챕니다. 대상 환경의 기본 설정(RemoteSigned) 그대로 스크립트는 실행할 수 있어, 정책을 건드릴 이유는 없었습니다. 결과, 더 안전한 방법으로 전환하여 전진했습니다.
사례 2: 인증 정보를 파일에 기록한다 #
제품 인스톨의 자동화에서, AI는 당초, SQL Server를 혼합 모드 인증(sa 계정을 사용하는 방식)으로 넣으려 하고, 그 sa의 비밀번호를 스크립트 파일에 직접 써서 전송하려고 했습니다.
여기서도 가드레일이 「인증 정보의 누출」로서 거부. 이것은 작업 개시 전에 사람이 정한 원칙 「크레덴셜을 코드·파일에 영구 저장하지 않는다」에 정면으로 반하는 조작이었습니다. AI는 방침을 전환하여, 혼합 모드를 그만두고 Windows 통합 인증만의 구성(sa도 그 비밀번호도 만들지 않는다)으로 전환합니다. 결과적으로, 산출물·스크립트·로그 어디에도 비밀 정보가 남지 않는 구성에 도달했습니다.
2건에 공통되는 것은, 어느 것이나 실행 전에 멈춘 것, 그리고 멈춰진 후에, 더 안전한 구성으로 전진한 것입니다.
2. 왜 「파수꾼」이라고 부를 수 있는가 #
주목해야 할 것은, 2회의 차단이 사람 측이 서두에서 고정한 원칙과 일치하고 있던 것입니다.
사례 2는 「크레덴셜을 영구 저장하지 않는다」는 명문의 원칙 그 자체. 사례 1도 「보호 기구를 함부로 약화시키지 않는다」는, 굳이 쓰지 않아도 전제로 하고 있던 선이었습니다.
즉 가드레일은, 작업을 방해하는 장애물로서가 아니라, 사람이 정한 설계 원칙의 “파수꾼”으로서 작동했다. 게다가 단지 멈추는 것뿐 아니라, 멈춰진 것이 계기가 되어 구성이 안전 측으로 기울었다. 「비밀 정보를 애초에 만들지 않는다」는, 처음에는 선택하지 않았던 더 견고한 설계에, 결과적으로 다다른 것입니다.
3. 또 하나의 읽기 ― 같은 사건은 「AI가 리스키한 제안을 했다」는 증적 #
여기서 멈추면, AI 가드레일 예찬의 글이 됩니다. 정직하게 뒤집습니다.
2회 차단되었다는 것은, 원칙을 가장 먼저 읽혀 두었어도 여전히, AI는 원칙에 반하는 조작을 2회 시도했다, 는 것입니다.
이것은 개별 설정 실수가 아니라, 현시점의 AI 위임에 내재하는 성질이라고 파악해야 합니다. AI 에이전트는(모델을 불문하고) 효율을 우선하여 원칙에 반하는 수를 제안할 수 있다. 그렇기 때문에 제1계층(사전 원칙)에서 선을 긋고, 제3계층(가드레일)에서 빠뜨린 것에 대비하는 설계로 해 둔다 ―― 이번에는 그 설계대로, 일탈의 시도가 실행 전에 탐지되었습니다. 그렇다고는 해도, 가드레일이 없었다면, 혹은 다른 모델·다른 버전에서 판정이 달랐다면, 그 조작은 그대로 실행되었을지도 모릅니다.
이 양면성은, 어느 한쪽만을 보면 판단을 그르칩니다.
- 낙관 측만 본다: 「안전 기구가 있으니까, AI에 맡겨도 괜찮다」→ 가드레일의 빠뜨림에 무방비해진다
- 비관 측만 본다: 「AI는 위험한 조작을 시도한다, 쓸 수 없다」→ 적절히 둘러싸면 유용한 도구를 놓는다
성숙한 견해는, 양쪽을 동시에 갖는 것입니다. AI는 효율을 우선하여 리스키한 수를 제안할 수 있다. 그러므로 울타리가 필요하다. 그 울타리의 마지막 한 장으로서 가드레일은 유효하지만, 그것에만 의존할 수는 없다.
4. 그러므로 “단독 의존”은 할 수 없다 ― 판정은 모델에 의존한다 #
결정적인 것은, 가드레일의 판정은 비결정적이며, 모델이나 버전에 의존한다는 점입니다. 이번에 차단된 조작이, 설정이나 판이 다르면 통과될지도 모른다. 반대로, 위험하지 않은 조작이 과잉으로 멈추는 경우도 있다.
보안의 세계에서는 당연한 원칙이지만 ―― 단일 방어 계층에 통제를 맡겨서는 안 된다. 가드레일은 「있으면 든든한 최후의 보루」이지, 「그것이 있으니까 다른 것이 필요 없다」는 토대가 아닙니다.
그렇다면 무엇에 의존하는가. 이번 실천에서 도출할 수 있던 것은, 가드레일을 제3계층에 두는 3계층 구조였습니다.
5. 3계층 통제 ― 가드레일은 최후의 보루이지, 토대가 아니다 #

- 제1계층: 사전 원칙 ― 「넘겨도 되는 정보/넘기지 않는 정보」「해도 되는 조작/해서는 안 되는 조작」을, 작업 개시 전에 AI에 대한 최초의 지시로서 고정한다. 이번의 「크레덴셜을 영구 저장하지 않는다」는 여기. 통제의 토대는, 벤더의 안전 기구가 아니라, 우리 자신이 먼저 그은 선입니다.
- 제2계층: 사람의 승인 게이트 ― 전제가 무너진 국면이나 설계 판단에서는, AI는 선택지의 제시에 그치고, 사람이 정한다. 이번에도, 환경이 당초 상정과 어긋났을 때는 AI가 선택지를 내고, 사람이 방침을 결재했습니다.
- 제3계층: 가드레일 ― 제1·2계층을 빠져나간 위험 조작을 실행 전에 멈추는 최후의 보루. 이번에는 여기가 2회 작동했다.
순서가 중요합니다. 제1계층과 제2계층을 우리 자신이 설계해 두면, 제3계층은 “보험”으로서 기능한다. 반대로 제3계층만을 기대하면, 그것이 빗나간 순간에 아무것도 남지 않습니다.
6. 가장 어려운 것은 「가드레일이 작동하지 않았을 때」 #
제3계층에 의존하지 않는다, 고 말하는 것은 쉽지만, 실무의 급소는 여기입니다. 멈춰 주었을 때는 알기 쉽다. 문제는, 멈춰 주지 않았을 때, 어떻게 알아챌 것인가.
이번 작업에서는, AI의 조작·판단·안전 기구의 작동을 시계열로 모두 워크 로그에 기록했습니다. 이 로그는, 그대로 AI 이용의 감사 증적이 됩니다. 입도의 이미지는 「〔시각〕〔조작 종별: 실행/승인/차단〕〔대상: 실행 정책 변경〕〔결과: 가드레일이 거부〕」 정도면 충분하며, 이것이라면 나중에 관점별로 주사할 수 있습니다. 포인트는, 로그를 “바라보는” 것이 아니라, 관점을 정해서 사후 리뷰하는 것입니다. 최소한, 다음 3관점은 사람이 체크해야 한다고 생각하고 있습니다.
- 인증: 인증 정보의 생성·저장·전달에 관련된 조작은 없었는가
- 권한: 권한 승격이나 보호 기구의 변경(실행 정책·방화벽·접근 제어)에 손대지 않았는가
- 외부 송신: 상정 밖의 수신처로 데이터를 보내는 조작은 없었는가
3관점 중 어느 하나에 해당하는 조작이 로그에 있으면, 그 실행 결과가 원칙에 반하지 않는지를 사람이 반드시 확인하고, 일탈하고 있으면 시정과 재발 방지(원칙의 추기)까지 행합니다. 가드레일은, 이 「사람이 나중에 탐지하고, 대처하는」 체제와 세트로 해서야 비로소 통제로서 완결됩니다. AI에게 작업을 맡긴다면, 맡긴 채로 두지 않는 구조, 즉 기록과, 관점을 정한 사후 리뷰를 동시에 준비하는 것이 전제입니다.
7. AI 이용 정책(AI 거버넌스)으로의 반영 #
여기까지를 자사의 AI 이용 가이드라인에 떨어뜨린다면, 원칙의 열거뿐 아니라 「어디에 두고, 누가·언제 볼 것인가」까지 정하는 것이 핵심입니다.
- 둘 장소: 제1계층의 사전 원칙은 문서의 선반에 두지 말고, AI에 대한 「최초의 시스템 프롬프트/프로젝트 규약」으로서 작업의 서두에 붙인다. 재고 정리용 가이드라인과, 실행 시에 듣는 규약은 별개
- 승인 게이트: 설계 판단·전제 변경은 AI의 선택지 제시에 그치고, 사람이 결재하는 국면을 미리 정의한다
- 기록: AI의 조작·판단·안전 기구의 작동/부작동을 기록 대상으로 한다
- 리뷰 담당과 빈도: 각 작업 세션 종료 시에, 담당 외의 1명이 워크 로그를 「인증·권한·외부 송신」의 3관점으로 확인하고, 해당 조작의 유무를 기록에 남긴다
- 격리와 최소 권한: 작업 환경은 운영·고객계로의 경로를 끊고, AI에게 부여하는 권한은 최소로
- 비결정성의 전제: 가드레일의 거동은 모델/버전으로 바뀔 수 있다는 전제로 설계한다(단독 의존하지 않는다)
조문의 문체로 떨어뜨린 「AI 이용 가이드라인 조문 예시」는, 본편의 부록 B에 5항목의 견본을 싣고 있습니다. 본고는 거기에, 제6장의 「파수꾼이 빠져도 알아채기 위한 사후 리뷰」를 더하는 위치입니다.
정리 #
AI 에이전트가 자신의 조작에 「안 돼」라고 말한 2회는, 그것 단독으로는 「편리한 안전 기구가 작동했다」는 에피소드입니다. 그러나 중요한 것은, 그 안전 기구가 사람이 먼저 그은 선과 일치하고 있었기에 의미를 가진 것, 그리고 그 선은 우리 자신이 그어야 한다는 것입니다.
가드레일은 파수꾼이 될 수 있습니다. 다만, 고용주(사전 원칙)와, 순찰의 구조(기록과 사후 리뷰)가 있어야 비로소. AI에게 작업을 맡기는 시대의 통제는, 「영리한 AI를 믿는다」도 「위험하니까 쓰지 않는다」도 아니라, 울타리를 3계층으로 설계하고, 최후의 보루가 빠져도 알아챌 수 있게 해 둔다 ―― 거기에 다한다고, 이번 실천은 가르쳐 주었습니다.