신원 인식 분석으로 비정상적인 AI 동작 탐지

Ming Lu, Kenny Johnson 및 Ayush Kumar

11분 읽기

이 포스트는 다음 언어로도 제공됩니다 English, Deutsch, Español, Español (Latinoamérica), Français, Italiano, 日本語, 繁體中文, 简体中文 및 Nederlands.

AI 청구서를 살펴보는 것만으로는 이상이 있는지 파악하기 어려울 수 있습니다. 먼저 기준선을 설정해야 무엇이 달라졌는지 확인할 수 있습니다. 에이전트가 통제 불능 상태가 된 것인지, 직원의 사용량이 10배 급증한 것인지 등을 파악할 수 있어야 합니다. 이러한 변화를 포착하면 조사를 시작할 수 있지만, 지금까지는 이를 파악하기가 어려웠습니다.

누가 AI로 무엇을 하고 있는지 파악하는 것은 현재 조직이 직면한 주요 과제 중 하나입니다. 스탠포드 대학의 한 보고서에 따르면, 조직의 59%가 책임 있는 AI 거버넌스를 구현하는 데 가장 큰 장애물로 지식 격차를 꼽았습니다. 

이는 재정적 문제인 동시에 보안 문제이기도 합니다. 이러한 문제를 해결하려면 두 가지가 필요합니다. 모든 요청에 검증된 신원을 연결하여 사용량이 급증했을 때 그 주체가 누구인지 파악할 수 있어야 하고, 해당 신원의 정상적인 사용 패턴이 어떤 모습인지도 알아야 합니다. 오늘 Cloudflare는 이 두 가지를 모두 발표합니다.

Cloudflare Access를 사용하는 신원 인식 AI Gateway는 이제 오픈 베타로 제공되며, User Insights는 모든 AI Gateway 고객에게 추가 비용 없이 정식으로 제공됩니다. 두 기능을 함께 사용하면 이미 AI Gateway를 통과하고 있는 트래픽을 바탕으로 이를 사용하는 모든 사용자와 에이전트의 행동 기준선을 설정하고, 기준선에서 벗어나는 사용자와 에이전트를 식별할 수 있습니다.

AI Gateway란?

AI Gateway는 모든 AI 사용을 위한 중앙 제어 영역입니다. 각 애플리케이션과 팀이 OpenAI, Anthropic, Google 또는 Workers AI의 모델을 직접 호출하는 대신, 먼저 AI Gateway를 통해 요청을 라우팅하여 모든 AI 사용을 한곳에서 관찰하고, 보호하고, 관리할 수 있습니다.

AI Gateway는 직접 구축한 애플리케이션뿐 아니라 개발자들이 이미 사용하고 있는 코딩 도구와도 연동됩니다. Claude Code, Codex, GitHub Copilot과 같은 에이전트 하네스를 AI Gateway를 통해 라우팅하면 다른 모든 AI 사용과 동일한 가시성과 제어 기능을 적용할 수 있습니다.

신원 인식 AI Gateway

AI Gateway와 Cloudflare Access를 통합하면 게이트웨이 앞에 사용자 지정 도메인을 배치하고 다른 애플리케이션과 마찬가지로 Access를 통해 보호할 수 있습니다. 이를 통해 다음을 수행할 수 있습니다.

  • Okta 또는 Entra와 같이 SAML을 지원하는 모든 ID 공급자를 통해 인증하여 Cloudflare API 키를 생성하고 공유할 필요를 없앨 수 있습니다.
  • 게이트웨이에 액세스할 수 있는 사용자를 정확하게 지정하는 정책을 설정할 수 있습니다.
  • URL에 계정 ID나 게이트웨이 ID를 포함하지 않고 ai.example.com과 같이 간결한 호스트 이름으로 요청을 보낼 수 있습니다.

이제 인증된 모든 요청에는 Access에서 확인된 사용자의 신원 정보가 포함됩니다. AI Gateway는 검증된 Access 사용자 ID를 cf.user_id로 요청 메타데이터에 추가하므로, 실제로 요청을 보낸 사용자를 기준으로 로그, 분석, 지출을 필터링할 수 있습니다.

지출 한도와 함께 사용하면 이 신원 정보를 예산 관리에도 활용할 수 있습니다. 이제 각 요청에 실제 사용자 정보가 포함되므로 사용자별 지출 한도를 설정할 수 있습니다. 각 사용자에게 개별 예산을 할당하고, 한도에 도달하면 추가 요청을 차단하거나 더 저렴한 모델로 전환할 수 있습니다. 더 이상 예상치 못한 청구서를 받거나 공유 API 키 때문에 누가 얼마를 지출했는지 알 수 없는 일이 없습니다.

우리의 얼리 어답터 중 하나인 Flexport도 바로 이러한 문제를 겪었습니다.

"공유 API 키를 사용하면 누가 AI 서비스를 사용하고 있는지 파악하거나 직원에게 이미 적용 중인 액세스 규칙을 적용하기가 거의 불가능합니다"라고 Flexport의 Staff Security Engineer인 Max Baumgarten은 말합니다. "AI Gateway 앞에 Cloudflare Access를 배치하면 각 요청에 인증된 신원을 연결하고, 게이트웨이에서 기존 신원 정책을 그대로 사용할 수 있습니다. 각 클라이언트마다 별도의 인증 시스템을 구축하지 않고도 우리 팀에서 AI 도구를 도입할 수 있습니다."

조만간 사용자의 ID 공급자 그룹을 활용해 지출 한도를 설정하거나 각 그룹이 액세스할 수 있는 모델을 제어할 수도 있게 됩니다. 예를 들어 머신 러닝 팀에는 프런티어 모델에 대한 액세스 권한을 부여하고, 지원 팀에는 지출 한도를 설정하거나, 특정 프로젝트에 참여하는 모든 구성원에게 하나의 예산을 지정할 수 있습니다. 이 모든 설정은 기존 ID 공급자에서 이미 관리하고 있는 그룹에 매핑할 수 있습니다.

새로운 User Insights 탭

이제 AI Gateway에 User Insights라는 탭이 표시됩니다. User Insights는 게이트웨이를 통과하는 트래픽을 분석하여 각 계정의 행동 패턴을 파악합니다. 각 계정이 평소 어떻게 동작하는지 학습하고, 해당 패턴에서 벗어나는 계정을 식별하며, 통제에서 벗어난 에이전트인지 업무량이 많은 엔지니어인지 구분하는 데 필요한 맥락을 제공합니다. 이미 게이트웨이를 통과하고 있는 트래픽을 활용하므로 별도로 설정할 필요가 없습니다.

User Insights는 비용을 추적하며, 낮은 캐시 적중률이나 지나치게 큰 컨텍스트 창 등 비용이 낭비되는 부분도 파악합니다. 이미 많은 도구가 이러한 기능을 제공합니다. 하지만 기존 도구로는 계정이 평소와 같은 방식으로 동작하고 있는지 파악하기 어렵습니다. Cloudflare는 비용 제어와 더불어 바로 이 부분에 초점을 맞췄습니다. 

모든 계정의 기준선 설정: 사용자와 에이전트

사람이든 에이전트든 모든 계정은 시간이 지나면서 고유한 행동 패턴을 남깁니다. 3시간마다 티켓을 요약하는 에이전트의 행동 패턴은 일정하고 일관적입니다. 반면 사람은 다양한 프롬프트를 사용하고, 사용 시간도 불규칙하며, 어려운 문제를 해결할 때는 긴 세션을 이어가는 등 패턴이 훨씬 다양합니다. 두 경우 모두 정상적인 행동이므로 동일한 수준의 변화라도 한쪽에서는 단순한 잡음일 수 있고 다른 쪽에서는 실제 이상 징후일 수 있습니다.

User Insights에서는 개별 요청이 아니라 세션을 기준으로 점수를 산정합니다. 여기서는 절대 임계값이 제대로 작동하지 않습니다. 사용량이 많은 사용자의 지출이 500달러 증가하는 것은 정상일 수 있지만, 항상 5달러를 지출하던 에이전트가 한 세션에서 50달러를 지출한다면 10배 증가한 것으로, 절대 임계값만으로는 놓칠 수 있는 변화입니다. 따라서 각 세션을 해당 계정 자체의 과거 기록과 비교하며, 최근 30일 동안의 세션 비용 중 95번째 백분위수(p95)를 기준으로 사용합니다. 이를 통해 계정이 평소 어떻게 동작하는지 파악할 수 있으며, p95의 2배를 초과하는 세션은 이상 행동일 가능성이 높은 것으로 판단합니다.

다음 분석에서는 이러한 수치를 도출한 과정을 설명합니다.

그림 1: 세션 비용 이상 탐지

BLOG-3381 2.png

위 차트를 읽는 방법 

위 차트에는 Cloudflare의 실제 내부 트래픽에서 수집한 세션이 표시되어 있습니다. 각 점은 개별 세션을 나타내며, 로그 척도로 표시됩니다.

  • X축(세션 비용): 총 비용(달러)입니다.
  • Y축(사용자 p95 대비 배수): 세션이 사용자의 개별 기준선을 몇 배나 초과했는지를 나타냅니다.

두 개의 점선으로 표시된 임계값에 따라 세션은 다음 네 가지 범주로 나뉩니다.

  • 오른쪽 위(★ 별표): 사용자 p95 기준선의 2배와 계정 수준의 p99 상한을 모두 초과합니다. 상대적으로 큰 폭으로 증가하면서 실제 지출 금액도 비정상적으로 높은 세션으로, 알림이 트리거됩니다. 
  • 쪽 위: 사용자 p95의 2배를 넘는 상대적으로 큰 폭의 증가가 발생했지만, 계정 p99 하한에는 미치지 않습니다. 적은 금액의 변동에 대해 알림이 발생하는 것을 방지하기 위해 무시합니다.
  • 오른쪽 아래: 절대적인 지출 금액은 높지만 해당 사용자의 일반적인 높은 사용량 범위에 해당합니다. 일상적인 행동으로 간주하여 이 역시 무시합니다.
  • 왼쪽 아래: 두 기준선 모두에서 충분히 벗어나지 않는 정상적인 활동입니다.

그림 2: 계정 수준의 세션 비용 분포

BLOG-3381 3.png

이 히스토그램(그림 2)은 조직 전체의 모든 세션 비용을 표시하여 계정 전체에 적용되는 상한선을 설정합니다.

  • 일반적인 사용량: 세션의 대부분은 비용이 10달러에 훨씬 못 미치며, 95번째 백분위수는 20달러입니다.
  • 계정 p99(200달러): 회사 전체 세션 중 200달러 이상이 드는 세션은 1%에 불과합니다.

그렇다면 왜 p99를 선택했을까요? 절대 금액 기준의 상한선을 계정 p99로 설정하면 유의미한 기준을 마련할 수 있습니다. 이를 통해 이상 징후로 판단되는 세션은 특정 사용자에게서 갑자기 발생한 변화일 뿐만 아니라, 조직 전체에서도 비용이 가장 높은 상위 1%의 세션에 해당하도록 보장할 수 있습니다.

그림 3: 개별 사용자의 세션 기록

BLOG-3381 4.png

기준선은 고정되어 있지 않습니다. 계정의 사용 습관이 변화하면 이동 p95(녹색 선)와 2배 임계값(주황색 선)도 함께 조정되므로, 알림은 한 번 설정된 수치가 아니라 항상 최근 행동을 반영합니다. 또한 비용 하한선을 적용하여 통계적으로 이례적이면서 관리자가 조사할 만한 가치가 있는 급증에 대해서만 알림이 발생하도록 합니다. 이 비용 하한선 덕분에 사용량이 극히 적은 사용자의 비용이 몇 센트에서 500배 급증하더라도 알림이 발생하지 않습니다.

비정상적인 행동을 탐지하는 올바른 관점 

위의 모든 분석을 거치고 나면 관리자는 정상적인 활동이 모두 필터링되고, 평소 패턴에서 벗어난 계정만 표시된 화면을 볼 수 있습니다. 이렇게 필터링된 화면이 바로 비정상적인 행동 피드입니다.

세션별로 세분화한 비정상적인 행동
세션별로 세분화한 비정상적인 행동

이러한 행동은 새로운 도구를 사용하거나 차단된 작업을 시도해서 나타나는 것이 아니므로 탐지하기 어렵습니다. 신뢰할 수 있는 계정이 이미 허용된 작업을 평소보다 더 많이 수행하는 것입니다. 예를 들어 서비스 계정이 갑자기 더 많은 고비용 세션을 실행하기 시작하거나, 특정 사용자의 사용량이 평소 수준을 크게 넘어선 뒤 며칠 동안 계속 유지될 수 있습니다.

세션별로 세분화한 비정상적인 행동
세션별로 세분화한 비정상적인 행동

이러한 행동은 어느 것도 정책 위반으로 탐지되지 않지만, 모두 행동 기준선에서 벗어납니다. 계정의 사용량이 평소 패턴에서 갑자기 벗어나는 것은 자격 증명이 탈취되었거나 에이전트가 통제에서 벗어났음을 보여주는 최초의 관찰 가능한 징후인 경우가 많습니다.

사용자 수준의 세부 정보
사용자 수준의 세부 정보

User Insights는 사용자의 의도를 판단하거나 사용자를 차단하지 않습니다. 대신 평소와 다른 행동을 보이기 시작한 소수의 계정을 관리자에게 보여주어, 관리자가 그 원인을 파악할 수 있도록 합니다. 때로는 이를 계기로 실제 조사가 시작되기도 합니다. 때로는 단순히 해당 사용자에게 올바른 사용 방법을 안내하면 해결되기도 합니다(예를 들어 코드 일부만으로 충분한데 매번 전체 코드베이스를 프롬프트에 넣는 개발자처럼 말입니다). 

다음 단계 

비용 제어에서 비용 최적화로 나아갈 수 있도록 지원합니다

예산을 설정하고 나면 자연스럽게 다음과 같은 질문이 생깁니다. 더 낮은 비용으로 동일한 수준의 결과 품질을 얻으려면 어떻게 해야 할까요? 모든 요청에 프런티어 모델이 필요한 것은 아닙니다. 요약 작업이나 간단한 코드 완성 작업은 품질 저하를 거의 일으키지 않으면서 더 저렴한 모델로 처리할 수 있습니다.

Cloudflare는 작업 기반 스마트 라우팅을 개발하고 있습니다. AI Gateway가 수신 요청을 분석하여 가장 낮은 비용으로 최상의 결과를 제공하는 모델로 요청을 라우팅하는 기능입니다. 조직 수준에서는 더 효율적인 모델로 라우팅하여 가장 많은 비용을 절감할 수 있는 부분을 파악할 수 있게 됩니다. 작업 기반 스마트 라우팅은 현재 활발하게 개발 중이며, 기능이 성숙해짐에 따라 자세한 내용을 공유할 예정입니다.

AI가 어떻게 사용되고 있는지 파악할 수 있도록 지원합니다

이상 탐지를 통해 계정이 평소 패턴에서 벗어났다는 사실은 알 수 있지만, 그 이유까지 알 수 있는 것은 아닙니다. 관리자는 여전히 로그를 살펴보고 어떤 일이 있었는지 파악해야 합니다. Cloudflare가 다음으로 집중하고 있는 것은 이러한 간극을 해소하는 것이며, 그 첫 단계는 실제 트래픽의 유형을 분류하는 것입니다.

Cloudflare는 요청을 코딩, 글쓰기 등의 범주로 구분하는 프롬프트 분류 기능을 개발하고 있습니다. 이러한 범주 정보는 거의 모든 다른 신호에 빠져 있는 중요한 맥락을 제공합니다. 엔지니어의 '코딩' 관련 지출이 급증하는 것은 정상일 수 있지만, 해당 계정에서 한 번도 사용한 적이 없는 범주의 지출이 똑같이 급증한다면 그렇지 않을 수 있습니다. 이러한 분류를 통해 조직은 AI를 얼마나 많이 사용하는지뿐만 아니라 어떤 용도로 사용하는지도 파악할 수 있습니다. 

또한 대부분의 논의에서 근본적으로 제기되는 질문에도 답할 수 있습니다. AI가 원래 의도된 업무에 사용되고 있는가? 업무용 트래픽을 나머지 트래픽과 구분하면 개인적인 용도의 AI 사용도 파악할 수 있습니다. 겉으로 보기에는 근무 시간에 개인적인 부업을 하는 사람과 모델을 통해 몰래 데이터를 외부로 반출하는 사람이 똑같아 보일 수 있습니다. 이 둘을 구분하는 것은 내부자 위험을 탐지하는 데 핵심적인 요소입니다. 

AI 트래픽을 AI Gateway를 통해 라우팅하면 새로운 유형의 위험이나 효율성 관련 신호가 추가될 때마다 별도의 설정 없이 관리자가 이를 활용할 수 있습니다.

시작하기

User Insights는 오늘부터 모든 AI Gateway 고객에게 추가 비용 없이 정식으로 제공됩니다. 게이트웨이를 통해 트래픽을 전송하는 모든 사용자의 대시보드에 이미 제공되고 있으므로, AI Gateway를 통해 요청을 라우팅하고 있다면 바로 이 기능을 사용할 수 있습니다. 

아직 사용하고 있지 않다면 게이트웨이를 생성하고 Cloudflare의 카탈로그에 있는 원하는 모델로 요청을 보내 보세요. 

현재 오픈 베타로 제공되는 Cloudflare Access를 AI Gateway 앞에 배치하는 것을 권장합니다. 지출 및 이상 징후 화면은 Access 없이도 사용할 수 있지만, 신원을 연결해야 익명의 계정 ID를 실제로 조치를 취할 수 있는 사용자 이름과 연결할 수 있습니다. 정책을 적용하기 전에 먼저 모니터링 모드로 시작하여 조직의 기준선을 파악하세요.

Cloudflare는 여러분이 현재 AI를 어떻게 관리하고 있는지 듣고 싶습니다. Discord에서 의견을 나누거나 담당 계정 팀에 문의해 주세요.