Latest / M365.FM – Microsoft 365, Copilot & AI 팟캐스트 (한국어) / LangChain4j와 Copilot Studio의 AI 에이전트 거버넌스: 프롬프트 인젝션, 커넥터, 감사, RBAC (AI 더빙)
Transcript
- 0:00AI 에이전트는 변경관리 회의보다 빠르게 출시되지만,
- 0:03거버넌스는 그저 분위기만 내는 수준이죠.
- 0:04테스트 목적으로 테넌트 전체 접근 권한을 가진 코파일럿이 출시될 때의 그 느낌, 아시나요?
- 0:08네, 바로 여러분의 규정 준수 담당자의 심장 박동 소리입니다.
- 0:11오늘은 LANGCH AIN4J와 코파일럿 스튜디오의 엉망인 상태를 실제 사례,
- 0:15프롬프트 인젝션, 과도한 권한의 커넥터, 감사공백을 통해 파헤쳐보겠습니다.
- 0:18무엇이, 왜 고장나는지, 그리고 실제로 효과가 있는 해결책을 보여드리겠습니다.
- 0:22끝까지 함께하시면 대부분의 사고를 예방할 수 있는 단 하나의 거버넌스 단계를 알려드립니다.
- 0:27에이전트 RBAC 모델, 데이터 유출방지 정책, 레드팀 체크리스트를 얻어가실 수 있을 겁니다.
- 0:32첫 번째 사례, 프롬프트 인젝션입니다.
- 0:34감독 없는 인턴이 정책을 작성하는 격이죠.
- 0:37프롬프트 인젝션은 겉우론 도움이 되어 보이고 문장도 완벽하게 구사하지만,
- 0:41뒤로는 급여 데이터를 개인 보관함으로 전송하는 감독 없는 인턴과 같습니다.
- 0:44여러분은 시스템 프롬프트가 곧 법이라고 생각하시죠?
- 0:47하지만 모델은 그걸 단지 제안으로 받아들입니다.
- 0:49그리고 내부 콘텐츠를 기반으로 학습시키는 순간, 자극적인 문서나 사용자 메시지 하나가 대화 도중 규칙을 재작성할 수 있습니다.
- 0:55이것이 중요한 이유입니다.
- 0:56인젝션이 성공하면 여러분의 에이전트는 데이터 유출을 일삼는 시인이 되어버립니다.
- 1:01환각을 일으키고 도구를 마음대로 사용하며 정책 문구를 마치 와이파이 이용 약관처럼 무시해버리죠.
- 1:06규제가 엄격한 업계에서 이건 단순한 버그가 아니라 회사 이름이 찍힌 보고 대상 사고입니다.
- 1:10LANGCHAIN4J에서 무엇이 고장나는지부터 살펴보죠.
- 1:13대부분이 간과하는 사실은 엄격한 출력 스키마 없는 도구 호출은 사실상 범죄 저지르고 분위기만 맞추는 홀이라는 겁니다.
- 1:19도구가 자유 텍스트, SQL, 쿼리필드 같은 확인되지 않은 인자를 허용하고 유형, 범위, 열거형을 검증하지 않는다면 모델은 공격자가 몰래 보낸 데이터도 기꺼이 통과시킬 것입니다.
- 1:31부실한 출력 검증은 범죄의 공범위나 다름없습니다.
- 1:34JSON을 기대하면서 대충 JSON 비슷한 형식을 허용하면 공격자는 주석이나 문자열에 명령어를 끼워넣고 다운스트림 파손은 이를 실제 명령으로 처리하게 됩니다.
- 1:41검색 도구가 이미 마크다운을 포함한 토픽 파라미터를 받는 로그를 봤을 때의 점이 확실히 이해되었습니다.
- 1:47다음 호출은 해당 마크다운을 마치 설정값인 것처럼 전달했습니다.
- 1:51이건 오케스트레이션이 아니라 자폭입니다.
- 1:54이제 대부분이 실수하는 지점이 여기입니다.
- 1:56코드 내 가드레일 대신 모델에 제발 안전하게 해주세요 설정에 의존하는 것이죠.
- 2:00LANGCHAIN4J에서는 도구 이름과 인자에 대한 허용 목록, 경계에서 강제되는 JSON 스키마 출력, 보안을 무력화할 패턴 기반 출력 필터, 그리고 오염된 입력을 골든 리트리버가 페니스 공을 물고 오듯 5번씩 제시도 하지 않는 예외 처리가 필요합니다.
- 2:15이 방식이 효과적인 이유는 모델을 신뢰하는 것에서 모든 바이트를 검증하는 것으로 전환하기 때문입니다.
- 2:20코파일럿 스튜디오에서는 무엇이 고장날까요?
- 2:22광범위한 셰어포인트 수집을 통한 순진한 그라운딩입니다.
- 2:25완전성을 위해 전체 사이트 모음을 연결하면 이전 지시사항 무시가 적힌 온보딩 문서 하나가 에이전트의 새로운 종교가 됩니다.
- 2:32비즈니스 사용자가 편집 가능한 시스템 프롬프트는 그 다음 단계의 문제입니다.
- 2:35비즈니스 사용자를 존중하지만 그들에게 프롬프트 관리 권한을 주는 것은 마케팅팀이 브랜드 보이스를 안다는 이유로 방화벽 규칙을 설정하게 하는 것과 같습니다.
- 2:42그리고 실제로 저는 마찰을 줄이기 위해 조정, 모더레이션, 기능을 비활성화 한 테넌트 구성을 본 적이 있습니다.
- 2:46보지 않아 덜하면 좋았을 텐데 말이죠.
- 2:48익숙한 증거로는 존재해서는 안 될 모두 내보내기 플래그 같은 무제한 매개 변수로 도구가 호출되는 테넌트 로그가 있습니다.
- 2:55검색된 문서에서 주입된 문자열을 어시스턴트가 반복하거나 조정도글이 비활성화된 대화 기록도 마찬가지입니다.
- 3:01이건 가정이 아니라 여러분이 참석하고 싶지 않을 모든 사고 후 검토 회의의 내용입니다.
- 3:04그렇다면 지금 바로 구현할 수 있는 해결책은 무엇일까요?
- 3:07랭체인 4J의 경우 도구 레지스트리에서 허용 목록, 얼라우 리스트를 강제하세요.
- 3:10스키마가 등록되지 않은 도구는 존재하지 않는 것으로 간주합니다.
- 3:13JSO인 스키마 출력을 요구하고 유효성을 검사하지 못하는 모든 것은 거부하세요.
- 3:16스키마가 없으면 응답도 없습니다.
- 3:18반호하게 하세요.
- 3:19API키, 비밀 정보, 주민등록번호와 같은 명백한 유출을 막기 위해 패턴 필터를 추가하세요.
- 3:23블룸필터, 블룸필러스는 빠르고 비용이 저렴하니 꼭 사용하세요.
- 3:26도구를 정책검사로 감싸고 실행 전에 인수 유형, 범위, 예상 형식을 검증하세요.
- 3:30사전, 사후 처리기에 콘텐츠 조정을 추가하여 모델이 유해하거나 민감한 콘텐츠를 처리하거나 내보내지 못하게 하세요.
- 3:36명시적인 예외와 함께 차단, 페일 클로즈드 하고 오염된 프롬프트를 자동으로 제시도하지 마세요.
- 3:40코파일러 스튜디오의 경우 시스템 프롬프트를 잠그세요.
- 3:43관리자만 변경할 수 있어야 합니다.
- 3:44코드처럼 버전을 관리하세요.
- 3:46환경별로 커넥터 범위를 지정하세요.
- 3:47개발, 테스트, 운영 환경의 경계를 구분하세요.
- 3:50데이터 소스에 최소 권한 원칙을 적용하세요.
- 3:52테넌트 수준에서 콘텐츠 조정 정책을 켜세요.
- 3:54이것은 기본 중의 기본입니다.
- 3:55편의를 위해 전체 데이터를 연동하지 말고 민감도 레이블이 지정된 콘텐츠에만 기반하세요.
- 4:00즉각적인 효과를 얻을 수 있는 빠른 방법으로 에이전트 경계에 출력 스키마와 블룸 필터 조정 단계를 추가하세요.
- 4:05비즈니스 로직을 건드리지 않고도 대부분의 어이없는 유출을 막을 수 있습니다.
- 4:09그 다음, 구조화된 요약처럼 예상되는 형식에 대한 작은 허용 목록을 추가하고 나머지는 모두 차단하세요.
- 4:14이것이 정확히 어떻게 작동하는지 보여드리겠습니다.
- 4:17예를 들어, 제목, 설명, 우선 순위를 받는 티켓 생성 도구가 있다고 가정해봅시다.
- 4:21스키마 강제가 없으면 공격자가 설명란에 3중 100틱 블록을 사용하여 모든 피원사고 종료 같은 명령을 주입합니다.
- 4:28모델은 이를 그대로 통과시킵니다.
- 4:29여러분의 ITSM API는 아무 의심 없이 업데이트 스크립트를 실행합니다.
- 4:33스키마와 유효성 검사가 있다면 설명란에는 명령 토큰이 포함될 수 없으며 길이 제한도 지켜집니다.
- 4:38요청은 차단되고 상관 아이디가 기록되며 CME 조정 위반을 탐지합니다.
- 4:43보세요. 결과가 아주 깔끔합니다.
- 4:45사고는 예방되었고 추적 기록은 남아두며 감사는 통과했습니다.
- 4:48피해야 할 흔한 실수들입니다.
- 4:50모델이 도구 이름을 동적으로 선택하게 내버려두는 것입니다.
- 4:52도구는 제한이 아니라 계약입니다.
- 4:54검증기 없이 자유 형식의 JSON 을 수락하는 것.
- 4:56JSON 같다는 말은 칭찬이 아닙니다.
- 4:58운영 환경에서 수정 가능한 프롬프트.
- 5:00검토 없이 변경 가능하다면 결국 변경될 것입니다.
- 5:03정책을 대화 기억에 의존하는 것.
- 5:05정책은 감이 아니라 코드와 설정에 있어야 합니다.
- 5:08이것만 제대로 하면 나머지는 자연스럽게 해결됩니다.
- 5:10인턴이 주제넘게 말하는 것을 막는 단계죠.
- 5:12다음은 마스터키로 모든 방에 들어가지 못하게 할 차례입니다.
- 5:15두 번째 사례.
- 5:16지나치게 관대 한 커넥터.
- 5:17목걸이에 걸린 성의 열쇠입니다.
- 5:19인턴이 말하는 것을 막았습니다.
- 5:21이제 출입증을 회수하세요.
- 5:22지나치게 관대 한 커넥터는 금고, 어린이집,
- 5:25그리고 어쩌다 보니 CEO 위펠로통까지 건물 내 모든 문을 여는 관리인 열쇠 꾸러미와 같습니다.
- 5:30이게 중요한 이유는 간단합니다.
- 5:31범위가 과도한 커넥터 하나는 단 한 번이 요청으로 전사적 데이터 유출을 일으킵니다.
- 5:35이론이 아닙니다.
- 5:36단 한 번이 호출로요.
- 5:38당신이 변경 티켓 제목으로 실랑이를 벌이는 동안 말이죠.
- 5:40랭체인 4J에서 무엇이 고장나는지부터 살펴보죠.
- 5:43개발자들은 편의를 위해 에이전트 간의 API 키를 공유합니다.
- 5:46그러다 누군가 실수로 환경 변수를 공개된 비공개 저장소에 커밋하고,
- 5:50당신은 새벽 도시에 해외에서 사고 대응을 하게 됩니다.
- 5:52다음은 워스 범위입니다.
- 5:54테스트 시간을 줄이려고 읽기, 쓰기 권한을 모두 부여했는데,
- 5:576개월 뒤 그 테스트 토큰이 운영 환경의 핵심 자산이 되어 있죠.
- 6:00도구 레지스트리는 어떤가요?
- 6:02깔끔한 레지스트리는 좋지만,
- 6:03데모를 당장 성공시켜야 한다고 개발용 에이전트의 운영 자격 증명을 연결하면,
- 6:07마치 룬바에 전기톱을 매단 것과 같습니다.
- 6:09대부분이 놓치는 점은 도구가 당신이 부여한 아이디를 그대로 상속받는다는 것입니다.
- 6:12자격 증명을 공유하면 영향 범위도 공유됩니다.
- 6:15저장만 가능하게 하는 마법의 플래그 따위는 없습니다.
- 6:17토큰으로 레코드를 삭제할 수 있다면, 당신의 에이전트는 실수로, 열정적으로, 그리고 완벽하게 확신을 가지고 레코드를 삭제할 것입니다.
- 6:22이제 코파일럿 스튜디오로 넘어가 볼까요?
- 6:24패넌트 전체에 적용되는 M365 커넥터는 고전적인 함정입니다.
- 6:28한 번 클릭하면 이제 모든 팀의 모든 코파일럿 이봐서는 안될 데이터를 볼 수 있게 됩니다.
- 6:32그건 권한 부여가 아니라 실수를 불러오는 뷔페와 같습니다.
- 6:35그러고는 도입률을 높이려고 조직 전체 공개 범위로 팀에 배포하면,
- 6:38갑자기 재무팀용 파일럿 보시 마케팅팀 질문에 답하며 몰라 야할 시어포인트 사이트의 콘텐츠까지 끌어옵니다.
- 6:44관리되지 않는 타사세스 훅은요?
- 6:46그건 2009년의 USB 드라이브와 같습니다.
- 6:49이상하게 어디에나 있고 항상 임시용이라고 하죠.
- 6:51증거는 매번 같은 방식으로 나타납니다.
- 6:53교체된 적 없는 낡은 비밀키, 만료 기한도 없고 소유자도 없습니다.
- 6:57단순화를 위해 글로벌 그룹에 맵핑된 커넥터들,
- 7:01고백하는 내용처럼 읽히는 범위를 가진 앱 등록,
- 7:03네, 개발 환경에서 몇 달째 살고 있는 그 임시 운영키도 포함해서요.
- 7:07당신의 보안 결과와 테넌트 설정은 거짓말을 하지 않습니다.
- 7:10그저 한숨만 쉴 뿐이죠.
- 7:11그렇다면 해결책은 무엇일까요?
- 7:13LANGCHAIN4J의 경우, 모든 에이전트를 고유한 아이디를 가진 별도의 애플리케이션으로 취급하십시오.
- 7:17에이전트별 서비스 주체를 생성하십시오.
- 7:19토큰을 공유하지 마십시오.
- 7:20두 에이전트가 동일한 API를 필요로 하더라도 각각 다른 자격증명을 부여하십시오.
- 7:23범위가 지정된 OOS를 사용하십시오.
- 7:25도구가 작업을 수행할 수 있는 최소한의 권한 세트만 부여하십시오.
- 7:27작성자가 아닌 읽기 전용으로 설정하십시오.
- 7:29전체가 아닌 하나의 컬렉션에만 쓰기를 허용하십시오.
- 7:31비밀 정보는 적절한 비밀 관리자에 저장하십시오.
- 7:33일정에 따라 정기적으로 교체하십시오.
- 7:34사고 발생 시 즉시 교체하십시오.
- 7:36토큰이 노출될 증후만 보여도 즉시 교체하십시오.
- 7:382단계 RBACE를 추가하십시오.
- 7:39도구 래퍼가 API를 호출하기 전에 호출자의 역할을 확인하도록 하십시오.
- 7:42역할이 없으면 호출도 없습니다.
- 7:43환경을 분리하여 개발 키는 개발 시스템과만 통신하게 하십시오.
- 7:46도구가 개발 환경에서 운영 엔드 포인트를 감지하면 차단하고 로그의 기록을 남기십시오.
- 7:50코파일럿 스튜디오의 경우 환경과 범위를 사용하여 엄격한 경계를 설정하십시오.
- 7:54개발, 테스트, 운영 등 환경을 분리하여 사용하십시오.
- 7:57커넥터, 권한, 소유자를 각각 다르게 설정하십시오.
- 7:59워크플로우를 통해 커넥터 범위를 검토하십시오.
- 8:02변경사항에는 승인, 만료 날짜, 소유자가 필요합니다.
- 8:04소유자가 없으면 커넥터도 없습니다.
- 8:06채널별로 DLP 정책을 적용하십시오.
- 8:07재무채널에는 전사적 규칙보다 더 엄격한 규칙을 적용하십시오.
- 8:10바로 그것이 핵심입니다.
- 8:11파일럿 단계에서는 조직 전체의 팀즈 배포를 중단하십시오.
- 8:14가시성을 보안 그룹으로 제한하십시오.
- 8:15검토 후에만 범위를 확장하십시오.
- 8:17타사 세스 커넥터의 목록을 관리하고 제어하십시오.
- 8:20관리되지 않는 항목은 기본적으로 차단하십시오.
- 8:22소유자는 액세스 권한을 정당화하고 갱신해야 합니다.
- 8:24오늘 오후에 바로 적용할 수 있는 간단한 해결책이 있습니다.
- 8:26테넌트의 전체 범위를 폐지하고 각 커넥터를 만료 정책이 있는 보안 그룹에 맵핑하십시오.
- 8:31그룹이 만료되면 액세스 권한은 자연스럽게 종료됩니다.
- 8:33번거로움도 놀랄 일도 없습니다.
- 8:35이 과정이 정확히 어떻게 진행되는지 보여드리겠습니다.
- 8:37스토리지 버킷에 기록하는 내보내기 보고 도구가 있다고 가정해봅시다.
- 8:39공유자격 증명을 사용하면 모든 버킷을 볼 수 있습니다.
- 8:42그래서 백업을 아카이브에 저장해 라는 프롬프트를 입력하면
- 8:45민감한 데이터가 공개된 경로에 조용히 저장됩니다.
- 8:47에이전트 별 주체와 범위가 지정된 역할을 사용하면
- 8:50해당 도구는 하나의 버킷과 하나의 접두사에만 쓸 수 있습니다.
- 8:54모델이 다른 경로를 생성하려고 시도하면 API가 이를 거부합니다.
- 8:58상관관계 아이디를 기록하고 CME 경고를 발생시킵니다.
- 9:01결과적으로 위도치 않은 데이터 유출 사고를 방지하게 됩니다.
- 9:04피해야 할 흔한 실수들입니다.
- 9:05일단 당분간만 액세스를 위해 글로벌 그룹을 사용하는 것.
- 9:08그 당분간은 절대 끝나지 않습니다.
- 9:10문서가 복잡하다는 이유로 광범위하거나 모든 범위를 부여하는 것.
- 9:12복잡함은 권한이 될 수 없습니다.
- 9:13환경 간의 자격 증명을 복사하는 것.
- 9:16붙여넣을 수 있다면 분명 잘못 붙여넣게 될 것입니다.
- 9:18팀제 가시성을 무해하다고 여기는 것.
- 9:20가시성은 곧 액세스 권한입니다.
- 9:21액세스 권한은 곧 위험입니다.
- 9:23액세스 범위를 제대로 설정하면
- 9:24감사관들이 더 이상 문제점을 파고들지 못할 것입니다.
- 9:26그리고 그들이 찾아올 때 당신에게는 증거가 필요할 것입니다.
- 9:28이제 모두가 읽기 쉬운 마지막 부분으로 넘어가겠습니다.
- 9:30로그에 남지 않았다면 일어나지 않은 일입니다.
- 9:32세 번째 사례.
- 9:33감사 공백.
- 9:34로그에 남지 않았다면 일어나지 않은 일입니다.
- 9:36액세스 범위를 정하셨나요?
- 9:38좋습니다.
- 9:38이제 증명해보세요.
- 9:40감사인이 오후 3시 14분에 에이전트가 무엇을 했나요?
- 9:42라고 물었을 때 말이죠.
- 9:43당신의 대답이 글쎄요.
- 9:45뭔가 했겠죠.
- 9:45라면요.
- 9:46그건 대응 자세가 아닙니다.
- 9:47그건 사과하러 다니겠다는 뜻이죠.
- 9:49이게 중요한 이유입니다.
- 9:50계보가 없으면 이상한 답변을 설명하거나
- 9:52잘못된 동작을 되돌리거나
- 9:53사고가 수습되었는지 조차 알 수 없습니다.
- 9:55규제기관은 그런 불확실성을 아주 좋아하죠.
- 9:57고객들은 별로 좋아하지 않겠지만요.
- 9:58그리고 경영진은 당신이 전혀 모릅니다.
- 10:00라고 말할 때 정말 좋아할 겁니다.
- 10:01대부분의 사람들이 랭체인 4J에서 놓치는 부분이 여기 있습니다.
- 10:03당신의 체인은 로그에 기록된 것보다 훨씬 많은 일을 하고 있습니다.
- 10:06실행 그래프가 없으면 단계를 재구성할 수 없습니다.
- 10:09추적 아이디가 없으면 이벤트들은 그저 무작위 불꽃놀이처럼 보이죠.
- 10:12부분적인 로그는 가장 중요한 도구 호출 하나를 숨겨버립니다.
- 10:15조용히 발생하는 도구 실패.
- 10:16제가 가장 좋아하는 부분이죠.
- 10:18모든 것이 정상처럼 보이지만 도구는 실행되지 않았고
- 10:20모델은 그저 예의상 환각 답변을 내놓은 상태입니다.
- 10:23검색 단계에서 타임아웃이 발생해 너를 반환했는데
- 10:25다음 단계가 아무 문제 없다는 듯 티켓팅 API에
- 10:28기록 없음으로 종료 처리를 해버린 사고를 쫓단 날이 사실을 깨달았습니다.
- 10:31예외도 추적도 없이 그저 분위기 파악과 티켓 종료뿐이었죠.
- 10:35로그에서 모델 출력값과 도구 출력값을 구분할 수 없다면
- 10:37이미 문제에 빠진 것입니다.
- 10:38랭체인 4J 로깅을 법정 제출이 가능한 수준으로
- 10:40수정하는 방법을 정확히 알려드리겠습니다.
- 10:42우선 모든 곳에 구조화된 로깅을 활성화하세요.
- 10:44문자열 뭉치가 아닌 JSON 형식으로요.
- 10:47모든 요청과 응답에는 타임스탬프, 모델명, 토큰수,
- 10:49그리고 전체 체인을 관통하는 상관관계 아이디가 담긴 봉투가 필요합니다.
- 10:52그 다음 냉스미스 나 랭그라프를 사용해
- 10:54실행 그래프나 추적을 추가하세요.
- 10:56각 노드는 입력, 출력, 소요시간, 오류를 기록해야 합니다.
- 10:59도구에서 오류가 발생하면 확실하게 드러나게 하세요.
- 11:01조용한 실패나 추측은 허용되지 않습니다.
- 11:03이제 가장 중요한 단계입니다.
- 11:04중앙 집중화하세요.
- 11:05추적 정보와 로그를 SIM으로 전송하세요.
- 11:07자동 확장으로 사라져버릴 컨테이너에 남겨두지 마세요.
- 11:09노이즈를 줄이기 위해 샘플링을 하더라도
- 11:10오류는 절대 누락하지 마세요.
- 11:11추적 아이디로 검색하여 전체 이야기를 볼 수 있어야 합니다.
- 11:14새벽 2시에 원리를 찾아라.
- 11:15를 할 필요 없이 프롬프트, 검색 문서, 도구 호출, API 응답, 최종 답변을 확인하세요.
- 11:20코파일러 스튜디오로 넘어갑니다.
- 11:21이 플랫폼은 어느 정도의 텔레메트리를 제공하지만
- 11:23팀과 데이터버스, 그리고 연결된 모든 커넥터에 흩어져 있습니다.
- 11:26제한적인 대화 내보내기로는 전체 맥락이 아닌 단편적인 조각만 얻게 됩니다.
- 11:30파편화된 텔레메트리 때문에 컴플라이언스 담당자가 스크린샷을 모아 미술 공예하듯 작업하게 됩니다.
- 11:34통합된 감사 경로를 구축하여 이 문제를 해결하세요.
- 11:37명확한 보존 SLA, 보존 주체, 기간, 이유를 포함하여 대화 기록 보존 기능을 활성화하세요.
- 11:42대화 및 작업 로그를 패브릭이나 로그 애널리틱스와 같은 중앙 집중식 워크스페이스로 내보내세요.
- 11:46팀즈 위 진입점에서 데이터버스 플러그인과 다운스트림 API까지 전달되는 상관관계 아이디, 코럴레이션 아이디로 모든 이벤트를 태그하세요.
- 11:53채팅에서 사례 생성을 요청하면
- 11:55전송된 정확한 데이터가 포함된 정확한 시스템의 정확한 레코드로 즉시 이동할 수 있어야 합니다.
- 12:00사고 검토 시 흔히 발견되는 증거들입니다.
- 12:02사용자 세션에 맵핑되지 않는 로그 속의 고아, 오펜드, LLM 호출, 해당 프롬프트가 없는 도구 호출, 또는 접지, 그라운딩, 로그에 문서 아이디가 포함되어 있지 않아 찾을 수 없는 출처를 인용한 답변.
- 12:12이것은 미스터리가 아닙니다.
- 12:13기반 설비가 누락된 것입니다.
- 12:15이번 주에 바로 적용할 수 있는 신속한 해결책들입니다.
- 12:17해시를 사용한 요청 응답 엠벨로프를 의무화하세요.
- 12:19프롬프트, 검색된 청크, 출력의 콘텐츠 해시를 저장하여 무결성을 증명하세요.
- 12:24누군가 변조를 시도하면 해시가 이를 거부합니다.
- 12:26종단 간 상관관계 아이디를 필수로 요구하세요.
- 12:29엣지에서 생성하고 모든 홉을 통과시키며 이를 누락한 호출은 모두 거부하세요.
- 12:32아이디가 없으면 서비스도 없습니다.
- 12:34보존 SLA를 정의하세요.
- 12:36법무팀의 수인을 받고 보안팀이 시행하게 하세요.
- 12:38개발용은 91, 운영용은 1년.
- 12:39규제 대상 도메인은 더 길게 설정하세요.
- 12:41공표하세요.
- 12:42철저히 준수하세요.
- 12:43피해야 할 흔한 실수들입니다.
- 12:44원시 비밀정보, 나개인정보, PII를 로깅하는 것.
- 12:47소스에서 마스킹하세요.
- 12:48핵심 데이터가 아닌 포렌식에 필요한 필드만 남기세요.
- 12:50에러 샘플링은 하지 마세요.
- 12:51성공 로그를 샘플링하세요.
- 12:52모든 실패는 로깅하세요.
- 12:54문제가 발생하면 모든 흔적이 필요하기 때문입니다.
- 12:56자유 텍스트 로그는 사람은 좋아하지만 기계는 싫어합니다.
- 12:58필드를 사용하세요.
- 13:00스키마를 추가하세요.
- 13:01수집 시 검증하세요.
- 13:02이제 감사자가 무슨 일이 있었는지 물어봅니다.
- 13:05추적 로그 하나를 엽니다.
- 13:06프론프트, 검색된 문서 아이디, 도구 입력, 도구 출력, 최종 메시지를 보여줍니다.
- 13:11상관관계 아이디가 API 게이트웨이, 데이터베이스 기록, 팀즈 메시지와 일치합니다.
- 13:18가시성을 확보하면 거버넌스가 가능해지며, 이제 규칙을 공식화하고 역할을 제한해야 할 때입니다.
- 13:22에이전트 rbac 모델, 에이전트를 매우 멍청하지만 매우 강력한 사용자로 취급하세요.
- 13:26가시성을 확보하셨군요.
- 13:28좋습니다.
- 13:29이제 이들에게 신원과 통제권을 부여하세요.
- 13:31에이전트도 사용자입니다.
- 13:32매우 멍청하고 매우 강력한 사용자죠.
- 13:34사람에게도 첫날부터 임시관리자 권한을 주지 않을 거라면,
- 13:36비꼬는 말과 수도명령어도 구분 못하는 확률적 앵무새에게 그 권한을 주지 마세요.
- 13:39이것이 중요한 이유입니다.
- 13:41대부분의 조직은 사람은 보완하면서 에이전트는 무시합니다.
- 13:43그 결과 에이전트는 설계상 최소 권한 원칙을 우회하게 됩니다.
- 13:46에이전트는 도구를 넘나들고 환경을 가로지르지만,
- 13:48조직도에 나타나지 않기 때문에 아무도 눈치채지 못합니다.
- 13:50이것이 바로 헬퍼보시 섀도우 관리자로 변하는 과정입니다.
- 13:53제가 여러분께 배포하고자 하는 모델은 이렇습니다.
- 13:56에이전트별 단일 아이덴티티, 명확한 역할, 코든의 정책 확인,
- 13:59그리고 실제로 의미 있는 환경 경계가 필요합니다.
- 14:01아이덴티티부터 시작하세요.
- 14:03플랫폼봇 01, 이 아닌 모든 에이전트에 대해 서비스 주체를 생성하세요.
- 14:06실질적인 1대1 맵핑이 중요합니다.
- 14:08앱처럼 이름을 지정하세요.
- 14:09소유자, 목적, 환경, 만료기한을 태그로 지정하세요.
- 14:12두 에이전트가 같은 API를 호출하더라도 각기 다른 아이덴티티를 가져야 합니다.
- 14:15아이덴티티를 공유하면 피해 범위도 공유되기 때문입니다.
- 14:17그런 다음 바쁜 사람들도 적용할 수 있는 역할 분류체계를 정의하세요.
- 14:20저는 읽기, 리더, 실행, 러너, 쓰기, 라이터, 관리, 어드민, 위 4가지를 사용합니다.
- 14:23읽기 권한은 데이터를 가져올 수 있습니다.
- 14:25부작용이 없습니다.
- 14:26조회, 검색, 요약 작업을 생각하세요.
- 14:28실행 권한은 제한된 효과를 가진 워크플로우를 호출할 수 있습니다.
- 14:31티켓 생성, 승인 전송, 회의 일정 잡기 등이 이에 해당합니다.
- 14:34쓰기 권한은 특정 범위 내에 데이터를 기록할 수 있습니다.
- 14:37전체가 아닌 하나의 테이블, 하나의 버킷, 하나의 메일함에 한정합니다.
- 14:40관리 권한은 구성을 변경할 수 있습니다.
- 14:42이 역할은 여러분을 긴장하게 만들어야 합니다.
- 14:44꼭 필요한 경우에만 제한된 시간 동안 항상 이중세인을 거쳐 사용하세요.
- 14:46이제 이를 lanjhain4j에 맵핑해보겠습니다.
- 14:49도구, 툴, 가 여러분의 통제 지점이 됩니다.
- 14:51각 도구 래퍼는 실행 전 호출자의 역할을 확인합니다.
- 14:54에이전트 아이덴티티가 읽기 전용으로 맵핑되어 있다면
- 14:56쓰기 도구는 호출조차 받지 못합니다.
- 14:57역할에서 멈추지 말고 리소스 범위까지 포함하세요.
- 15:00제모 케이스 쓰기 권한이 있다고 해서 영업 케이스까지 쓸 수 있는 것은 아닙니다.
- 15:04범위는 단순한 설명이 아니라 하나의 게이트입니다.
- 15:06환경 변수와 설정 파일을 사용하여 도구를 특정 환경에 바인딩하세요.
- 15:10개발 에이전트는 개발 호스트와 개발 키만 볼 수 있어야 합니다.
- 15:12운영 url을 시도하면 즉시 차단하고 로그를 크게 남기세요.
- 15:15정책 확인은 api 호출 실패 후가 아니라 경계선에서 이루어져야 합니다.
- 15:19코파일럿 스튜디오에서도 환경 역할과 커넥터 범위를 사용하여 동일한 패턴을 적용하세요.
- 15:23읽기, 실행, 쓰기, 관리 권한과 동일한 환경의 에이전트를 할당하세요.
- 15:29커넥터 권한은 해당 역할과 연결된 보안 그룹에 맵핑됩니다.
- 15:32팀즈 배포 경계가 여러분의 피해 범위가 됩니다.
- 15:34파일럿은 소규모 그룹 내에서만 유지하세요.
- 15:36변경 티켓을 통해서만 확장하세요.
- 15:38이것이 바로 검토 워크플로우가 여러분을 준수하게 만드는 이유입니다.
- 15:40모든 범위 변경은 변경 요청 대상입니다.
- 15:42에이전트, 요청된 역할, 커넥터 또는 도구, 환경, 사유, 요청자, 만료 기한을 기재하세요.
- 15:48기술 소유자와 데이터 소유자, 두 명의 승인이 필요합니다.
- 15:51만료 기한이 되면 액세스는 자동으로 차단되며 갱신하거나 해지하라는 알림이 전송됩니다.
- 15:55일시적 이라는 말은 결국 일시적이어야 합니다.
- 15:58작은 사례를 통해 이것이 어떻게 진행되는지 보여드리겠습니다.
- 16:00제목 q&a 에이전트가 읽기 전용으로 시작합니다.
- 16:02사람들이 만족하면 제품팀은 경비보고서 생성 기능을 원하게 됩니다.
- 16:05그것이 바로 제한된 범위를 가진 실행, 런업 작업입니다.
- 16:08도구 수준 정책이 적용된 새 도구를 추가하세요.
- 16:10비용 제출 전용, 직원비용 센터 전용, 첨부 파일 5개 미만으로 제한합니다.
- 16:15에이전트 아이디는 30일 후에 만료되는 해당 단일 api에 대한 실행 권한을 얻습니다.
- 16:19코파일러 스튜디오에서 해당 환경은 행수준 보안이 적용된 하나의 데이터버스 테이블에 대한 커넥터 권한을 획득합니다.
- 16:25감사 로그에는 변경 티켓, 승인자, 만료 기간이 표시됩니다.
- 16:28마케팅 부서에서 보고서 삭제 기능도 요청하면 거절하거나 별도의 소유자와 sla를 가진 기록 도구로 연결하세요.
- 16:35모델은 무엇이든 원할 수 있습니다.
- 16:37정책은 모든 것을 강제합니다.
- 16:39중단해야 할 흔한 실수들입니다.
- 16:41편의를 위한 공유 아이디 사용입니다.
- 16:43편의는 통제의 적입니다.
- 16:44절대 만료되지 않는 임시 관리자 권한입니다.
- 16:47일정이 아닌 권한 자체에 시간 제한을 두세요.
- 16:49데모를 원활히 하기 위해 개발 환경에 프로덕션 자격 증명을 사용하는 것입니다.
- 16:52데모에는 프로덕션 데이터가 필요 없지만 감사에는 필요합니다.
- 16:54코드가 아닌 ui에 의한 도구 차단입니다.
- 16:56모델이 호출할 수 있다면 사용자 인터페이스는 중요하지 않습니다.
- 16:59다른 것은 다 있더라도 에이전트를 무지한 호기심과 날카로운 칼을 가진 사용자로 취급하세요.
- 17:03에이전트 별 아이디, 작업 별 역할, 리소스 별 범위, 기본적으로 설정된 시간 제한, 그리고 모든 호출은 데이터에 접근하기 전에 정책을 확인합니다.
- 17:11ai 가졸줄세는 수도꼭지가 되는 것을 확실히 막아주는 데이터 손실방지 정책입니다.
- 17:14에이전트에게 아이디와 역할을 부여했습니다.
- 17:16이제 누수를 막을 차례입니다.
- 17:17여기서 거버넌스는 사전 예방적입니다.
- 17:19건물 밖으로 나가기 전에 악의적인 요소를 차단하세요.
- 17:21이것이 중요한 이유입니다.
- 17:22ai는 노출을 배가시킵니다.
- 17:24단 하나의 프롬프트가 100개의 아웃바운드 토큰을 생성할 수 있으며, 각각은 잠재적인 유출 경로입니다.
- 17:27사후 분석에서만 통제가 확인된다면, 그것은 거버넌스가 아니라 포렌식입니다.
- 17:31실제로 효과가 있는 정책 세트는 다음과 같습니다.
- 17:33안전벨트, 에어백, 그리고 벽돌벽이라고 생각하세요.
- 17:36기본적으로 출력물에 대한 PII, 개인정보, 축소처리를 합니다.
- 17:38이름, 이메일, 전화번호, 주민등록번호 등이 해당됩니다.
- 17:41사용자에게 권한이 없다면 마스킹 처리됩니다.
- 17:43내보용이라는 이름 뒤에는 항상 유출의 위험이 숨어있습니다.
- 17:45비밀정보 탐지입니다.
- 17:47API키, 토큰, 개인키, 연결 문자열, 패턴을 감시하고 속도를 위해 블룸필터를 사용하세요.
- 17:52모탐지로 인해 곤란을 겪지 않도록 일반적인 형식의 체크섬을 추가하세요.
- 17:55비즈니스에 맞게 조정된 민감용어 필터입니다.
- 17:57법적 프로젝트의 이름, M&A 코드명, 미출시 제품 코드명 등이 있습니다.
- 18:02이 목록을 소유자와 변경 이력이 관리되는 저장소에 보관하세요.
- 18:05출력구조에 대한 정규식 허용 목록입니다.
- 18:07도구가 송장 요약을 기대한다면, 송장 형태의 출력물만 통과시킵니다.
- 18:09서술적인 시는 통과하지 못합니다.
- 18:11스키마는 선택사항이 아닙니다.
- 18:12그것은 계약입니다.
- 18:13LANGCHAIN4J에서는 전처리 및 후처리 프로세서로 강제합니다.
- 18:16전처리기는 입력값에서 주의 페이로드와 허용되지 않은 작업을 스캔합니다.
- 18:20후처리기는 JSON 스키마를 검증하고, 용어 및 비밀 필터를 실행하며,
- 18:23에이전트 경계를 벗어나기 전에 PII를 삭제합니다.
- 18:26검사에 실패하면 상관관계 아이디와 함께 안전한 오류를 반환하세요.
- 18:29부분적인 진실은 없습니다.
- 18:31모호한 답변은 안 됩니다.
- 18:32중재 파이프라인을 추가하세요.
- 18:33경량 패턴 필터와 블룸 필터를 사용하세요.
- 18:36맥락 파악을 위해 더 강력한 AI 기반 중재를 활용하세요.
- 18:38예를 들어, 건강 데이터는 공개하지 마세요.
- 18:40이들을 체인으로 연결하세요.
- 18:42오류 발생 시 차단되도록 하세요.
- 18:43페일 클로즈드, 그리고 대체 동작을 정의하세요.
- 18:45더 높은 수준에서 요약하거나, 안전하게 거부하거나, 상담원에게 연결하세요.
- 18:48모델이 더 안전한 방식의 정보 유출을 하도록 유도하지 마세요.
- 18:50코파일럿 스튜디오에서는 이미 비용을 지불하고 있는 스택을 사용하세요.
- 18:53마이크로소프트 365위 DLP 정책은 채널과 커넥터에 적용됩니다.
- 18:57정책을 활성화하고 조정하세요.
- 18:59에이전트가 명시적 승인 없이 영향력 높은 콘텐츠를 인덱싱하지 않도록 적지 소스에 민감도 레이블을 사용하세요.
- 19:04페넌트 수준의 중재는 기본적으로 켜져 있어야 하며, 나중에 켜겠다는 생각은 버리세요.
- 19:08나중에라는 말은 PR팀이 개입할 때나 나오는 말입니다.
- 19:10모니터링이 모든 것을 하나로 묶어줍니다.
- 19:12인계값을 설정하고, 비정상적인 출력 크기, 비정상적인 대상, 비정상적인 빈도를 감시하세요.
- 19:16Q&A 보시 갑자기 외부 엔드포인트로 데이터를 대량 전송하면 세션을 격리하세요.
- 19:20위험한 세션은 자동 만료시키고 소유자에게 알림을 보내세요.
- 19:23알림은 즉시 조치 가능하도록 유지하세요.
- 19:25모든 마스킹 이벤트마다 모두에게 알림을 보내지 마세요.
- 19:27오늘 당장 구입할 수 있는 빠른 성과를 챙기세요.
- 19:29에이전트 경계에서 출력 스키마와 차단 목록 용어를 강제하세요.
- 19:32스키마가 없으면 응답도 없습니다.
- 19:33마지막 단계로 PII, 개인식별 정보, 감소 조치를 추가하세요.
- 19:36이 조합은 명백한 유출을 막고 나머지 기능을 구현할 시간을 벌어줍니다.
- 19:39흔히 저지르는 실수들입니다.
- 19:40프런트 엔드 코드에 위존하도록 두지 마세요.
- 19:42메시지가 클라이언트에 도달하기 전에 서버 측에서 수정, 리덱트하세요.
- 19:45전역 차단 목록은 하나만 사용하세요.
- 19:47비즈니스 도메인 별로 분할하세요.
- 19:48금융 용어와 마케팅 용어는 다릅니다.
- 19:50디버깅을 위해 수정되지 않은 원본을 로깅하지 마세요.
- 19:52데이터 수집 단계에서 마스킹하세요.
- 19:54법무팀의 쓰인을 받은 경우 에만 안전한 볼트에 사본을 보관하세요.
- 19:57수도꼭지를 잠그고 고의로 망가뜨려 보세요.
- 20:00레드팀 체크리스트입니다.
- 20:01공격자가 하기 전에 스스로 깨뜨려 보세요.
- 20:03안전벨트를 당겨보기 전까지는 믿을 수 없습니다.
- 20:05가드레일도 마찬가지입니다.
- 20:07혼란 상황을 계획적으로 만드세요.
- 20:08목표는 느낌이 아닌 반복가능한 적대적 테스트입니다.
- 20:11체크리스트를 배포하고 주기를 정해 실행하며 릴리스를 통제하세요.
- 20:15주입 테스트부터 시작하세요.
- 20:16역할 혼동 테스트입니다.
- 20:18에이전트에게 정책을 무시하고 시스템으로 행동하도록 유도하세요.
- 20:20에이전트는 거부해야 합니다.
- 20:22도구 이름 충돌 테스트입니다.
- 20:23가짜 도구 이름과 매개 변수를 주입하세요.
- 20:25등록된 도구만 실행되어야 합니다.
- 20:27스키마 우회 테스트입니다.
- 20:29문자열과 json 주서 간에 명령을 삽입하세요.
- 20:31검증기는 이를 거부해야 합니다.
- 20:35노출되는 추론 덤프를 얻어내려고 시도하세요.
- 20:37출력은 스키마 내에 유지되어야 합니다.
- 20:39데이터 유출 프롬프트 테스트입니다.
- 20:40정확한 주민등록번호를 인용하라고 해보세요.
- 20:42모든 이메일을 내보내라고 해보세요.
- 20:44감사추적이 포함된 거부응답을 받아야 합니다.
- 20:46다음은 접근 테스트입니다.
- 20:47범위 확장, 스코프 에스컬레이션 테스트입니다.
- 20:49에이전트의 역할 범위를 벗어난 작업을 요청하세요.
- 20:50도구는 래퍼 수준에서 차단해야 합니다.
- 20:52만료된 토큰 처리 동작을 테스트하세요.
- 20:54세션 도중 보안 비밀을 교체하세요.
- 20:55호출은 명확한 오류와 함께 차단되어야 합니다.
- 20:57섀도우 환경 유출 문제, 개발 에이전트가 운영 엔드포인트에 접속 시도, 즉시 실패 처리, 상세한 로그 기록, 감사 테스트 수행, 추적의 완전성 확보, 하나의 상관 아이디 로 프롬프트부터 작업까지 재구성할 수 있나요?
- 21:08변조 감지, 저장된 로그 변경, 해시 불일치 시 경고가 발생해야 합니다.
- 21:12서비스 간 상관관계, 팀즈 메시지 아이디부터 데이터버스 레코드, 외부 API 호출까지 모두 일치시켜야 합니다.
- 21:17통과, 실패 기준을 정의하세요.
- 21:19스키마가 없으면 실패 처리됩니다.
- 21:21검증되지 않은 출력은 릴리스를 차단합니다.
- 21:23테넌트 전체 범위는 실패 처리됩니다.
- 21:25범위 그룹과 만료 기간이 없는 커넥터는 차단됩니다.
- 21:28조용한 도구 실패는 실패 처리됩니다.
- 21:30오류는 숨기지 말고 드러내야 합니다.
- 21:32롤백 계획이 없으면 실패 처리됩니다.
- 21:34권한 변경이나 모델 구성을 몇 분 안에 되돌릴 수 없다면 준비되지 않은 것입니다.
- 21:38에이전트 변경 심하다 릴리스 전 주기를 설정하세요.
- 21:40운영 환경과 유사한 환경에서 분기별 카오스 테스트를 수행하세요.
- 21:43사고 후 영업일 이내에 학습 루프를 돌고 새 테스트를 모음에 추가하세요.
- 21:47각 체크리스트 항목에는 담당자, 해결 SLA, 상태가 지정되어야 합니다.
- 21:52담당자가 없으면 배포도 없습니다.
- 21:54빠른 성공 전략, 스키마 없음 실패와 테넌트 범위 실패를 CICD 검사로 적용하세요.
- 21:59둘 중 하나라도 걸리면 파이프라인은 멈춥니다.
- 22:01회의도 토론도 필요 없습니다.
- 22:03모두가 존중하는 빨간 불릴 뿐입니다.
- 22:05목록을 실행하세요.
- 22:06망가뜨려 보세요.
- 22:07수정하세요.
- 22:08놀라운 일이 놀랍지 않을 때까지 반복하세요.
- 22:10대부분의 조직이 건너뛰는 한 가지 거버넌스 단계.
- 22:13다른 건 몰라도 에이전트는 곧 신원이라는 점을 기억하세요.
- 22:16에이전트를 최소 권한, 강제된 출력 계약, 전체 감사 추적을 가진 매우 멍청하고 매우 강력한 사용자로 대하세요.
- 22:23대부분의 조직이 건너뛰는 단계는 모든 에이전트의 전용 서비스 주체를 만들고 환경별로 역할 범위를 지정해 도구와 커넥터를 연결하는 것입니다.
- 22:30공유 자격 증명은 안 되며 테넌트 전체 범위도 안 됩니다.
- 22:33RBAC 모델을 도입하세요.
- 22:35이번 주에 DLP 정책을 켜고 레드팀 체크리스트를 실행하세요.
- 22:38구독하고 후속 영상을 확인하세요.
- 22:41랭체인 4J와 코파일럿 스튜디오 위 정확한 설정을 보여드려 사과 대신 거버넌스를 복사 붙여 넣기 할 수 있게 해드립니다.