인공지능 에이전트 및 도구 사용 보안
자율 에이전트의 동작을 제한합니다.
인공지능 에이전트 및 도구 사용 보안은(는) CoddyKit의 무료 Cyber Security Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cyber Security Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
에이전트가 위험한 이유
인공지능 에이전트는 도구와 반복 과정이 연결된 LLM입니다. 에이전트는 추론하고, 함수를 호출하며(검색, 코드 실행, 응용 프로그래밍 인터페이스, 파일 접근), 결과를 관찰하고, 목표를 달성할 때까지 이를 반복합니다. 이러한 자율성은 강력하지만 위험합니다.
핵심적인 보안상의 변화는 다음과 같습니다. 일반 챗봇에서는 잘못된 출력이 그저 텍스트일 뿐입니다. 하지만 에이전트에서는 잘못된 결정이 실제 작업이 됩니다. 기록이 삭제되거나, 이메일이 전송되거나, 돈이 지출되거나, 비밀 정보가 유출될 수 있습니다.
신뢰할 수 없는 콘텐츠가 추론 과정에 들어올 수 있으므로, 에이전트가 보유한 모든 도구는 프롬프트 인젝션의 공격 표면이 됩니다.
도구에 최소 권한 적용
가장 중요한 단일 통제는 최소 권한입니다. 각 도구에 작업을 수행하는 데 필요한 가장 좁은 범위만 부여하십시오.
- 읽기/쓰기보다 읽기 전용을 우선하고, 읽기 범위를 현재 사용자의 데이터로 제한하십시오.
- 범위가 넓은 도구를 좁은 도구로 나누십시오(
get_invoice도구를 사용하고, 원시 데이터베이스 질의 도구는 사용하지 마십시오). - 도구 자격 증명을 공유 서비스 계정이 아니라 최종 사용자의 신원에 연결하여, 에이전트가 사용자에게 허용된 작업만 수행하도록 하십시오.
# Scope queries to the authenticated user, never raw SQL
def get_invoice(invoice_id: str, *, user_id: str):
return db.query(
"SELECT * FROM invoices WHERE id=%s AND owner=%s",
(invoice_id, user_id),
)사람 참여 확인 지점
영향력이 크거나 되돌릴 수 없는 작업은 실행 전에 사람의 명시적인 승인을 요구하십시오. 에이전트가 제안하고 사람이 확인해야 합니다.
- 외부 이메일 또는 메시지 보내기
- 금융 거래 또는 구매
- 데이터 삭제 또는 덮어쓰기
- 코드 배포 또는 인프라 변경
사용자에게 정확한 작업과 인수를 쉬운 말로 보여 주어, 삽입되었거나 환각으로 생성된 명령이 실행되기 전에 발견할 수 있게 하십시오.
코드 및 명령 샌드박싱
코드나 셸 명령을 실행하는 에이전트는 반드시 격리된 샌드박스에서 실행해야 하며, 호스트에서 실행해서는 안 됩니다.
- 호스트 마운트 없이 일시적인 컨테이너 또는 microVMs를 사용하십시오.
- 네트워크 접근을 기본적으로 차단하고, 명시적인 외부 연결 허용 목록만 허용하십시오.
- 폭주하거나 악의적인 코드를 제한할 수 있도록 CPU, 메모리 및 시간 제한을 설정하십시오.
- 읽기 전용 루트 파일 시스템에서 루트가 아닌 권한 없는 사용자로 실행하십시오.
docker run --rm \
--network none \
--read-only \
--user 1000:1000 \
--memory 256m --cpus 0.5 \
--pids-limit 64 \
agent-sandbox:latest python /work/task.py치명적 삼요소 끊기
에이전트가 비공개 데이터에 접근하고, 신뢰할 수 없는 콘텐츠에 노출되며, 외부와 통신할 수 있는 세 가지 조건을 동시에 갖추면 데이터 반출 도구가 됩니다. 이것이 치명적 삼요소입니다.
각 작업 흐름에서 다음 구성 요소 중 하나 이상을 제거하도록 설계하십시오.
- 신뢰할 수 없는 콘텐츠를 다루는 세션을 민감한 데이터를 보유한 세션과 격리하십시오.
- 외부 네트워크 송신을 엄격한 허용 목록으로 제한하십시오.
- 문맥에 비공개 데이터가 있을 때 외부로 전송하기 전에 승인을 요구하십시오.
신뢰할 수 없는 도구 출력
도구 결과는 모델의 문맥으로 다시 들어가므로 도구 출력은 신뢰할 수 없는 입력입니다. 웹 페이지, 가져온 파일 또는 응용 프로그래밍 인터페이스 응답에는 다음 추론 단계를 겨냥한 삽입 지시가 포함될 수 있습니다.
- 도구 출력을 명확한 구분 기호로 감싸고, 명령이 아니라 데이터라고 표시하십시오.
- 숨겨진 텍스트(HTML 주석, 폭이 0인 문자, 화면 밖 CSS)를 제거하거나 무력화하십시오.
- 삽입된 콘텐츠의 크기에 상한을 설정하여 페이로드가 들어갈 공간을 제한하십시오.
정책 검사 없이 원시 도구 출력이 다음 도구 호출을 조용히 지시하게 두지 마십시오.
작업 허용 목록 및 정책 적용
모델이 스스로를 통제할 것이라고 기대하지 마십시오. 에이전트와 각 도구 사이에 코드로 구현한 정책 계층을 두고 적용하십시오.
- 각 도구 호출을 허용된 작업과 인수 형식의 허용 목록과 대조하여 validate하십시오.
- 현재 작업의 범위를 벗어나는 호출은 거부하십시오.
- 도구별, 사용자별 호출률 제한과 예산을 적용하십시오.
이 결정론적 관문은 모델의 결정과 관계없이 실행되므로, 주입에 성공하더라도 확고한 장벽에 부딪히게 됩니다.
def authorize(call):
if call.name not in ALLOWED_TOOLS:
raise PolicyError("tool not allowed")
if not SCHEMA[call.name].validate(call.args):
raise PolicyError("bad arguments")
if exceeds_budget(call):
raise PolicyError("rate limit")반복 과정 제한
자율적인 반복 과정은 무한 재시도, 재귀적인 도구 호출, 폭주하는 지출(비용 소진 공격)으로 통제 불능 상태가 될 수 있습니다. 상한을 설정하십시오.
- 작업당 최대 단계 수와 전체 토큰 수에 상한을 설정하십시오.
- 전체 실행에 실제 경과 시간 기준 시간 제한을 설정하십시오.
- 누적 비용을 추적하고 임계값을 넘으면 중단하십시오.
- 반복 과정(동일한 호출의 반복)을 감지하고 빠져나오십시오.
이러한 제한은 서비스 거부 및 무제한 사용 공격도 완화합니다(OWASP LLM10).
메모리 및 다중 에이전트 위험
지속형 에이전트 메모리와 다중 에이전트 시스템은 새로운 공격 표면을 만듭니다.
- 메모리 오염: 한 세션에서 장기 메모리에 기록된 주입이 이후 세션에 영향을 줍니다. 저장되는 내용을 validate하고 저장 범위를 제한하십시오.
- 에이전트 간 신뢰: 침해된 에이전트 하나가 다른 에이전트에 주입할 수 있습니다. 에이전트 간 메시지를 신뢰할 수 없는 것으로 취급하십시오.
- 혼동된 대리인: 높은 신뢰 수준의 에이전트가 낮은 신뢰 수준의 에이전트 요청에 따라 행동하는 문제입니다. 원래 주체의 권한 부여 정보를 전체 호출 경로를 따라 전달하십시오.
로그 기록 및 관측 가능성
볼 수 없는 것은 보호할 수 없습니다. 에이전트의 전체 추적 정보를 수집하십시오.
- 모든 도구 호출과 인수 및 결과를 기록하십시오.
- 포렌식 조사를 위해 추론 문맥과 검색된 콘텐츠를 기록하십시오.
- 이상 징후, 즉 예상치 못한 외부 송신, 권한 사용, 반복된 거부 및 비용 급증을 경보로 알리십시오.
- 행위 사용자와 연결된 변경 불가 감사 추적 기록을 유지하십시오.
우수한 운영 관측 데이터는 조용한 침해를 감지하고 조사할 수 있는 사고로 바꿉니다.
계층형 에이전트 구조
이를 종합하면, 방어 가능한 에이전트 구조는 다음과 같습니다.
- 신원: 작업은 최소 권한 범위를 가진 최종 사용자의 신원으로 실행됩니다.
- 정책 관문: 모든 도구 호출에 결정론적 허용 목록과 구조 검증을 적용합니다.
- 샌드박스: 네트워크와 리소스가 제한된 격리된 실행 환경입니다.
- 사람 확인 지점: 되돌릴 수 없는 작업에는 승인을 요구합니다.
- 제한: 단계, 토큰, 시간 및 비용 예산을 설정합니다.
- 관측 가능성: 전체 감사 로그 기록과 이상 징후 경보를 제공합니다.
모델이 탈취될 수 있다고 가정하고, 탈취되더라도 피해 범위가 작게 유지되도록 하십시오.
빠른 확인
에이전트 보안 제어에 대한 이해도를 확인해 보십시오.
요약
AI 에이전트 및 도구 사용 보안:
- 에이전트는 잘못된 출력을 실제 작업으로 바꾸므로 모든 도구가 공격 표면이 됩니다.
- 도구별로 최소 권한을 적용하고 자격 증명을 최종 사용자에게 연결하십시오.
- 되돌릴 수 없는 작업에는 사람의 승인을 요구하고 코드 실행은 샌드박스에서 수행하십시오.
- 치명적 삼각 구도를 끊고 도구 출력을 신뢰할 수 없는 입력으로 취급하십시오.
- 결정론적인 정책 게이트(허용 목록, 스키마 검증)를 프롬프트가 아니라 코드에서 강제하십시오.
- 반복을 제한하고(단계, 토큰, 시간, 비용) 탐지를 위해 모든 도구 호출을 기록하십시오.
자주 묻는 질문
“인공지능 에이전트 및 도구 사용 보안” 강의는 무료인가요?
네 — “인공지능 에이전트 및 도구 사용 보안” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cyber Security Academy 강의 전체를 잠금 해제할 수 있습니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“인공지능 에이전트 및 도구 사용 보안”에서 뭘 배우나요?
자율 에이전트의 동작을 제한합니다. 브라우저에서 직접 실행하는 실습 코드로 Cyber Security Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cyber Security Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cyber Security Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“인공지능 에이전트 및 도구 사용 보안” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cyber Security Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cyber Security Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 프롬프트 인젝션과 탈옥
- OWASP LLM Top 10
- 인공지능 에이전트 및 도구 사용 보안
- 모델, 데이터 및 공급망 위험