에이전트가 모델에게 비밀번호를 노출하지 않고 로그인하도록 하는 방법
요약
AI 에이전트가 민감한 자격 증명(비밀번호, API 키 등)을 모델의 컨텍스트나 채팅 기록에 노출하지 않고 안전하게 사용하는 방법을 제시합니다. 핵심은 비밀 정보를 대화 외부의 전용 볼트 또는 키체인 같은 저장소에서 관리하고, 에이전트는 값 자체 대신 참조만 사용하도록 설계하는 것입니다.
핵심 포인트
- 비밀 정보는 모델 컨텍스트나 채팅 기록에 절대 포함되어서는 안 됩니다.
- 자격 증명은 대화 외부의 전용 볼트(Vault)를 통해 가져와야 합니다.
- 스코프 토큰, 짧은 만료 기간 설정 등 최소 권한 원칙을 적용해야 합니다.
- 비밀 유출 시에는 메시지 삭제가 아닌 반드시 비밀번호 순환(Rotation)을 수행해야 합니다.
당신은 에이전트와 함께 작업을 진행하고 있습니다. 에이전트는 설정 페이지를 찾아 대부분의 양식을 채웠지만, 여기서 멈춥니다: "계속하려면 여기에 비밀번호를 붙여넣어 주세요." 또는 곧 호출할 서비스에 API 키가 필요하며, 채팅 상자가 바로 그곳에 있습니다.
대화가 사적인 느낌을 주기 때문에 무해하게 느껴집니다. 하지만 채팅은 안전하지 않습니다.
채팅 상자가 잘못된 이유
프롬프트에 입력하는 모든 내용은 모델의 컨텍스트 일부가 됩니다. 도구에 따라 기록으로 보관되거나, 로그에 작성되거나, 호스팅되는 모델로 전송되거나, 나중에 대화에서 읽히는 메모리에 요약될 수 있습니다. 이 모든 복사본을 모두 볼 수 있거나 신뢰성 있게 삭제할 수는 없습니다.
지침 파일도 마찬가지입니다. CLAUDE.md나 AGENTS.md와 같은 파일은 모델이 실행할 때마다 읽는 파일입니다. 따라서 프로젝트 규칙을 저장하기에는 좋지만, 토큰을 저장하기에는 나쁜 장소입니다. 이 파일들은 모델에게, 그리고 종종 리포지토리에 접근하는 모든 사람에게 보이는 것으로 취급해야 합니다.
목표는 간단합니다: 에이전트는 자격 증명을 사용할 수 있지만, 원시 값(raw value)은 모델이 읽거나 쓰는 텍스트에 절대 들어가지 않아야 합니다.
모델을 위한 도구 호출용 저장소 사용하기
작동하는 패턴은 대화 밖에 위치한 자격 증명 저장소 또는 볼트입니다. 모델은 "청구 포털에 로그인하기" 또는 "배포 토큰으로 API 호출하기"와 같은 작업을 요청하고, 도구가 비밀을 가져와 직접 사용합니다. 모델은 값 자체를 보는 것이 아니라 참조나 결과를 봅니다.
운영 체제의 키체인은 이것의 가장 간단한 버전입니다. 전용 비밀 저장소는 암호화, 접근 규칙 및 사용 기록을 추가합니다. 어느 쪽이든 한 가지를 확인하세요: 에이전트가 비밀을 사용할 때 그 값이 대화 기록에 나타나나요? 만약 그렇다면, 그 저장소는 장식품일 뿐입니다.
에이전트에게 가진 것보다 적게 주기
- 스코프 토큰(Scope tokens) 사용. 하나의 작업에 대해서만 토큰을 생성하세요. 읽기 전용이 충분하다면 읽기 전용으로 제한하고, 단일 리포지토리 또는 단일 프로젝트에 한정해야 합니다. 모든 것을 할 수 있는 키를 재사용하지 마세요.
- 토큰 만료 기간 설정. 짧은 생명 주기는 유출을 작은 사고로 바꿉니다. 토큰 생성 시점에 만료 기한을 설정하고, 나중에 설정해서는 안 됩니다.
- 마스터 비밀번호보다 OAuth 및 앱 비밀번호 선호. 위임된 접근 권한은 사용처의 비밀번호를 변경하지 않고도 제한하고 취소할 수 있습니다. 마스터 비밀번호는 에이전트가 절대 보유해서는 안 되는 것입니다.
- 2단계 인증(2FA)과 결제는 사람의 손에 남겨두기. 두 번째 요소는 사람이 의도를 확인하는 곳입니다. 에이전트가 해당 화면까지 안내하게 하고, 코드 승인, 구매 또는 이체는 직접 하세요.
모든 사용 기록을 로깅하고 읽기
에이전트가 사용할 수 있는 자격 증명은 사용될 때마다 흔적을 남겨야 합니다. 어떤 비밀(secret)인지, 언제인지, 그리고 어떤 작업을 위해서인지를 말입니다. 많은 서비스는 자체적인 로그인 및 API 활동 페이지도 제공합니다. 이 두 가지를 훑어보는 주기적인 알림을 설정하세요. 당신이 찾고 있는 것은 자신이 인식하지 못하는 사용, 근무하고 있지 않았던 시간대의 사용, 요청하지 않은 서비스에 대한 사용 기록입니다.
붙여넣기 사고 발생 시, 비밀번호 순환(Rotate)
만약 비밀이 채팅이나 로그 또는 커밋된 파일에 유출되었다면, 노출된 것으로 간주해야 합니다. 원본에서 이를 순환시키고(rotate), 이전 값을 폐기한 다음, 찾을 수 있는 사본들을 정리하세요. 메시지를 삭제하는 것은 괜찮지만, 그것이 순환(rotation)을 대체할 수는 없습니다.
위험과 더 안전한 습관
| 위험 | 더 안전한 습관 |
|---|---|
| 채팅에 비밀번호나 키를 붙여넣기 | 볼트(vault) 또는 키체인(keychain)에 보관하고 도구가 모델을 대신하여 읽도록 하기 |
| ... |
에이전트가 브라우저를 통해 로그인하도록 허용하기 전에
브라우저 로그인은 에이전트가 웹사이트 작업을 수행하는 데 가장 유용한 곳입니다. 이를 허용하기 전에 다음 사항들을 확인하세요:
- 자격 증명(credential)은 모델이 읽는 채팅이나 파일에서 오는 것이 아니라, 저장소(store)에서 가져옵니다.
- 계정은 작업에 필요한 최소한의 접근 권한만 갖도록 합니다. 사이트가 허용한다면 별도의 제한된 계정을 사용하는 것이 더 좋습니다.
- 2단계 인증(2FA)은 유지되며, 두 번째 요소는 에이전트가 아닌 사용자에게 도달합니다.
- 결제, 계정 삭제 및 보안 설정 변경에는 사용자의 확인이 필요합니다.
- 에이전트가 어떤 사이트에 언제 로그인했는지 확인할 수 있습니다.
- 세션이나 토큰을 한 단계로 취소(revoke)하는 방법을 알고 있습니다.
- 저장된 브라우저 세션은 작업 완료 시 지워지거나 만료됩니다.
이 모든 것을 시작하기 위해 특별한 도구가 필요하지 않습니다. 다음 비밀 정보를 프롬프트에서 빼내고, 다음 토큰의 수명을 단축하며, 마지막 되돌릴 수 없는 클릭은 사용자 본인이 담당합니다.
본 게시물은 Tutuo, Inc.의 Octuo 팀에서 작성되었습니다. 에이전트에게 작업을 위임하는 방법에 대한 더 많은 노트는 저희 블로그에서 확인하실 수 있습니다.
AI의 도움을 받아 초안 작성 및 게시 전 검토를 거쳤습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기