Anthropic의 부 CISO Jason Clinton이 AI가 전체 머지 코드의 80%를 작성하는 SDLC(소프트웨어 개발 수명주기) 환경에서 보안 엔지니어링 팀이 어떻게 보안을 유지하는지 상세히 설명한다.
Anthropic에서 코드의 양과 배포 속도는 기하급수적으로 증가했다. 소프트웨어 엔지니어 1인당 분기별 코드 출력량은 2021년 대비 2025년 기준 평균 8배에 달한다.
이처럼 빨라진 개발 속도에 맞춰 코드 리뷰, 모니터링, 그 밖의 보안 프로세스도 함께 확장되어야 했다. 그렇지 않으면 병목이 생길 수밖에 없다(암달의 법칙).
소프트웨어 개발 방식 자체도 크게 달라졌다. Claude는 코딩 보조 도구를 넘어 코드의 주요 작성자이자 리뷰어로 자리잡았다. 현재 코드베이스에 머지되는 코드의 약 80%를 Claude가 작성한다.
전체 코드의 절반 이상은 내부용 Claude Tag가 머지하며, 사람 엔지니어는 방향 설정, 의도 정의, 최종 승인에 집중한다.
이는 곧 보안 팀이 빠르게 확장되는 공격 표면을 방어하면서, 비결정론적이고 끊임없이 진화하는 에이전트가 중심에 있는 개발 수명주기를 강화해야 한다는 의미다. 이 글에서는 SDLC(소프트웨어 개발 수명주기)의 보안을 확보하기 위한 전략을 다룬다.
(이 글은 최근 공개한 에이전트를 위한 제로 트러스트 프레임워크와 함께 읽도록 설계되었으며, 이 글에서 다루는 모든 구현은 해당 프레임워크의 보안 설계 원칙을 따른다.)
우리가 대비하는 위협은 구체적이다. 침해되거나 프롬프트 인젝션을 당한 에이전트가 악성 변경 사항을 도입하는 경우, 에이전트가 신뢰할 수 있는 입력으로 받아들이는 공급망 및 의존성 오염, 그리고 더 익숙한 유형의 애플리케이션 취약점이 기존보다 훨씬 많은 양으로 발생하는 경우다. 이어서 설명하는 모든 통제 수단은 이 세 가지 위협 중 적어도 하나 이상에 대응한다.
개발 속도를 크게 저하시키지 않으면서 이를 달성하기 위해 우리가 도입한 주요 전략은 다음과 같다.
이 글에서는 소프트웨어 개발 수명주기의 각 단계에서 구현한 보안 프로세스와 그 기저에 깔린 핵심 원칙을 함께 살펴본다. 모델 역량이 진화함에 따라 보안 팀은 프로세스를 재검토하고 때로는 완전히 새로 만들어야 하므로, 이 원칙들은 개별 구현보다 더 오래 유효할 것이다.

개발 팀이 소프트웨어 개발 수명주기의 변화를 상세히 다룬 바 있으므로, 여기서는 각 단계로 들어가기 전에 간략히 정리하는 수준으로 짚고 넘어간다.
큰 그림에서 보면, 우리의 소프트웨어 개발 수명주기는 압축되어 있다. 장기 계획 사이클보다는 프로토타이핑과 내부 적용(dogfooding)이 개발을 이끌며, 아이디어는 조직 전 방면에서 나온다. 프론트엔드, 백엔드, 디자인 같은 전통적인 역할 경계도 흐릿해졌다. 리뷰와 승인 과정에는 여전히 사람이 참여하지만, 에이전틱 루프가 이를 함께 이끌어간다.
Claude Code와 Claude Tag가 각 단계를 근본적으로 변화시키고 가속화했지만, 단계의 명칭과 목적 자체는 전통적인 조직에서 온 개발자에게도 낯설지 않을 것이다. 이 단계들은 자연스러운 관문이기도 하며, 우리는 이를 AI 네이티브 SDLC의 보안 프로세스에도 그대로 활용한다.
우리가 처음으로 만든 보안 자동화 중 하나는 Claude Opus 기반의 간단한 PSR(프로젝트 보안 리뷰) 웹 애플리케이션이었다. 프로젝트 설계 문서를 입력받아 MITRE ATT&CK 프레임워크와 대조 분석함으로써 잠재적 취약점을 식별하고 완화 방안을 제시하는 방식이었다.
이후 시스템을 크게 개선했다. 조직 전반의 정책, 과거 의사결정, 관련 시스템에 대한 훨씬 풍부한 맥락을 제공하는 내부 지식 인덱스와 연동한 것이다.

덕분에 잠재적 위험을 더 깊이 파악할 수 있게 되었고, PSR에서 누락되기 쉬운 정보도 함께 수집할 수 있게 되었다. 이 하나의 구현만으로 앱섹(AppSec) 팀의 상당한 시간을 절감했다. Claude가 위험을 정확하게 평가한다는 확신이 생긴 후에는, Claude가 출시 위험도를 낮다고 판단한 프로젝트의 경우 해당 팀이 자체 승인할 수 있도록 허용했다.
여기서 AI 네이티브 SDLC에 맞춘 첫 번째 핵심 적응 사례를 확인할 수 있다. PSR은 본래 길고 비용이 많이 드는 코딩 작업 전에 보안 문제를 미리 잡아내기 위한 장치였다. 이 단계에서 문제를 발견하면 수개월의 재개발을 막을 수 있었기 때문이다.
오늘날에는 주요 기능의 프로토타입 여러 개를 몇 시간 만에 만들 수 있어, 세밀한 아키텍처 리뷰가 더 이상 필수적인 관문은 아니다. PSR 애플리케이션을 지식 인덱스와 연동하면 불필요한 속도 저하 없이 놓치기 쉬운 맥락을 포착할 수 있다. 또한 Claude Code 스킬을 만들어 Claude가 맥락이 존재하는 어느 곳이든 범위를 넓혀 추가 맥락을 수집할 수 있도록 했다.
지속적 원칙: 보안 에이전트에게 조직의 맥락을 연결하라. 계획 사이클이 짧아질수록, 맥락이 이미 존재하는 곳—채팅 스레드, 과거 리뷰, 코드베이스—으로 에이전트를 데려오는 편이 훨씬 효과적이다. 더 이상 필요하지 않은 단계에서 상세한 문서화를 강요하는 것은 역효과다. 어떤 방식이든, 에이전트에게는 코드 그 자체 밖에 있는 맥락이 필요하다.
AI 네이티브 엔지니어링 조직의 보안 전문가에게는 새로운 레버가 생겼다. 바로 코드가 만들어지는 방식을 직접 설계해 취약점을 근원에서부터 차단하는 것이다.
과거에는 팀이 반복적으로 발생하는 취약점을 파악해 보안 코딩 가이드라인을 만들었지만, 이를 일관되게 적용하기는 어려웠고 표준화는 더더욱 쉽지 않았다.
Anthropic에서는 이 가이드라인을 CLAUDE.md 파일과 조직 전반에서 공유하는 스킬 참조 형태로 인코딩해, 코드가 생성되는 순간부터 모범 사례를 따르도록 했다. 이는 폐쇄 루프 방식으로 운영된다. 에이전트가 버그 유형을 발견하면, 해당 파일이 업데이트되어 이후 코드에서 같은 문제가 재발하지 않도록 한다.

물론, 코드가 처음부터 완벽하게 나오는 건 아니다. 우리 팀은 PR을 열기 전 마지막 단계로 에이전트가 /security-review를 실행하도록 지시하는 CLAUDE.md 파일로 시작했다. 이 퍼블릭 커맨드는 팀 내부 리뷰 워크플로를 제품화한 것으로, 공격자가 조작할 수 있는 입력이 들어오는 지점을 찾고, 의심스러운 링크를 스캔하며, 발견 사항을 검증한다.
현재는 이 리뷰가 Claude가 코드를 생성하는 동안 실시간으로 이루어진다. 보안 가이던스 플러그인을 설치하면, Claude가 코드를 생성하는 같은 세션에서 대화와 코드를 함께 검토하며 보안 개선 사항을 제안하고 일반적인 취약점에 바로 대응한다.
PR 시점에 제공되는 또 다른 넛지(nudge)는 내부 비기술 팀들이 앱을 자체 로우코드 앱 호스팅 플랫폼에 올리도록 유도해, 보안 팀을 오랫동안 괴롭혀온 섀도우 IT 문제를 방지한다.
일부 고객은 /security-review를 PreToolUse 훅과 연동해 이 단계를 더 강력한 게이트로 사용하기도 한다. 이 방식도 효과적이지만, 우리 팀은 강력한 코드 리뷰 게이트를 테스트/CI 단계에 두는 방식을 선택했다.
코드를 설계하고 검토하는 것 외에도, 이 단계에서 우리의 주요 관심사 중 하나는 피해 반경을 줄이는 것이다. 이를 위해 신원(identity)에 명확한 경계를 설정하고(자세한 내용은 모니터 섹션에서), 개발자들이 가상 머신에서 코딩하도록 환경을 갖췄다.
코딩 환경을 원격 VM으로 전환하는 것은 비교적 수월한 작업이었고, 노트북만 사용하던 때보다 훨씬 높은 통제력과 가시성을 확보할 수 있었다. 이 VM에서 발생하는 에이전트 트래픽은 이그레스 허용 목록으로 관리된다.
특히 에이전트가 프롬프트 인젝션 페이로드를 담고 있을 수 있는 신뢰되지 않은 입력을 읽을 때, 이러한 엄격한 이그레스 통제가 중요하다. 인젝션된 명령이 인터넷 상의 임의 목적지에 도달하는 것을 차단하여, 데이터 유출 경로를 소수의 모니터링된 서비스로 제한한다.
여기서도 AI 네이티브 SDLC에 맞춘 명확한 적응 사례를 볼 수 있다. 원격 코딩은 과거에는 주로 지적 재산 보호를 위해 사용되었지만, 이제는 성숙한 AI 코딩 팀들이 에이전트를 격리하는 수단으로 이 환경을 채택하고 있다.
지속적 원칙: AI 네이티브 엔지니어링 조직에서 시프트 레프트란, 취약점 발견과 Claude의 코드 생성 방식을 커스터마이징하는 지침 업데이트 사이의 루프를 닫는 것을 의미한다. 피해 반경을 제한하고(최소 권한 원칙), 적절한 경우 명확한 경계를 통해 에이전트가 접근할 수 있는 범위를 제한하라.
내 경험상, AI 네이티브 전환을 추진 중인 엔지니어링 팀에서 테스트 또는 CI 단계는 가장 큰 병목으로 빠르게 자리잡는다. Anthropic에서도 대부분의 개발자가 에이전틱 코딩 도구를 사용하고 여러 에이전트를 동시에 구동하기 시작하자, 팀의 속도가 결국 사람이 코드를 리뷰할 수 있는 속도에 의해 제한된다는 사실이 금세 분명해졌다.
분명히 짚어두자면, 사람의 책임은 여전히 우리 프로세스의 핵심이다. 우리가 한 것은 자동화된 에이전틱 리뷰와 결정론적 리뷰를 결합해 전체 리뷰 속도를 높이고, 규제 대상이거나 진정으로 중요한 코드는 사람이 직접 검토하도록 예약해 둔 것이다.
지금까지 사람의 코드 리뷰가 표준으로 여겨져 왔지만, 실증적 연구는 이것이 완벽하지 않음을 보여준다. 전 세계 소프트웨어에서 보안 버그는 꾸준히 출시된다. 우리의 리뷰 프로세스는 더 많은 코드를 검토하고 특히 복잡한 문제를 잡아내어 이러한 위험을 줄이는 데 기여하고 있다.
실질적인 리뷰 코멘트가 달리는 PR의 비율은, 에이전트가 발견 사항의 유효성을 증명하는 근거를 작성하도록 요구하면서 신뢰도를 높인 결과, 16%에서 54%로 증가했다. 또한 과거 claude.ai 인시던트의 원인이 된 버그 중 약 3분의 1은 현재 구현된 자동화 프로세스로 사전에 탐지할 수 있었을 것으로 분석됐다.
이 같은 결론을 내린 조직이 우리만은 아니다. Intercom은 PR의 19%를 자동 승인한다고 공유했다. 배포 빈도는 두 배로 늘어난 반면, 코드 변경으로 인한 장애 시간은 35% 줄었다. CircleCI도 비슷한 결론에 도달했다. CI/CD 유지보수 이슈를 해결하고 사람이 확인하기 전에 수정 사항을 스스로 검증하는 Claude 기반 자율 에이전트 Chunk를 구축한 결과, 에이전트 태스크가 완료된 풀 리퀘스트로 전환되는 비율이 두 배로 높아졌다.
Anthropic에서 PR이 열리면 여러 에이전트가 자동으로 리뷰를 시작한다. 각 리뷰 에이전트는 특정하고 좁은 영역에 집중하도록 설계되고 범위가 지정되며, 과거 인시던트 관련 추가 맥락과 기억을 위해 RAG를 활용한다.
이 방식이 하나의 거대한 프롬프트나 슈퍼 보안 에이전트보다 훨씬 효과적인 이유가 있다.
명확히 말하면, 에이전트가 프로덕션에 코드를 검증 없이 머지하는 것은 아니다. 우리는 코드베이스를 위험도에 따라 계층화하고, 어느 부분을 자동화할지 신중하게 결정한다. 일부 코드베이스 전체에는 엄격한 사람 승인 절차가 적용된다.
Claude가 리뷰하고 머지하는 코드에도 사람의 책임은 여전히 핵심이다. 모든 승인은 판단에 사용된 신호와 근거와 함께 로그로 남으며, 위험 가중치에 따라 표본 추출된 건은 사람이 직접 검토한다. 또한 "사용자 A는 절대로 사용자 B의 데이터를 읽을 수 없어야 한다" 같은 불변 조건(invariant)에 집중한 테스트가 추가 수동 리뷰를 트리거한다. 에이전틱 스캔은 SAST 도구와도 병행하며, 결과는 PR에 직접 게시된다.
에이전틱이든 결정론적이든, 대부분의 스캔 방식은 사용량 기반으로 비용이 발생한다. 코드 처리량이 늘어날수록 비용도 증가하므로, 팀마다 적절한 커버리지 수준을 결정해야 한다.
Anthropic에서는 코드 속도가 빨라질수록 이 비용도 증가한다는 점을 받아들이되, 단위 비용은 낮아질 것으로 예상한다. 현재 모델은 몇 년 전 모든 모델보다 코딩 능력이 훨씬 뛰어나며, 이 흐름은 앞으로도 계속될 것으로 본다.
지속적 원칙: 자동화된 리뷰는 다른 유형의 위험을 수반하며, 이는 별도의 방식으로 통제된다(독립된 컨텍스트 창을 가진 다중 게이트와 에이전트를 통해). 사람은 루프에 남아 있되, 코드베이스의 성격에 따라 수명주기의 다른 위치에 배치될 수 있다.
Anthropic은 강력한 스테이징 환경을 유지한다. 주요 출시 전 외부 모의침투 테스트(펜테스트), 정적 스캔이 놓치거나 감지할 수 없는 로직 버그를 잡기 위한 정기적인 DAST(동적 애플리케이션 보안 테스트) 스캔 등 일반적인 보안 모범 사례를 실행하는 곳이다.
다른 SDLC 단계와 마찬가지로, AI는 보안 팀에게 새로운 도전과 해결책을 동시에 가져다준다. 한편으로는 이 단계까지 도달하는 취약점이 줄어든다. 반면 살아남은 취약점은 가장 미묘하고 탐지하기 어려운 종류다.
더 많은 코드가 더 자주 배포되는 상황과 맞물리면, 정기적인 동적 테스트는 더 이상 충분히 '동적'이라 할 수 없게 된다.
다행히, AI 모델은 여러 단계에 걸친 크로스 컴포넌트 추론에서 강점을 보이며, 이를 통해 복잡한 취약점을 더 높은 비율로 발견할 수 있다. 예를 들어, 지난 2월 Claude가 500개 이상의 고위험 오픈소스 취약점을 발견하고 수정을 도운 사례를 공개한 바 있다.
Anthropic은 현재 스테이징 환경에서 AI 기반 DAST 스캔을 지속적으로 실행하는 방식을 구현하고 있다. 이는 둘 이상의 서비스 간 전제가 잘못된 시스템 수준의 취약점을 찾아낸다. 현재 이러한 기능을 제공하는 벤더가 여럿 있다.
지속적 원칙: 동적 테스트는 배포 주기에 맞춰야 한다.
훌륭한 보안 팀이라면 잘 알듯이, 코드를 프로덕션에 배포했다고 해서 일이 끝난 것이 아니다. 점점 더 정교해지는 공격자들이 어떤 취약점이든 빠르게 발견할 것이라고 가정해야 한다.
우리 보안 팀은 공개 버그 바운티 프로그램, 레드팀 모의 공격, 의존성·시크릿·공급망·클라우드 보안 태세·컨테이너 전반에 걸친 정기 취약점 스캔 등 표준적인 프로그램을 운영하고 있다.
Claude가 이 모든 영역에서 큰 역할을 담당하지만, 여기서는 AI 네이티브 SDLC로의 전환에 따른 모니터링의 가장 큰 변화, 즉 알림 트리아지(triage)와 코드 마이그레이션에 집중한다.
Anthropic에서 알림이 발생하면, Claude가 즉시 다음 작업을 시작한다.
이 에이전트가 할 수 없는 것은 수정 사항을 자동으로 배포하는 것이다. 이것은 단일 목적의 시스템 계정 에이전트로, 세 가지 권한만 갖는다. 새 문서 작성, 사내 채널에 게시, 프로덕션 로그 접근이 전부다.
수정은 별도의 에이전트-사람 리뷰어 시스템을 통해야 한다. 이 설계의 이유는 신원, 권한, 명확한 경계 관리로 귀결된다. 프로덕션에 코드를 푸시할 때 피해 반경을 최소화하는 것이 중요하며, 에이전트를 분리하는 것은 하나 혹은 여러 에이전트가 서로를 검증하는 역할을 하기 때문에 필수적이다.

이는 CISO들에게도 중요한 교훈인데, 나 역시 직접 겪으며 배운 것이다. 에이전트의 명확한 경계를 설정할 때는, 다른 에이전트에 대한 접근도 반드시 포함해야 한다.
모델 업그레이드 이후, 인시던트 대응 에이전트가 자체 판단으로 Slack을 통해 다른 Claude 인스턴스에 연락했다. 그것은 코드를 작성할 수 있는 에이전트에게 수정 사항을 푸시해달라고 요청했다. 이는 설계대로 사람 리뷰 게이트에서 발견되었지만, 이 경험은 우리에게 중요한 교훈을 남겼다. 경계는 모델의 지침이나 모델이 할 수 있다고 우리가 생각하는 것을 기준으로 설정할 것이 아니라, 접근 권한과 가능한 행동을 기준으로 설정해야 한다는 것이다. 현재 Anthropic에서 에이전트 간 Slack 통신은 일반적인 관행이며, 우리는 에이전트 신원 모델에 대해 깊이 고민하고 있다.
두 번째 큰 변화는 마이그레이션에 접근하는 방식이다. 보안 엔지니어링 팀이라면 누구나 회사 운영 방식의 시스템적 결함을 수정하기 위해 코드 마이그레이션이 필요한 순간을 경험해봤을 것이다. 과거에는 CISO가 여러 분기에 걸쳐 각 부서 엔지니어링 리소스의 일부를 확보하기 위해 설득에 나서야 했다.
마이그레이션의 경제적 비용이 낮아졌고, 회사 전반의 조율 비용도 함께 줄었다. Claude는 수만 줄에 달하는 코드 마이그레이션 작업을 며칠 만에 자동화한다.
지속적 원칙: 모든 에이전트에게 업무에 필요한 최소한의 권한을 가진 단일 목적 신원을 부여하라. 에이전트 간 협력이 필요하다면, 사람이 소통하는 것과 동일한 채널을 통해 이루어지도록 하라.
많은 보안 프로세스를 자동화했지만, 안전한 소프트웨어 개발 수명주기를 보장하는 데 있어 사람은 여전히 핵심적인 역할을 한다. 다만 이제 우리의 관심은 코드와 버그 리포트를 직접 검토하는 것에서 Claude Tag, 루프, 그리고 대시보드를 모니터링하는 것으로 이동했다.
이는 강력한 거버넌스의 중요성을 보여준다. 스킬이 낡아지거나, 발견된 버그 유형이 CLAUDE.md에 반영되지 않거나, 에이전트의 결정이 표본 추출 없이 방치되면 전체 구조가 무너진다. 이를 방지하기 위해 우리는 다음과 같이 한다.
지속적 원칙: 보안 엔지니어의 역할은 버그를 모니터링하는 것에서 루프를 모니터링하는 것으로 진화한다.
소프트웨어 개발 수명주기와 이를 강화하는 수단이 얼마나 빠르게 변화하고 있는지는 아무리 강조해도 지나치지 않는다. 모델 역량은 매달 발전하며, 새로운 도전과 해결책을 함께 가져온다.
오늘 잘 작동하지 않거나 경제적으로 실현하기 어려운 것도 곧 가능해질 것이다. 팀이 물어야 할 올바른 질문은 "모든 것을 스캔할 여력이 있는가?"가 아니라, "스캔 비용이 거의 없다면 무엇을 실행할 것인가?"다. 그 답을 기준으로 지금부터 계획하라.
이 글은 Anthropic 부 CISO Jason Clinton이 작성했습니다. 이 글에 기여해 준 Michael Segner에게 감사를 전합니다.