보안 정책

보안 정책 (Security policy)

LangChain은 로컬·원격 파일시스템, API, 데이터베이스 같은 다양한 외부 리소스와 연결되는 통합 생태계가 넓어요. 이런 통합 덕분에 LLM의 힘과 외부 리소스에 접근·상호작용·조작하는 능력을 결합한 다재다능한 앱을 만들 수 있죠. 다만 그만큼 보안을 어떻게 다뤄야 하는지도 함께 짚고 넘어갈게요.

출처: 공식문서

모범 사례

이런 앱을 만들 때는 좋은 보안 관행을 따르는 게 중요해요.

  • 권한 제한 (Limit permissions): 권한을 애플리케이션의 필요에 정확히 맞춰 범위를 잡아요. 광범위하거나 과도한 권한을 부여하면 심각한 보안 취약점이 생길 수 있어요. 이런 취약점을 피하려면 읽기 전용 자격증명을 쓰고, 민감 리소스 접근을 막고, 샌드박싱(컨테이너 안에서 실행)을 고려하고, 외부 요청을 제어하는 프록시 설정을 지정하는 방식을 앱에 맞게 활용하세요.
  • 잠재적 오용 예상하기: 인간도 실수하듯 LLM도 실수를 해요. 시스템 접근이나 자격증명은 부여된 권한이 허용하는 어떤 방식으로든 사용될 수 있다고 항상 가정하세요. 예를 들어 데이터 삭제가 가능한 DB 자격증명 쌍이 있다면, 그 자격증명을 쓸 수 있는 어떤 LLM이라도 실제로 데이터를 삭제할 수 있다고 보는 게 가장 안전해요.
  • 심층 방어 (Defense in depth): 완벽한 보안 기법은 없어요. 파인튜닝과 좋은 체인 설계는 LLM이 실수할 확률을 줄여주지만 없애지는 않아요. 단일 방어 계층에만 의존하기보다 여러 계층의 보안 접근을 조합하는 게 좋아요. 예를 들어 읽기 전용 권한과 샌드박싱을 함께 써서 LLM이 명시적으로 사용하도록 의도된 데이터에만 접근하게 하는 식이에요.

이렇게 하지 않을 때의 위험은 데이터 손상·손실, 기밀 정보에 대한 무단 접근, 중요 리소스의 성능·가용성 훼손에 이를 수 있어요.

예시 시나리오와 완화 전략을 보면 이래요.

  • 파일시스템 접근 권한이 있는 에이전트에게 사용자가 삭제하면 안 되는 파일을 삭제하거나, 민감 정보가 담긴 파일 내용을 읽어달라고 요청할 수 있어요. 완화하려면 에이전트가 특정 디렉터리만 쓰도록 제한하고, 안전하게 쓰고 읽을 수 있는 파일만 허용하세요. 나아가 에이전트를 컨테이너 안에서 실행해 샌드박싱하는 것도 고려해요.
  • 외부 API에 쓰기 접근 권한이 있는 에이전트에게 악성 데이터를 작성하거나 해당 API에서 데이터를 삭제하라고 요청할 수 있어요. 완화하려면 읽기 전용 API 키를 주거나, 이미 이런 오용에 저항성이 있는 엔드포인트만 쓰도록 제한하세요.
  • 데이터베이스에 접근하는 에이전트에게 테이블을 드롭하거나 스키마를 변경하라고 요청할 수 있어요. 완화하려면 자격증명을 에이전트가 접근해야 하는 테이블로만 범위를 잡고, READ-ONLY 자격증명 발급을 고려하세요.

파일시스템·API·데이터베이스 같은 외부 리소스에 접근하는 앱을 만든다면, 회사 보안팀과 상의해 앱을 가장 잘 설계·보호하는 방법을 정하는 걸 고려하세요.

OSS 취약점 신고

LangChain 오픈소스 프로젝트와 관련된 보안 취약점은 다음 절차로 신고해요.

  1. 취약점이 존재하는 GitHub 저장소의 Security 탭에서 보안 자문(security advisory)을 제출한다.
  2. [email protected]이메일을 보내 보안 이슈를 제출했다는 것과 어떤 저장소에 제출했는지 알린다.

신고 전에 위의 모범 사례를 검토해, 어떤 것이 보안 취약점이고 어떤 것이 개발자 책임인지 파악하세요.

버그 바운티 자격

모든 LangChain 라이브러리의 보안 취약점 신고를 환영해요. 다만 임시(ad hoc) 버그 바운티는 다음 패키지의 취약점에만 제공할 수 있어요.

  • LangChain 팀이 소유·유지 관리하는 핵심 라이브러리: langchain-core, langchain (v1), langgraph, 그리고 관련 체크포인터 패키지(또는 그 JavaScript 버전)
  • LangChain 팀이 유지 관리하는 인기 통합(예: langchain-openai, langchain-anthropic 등, 또는 그 JavaScript 버전)

취약점은 예시 코드나 예시 애플리케이션이 아니라 라이브러리 코드 자체에 있어야 해요. 다른 모든 LangChain 패키지의 신고도 환영하고 유효한 보안 우려는 처리하지만, 이 범위 밖의 패키지에는 버그 바운티가 지급되지 않아요. 아카이브된 langchain-community는 커뮤니티 주도 성격 때문에 버그 바운티 대상이 아니지만, 신고는 받아 처리한다는 점도 참고하세요.

범위 밖 대상

다음은 보안 취약점 신고 범위 밖이에요.

  • langchain-experimental: 아카이브된 이 저장소는 실험 코드용이라 보안 신고 범위가 아니에요(패키지 경고).
  • 예시와 예시 애플리케이션: 예시 코드와 데모 앱은 보안 신고 범위가 아니에요.
  • 보안 공지로 문서화된 코드: 건별로 판단하겠지만, 이미 개발자에게 앱 보안을 위한 지침이 문서화돼 있으므로 범위 안일 가능성은 낮아요.
  • LangSmith 관련 저장소 또는 API: 아래의 LangSmith 취약점 신고를 참고하세요.

LangSmith 취약점 신고

LangSmith 관련 보안 취약점은 [email protected]로 이메일을 보내 신고해요.

기타 보안 우려

다른 보안 우려 사항이 있으면 [email protected]로 연락주세요.

더 알아보기 (Learn more)