1. 개발환경 만들기

열쇠는 어디에 두고, 자료는 어디로 새는가

이 차시를 마치면

API key 를 안전하게 두고, 자료가 나가는 네 지점을 각각 통제합니다.

API 키를 안전하게 두고, 자료가 밖으로 나가는 지점을 하나씩 통제합니다. 이 차시가 설치 트랙에서 가장 중요합니다.

보안 원칙 다섯 가지

번호원칙무엇을 막는가 분석
1API 키를 Python 파일에 직접 쓰지 않기코드 공유, commit, 화면 공유를 통한 유출
2.env를 Git에 commit하지 않기저장소 이력에 영구 기록되는 유출
3교육용 화면 캡처에 API 키가 노출되지 않게 하기강의 자료와 스크린샷을 통한 유출
4외부 Tool에 넘기는 데이터에 개인정보가 포함되는지 확인하기Tool 호출 인자를 통한 유출
5LangSmith trace 사용 시 민감정보 포함 여부를 검토하기관측 도구를 통한 유출

원칙 1부터 3까지는 를 지키고, 4와 5는 자료를 지킵니다. 두 종류의 유출은 막는 방법이 다릅니다. 키 유출은 파일 위치와 .gitignore로 막고, 자료 유출은 코드에서 무엇을 밖으로 보내는지 확인해야 막힙니다. 분석

.env.example.env

.env.example은 저장소에 올리고, 실제 키를 넣은 .env는 Git에서 제외합니다.

OPENAI_API_KEY=
ANTHROPIC_API_KEY=

LANGSMITH_API_KEY=
LANGSMITH_TRACING=true
LANGSMITH_PROJECT=langgraph-study

Python에서 읽는 방법입니다.

from dotenv import load_dotenv

load_dotenv()

비유

.env.example빈 열쇠고리입니다. 어떤 열쇠가 몇 개 필요한지를 알려 줍니다. .env열쇠가 꽂힌 열쇠고리입니다. 빈 열쇠고리는 남에게 보여 줘도 되지만, 열쇠가 꽂힌 것은 보여 주면 안 됩니다. .gitignore는 "이 서랍은 사진 찍지 말 것"이라는 표지입니다.

자료가 나가는 네 지점

LangChain과 LangGraph 프로젝트에서 자료가 밖으로 나갈 수 있는 지점은 네 곳입니다. 분석

지점무엇이 나가는가통제 방법
LLM Provider APIprompt 전체, 문서 본문, 사용자 입력로컬 모델로 대체하거나, prompt에 넣는 범위를 제한
② Tool 호출Tool 인자에 담긴 값원칙 4 — 넘기는 데이터에 개인정보가 있는지 확인
③ LangSmith trace입출력 전체LANGSMITH_TRACING=false
④ 코드 실행실행된 코드가 network와 filesystem에 접근격리 실행

LangSmith 기록 전송 끄기

LANGSMITH_TRACING=false

학습팩에는 공식 Studio 문서도 tracing을 비활성화하면 로컬 서버에서 데이터가 외부 trace로 전송되지 않는 설정을 안내한다고 적혀 있습니다. 다만 해당 문서를 직접 접속해 확인하지는 않았습니다. 확인 필요

tracing을 끄면 유출 경로 하나가 닫히지만, 디버깅 수단도 함께 닫힙니다. 학습 단계에서는 민감자료를 쓰지 않는 예제로 tracing을 켜서 배우고, 실제 자료를 다루는 단계에서 끄는 방식이 절충안입니다. 분석

코드를 실행하는 Agent를 만들 때

LLM이 만든 코드를 host에서 바로 실행하면 파일 삭제, secret 읽기, shell command, network access, 무한 loop, CPU와 memory 과다 사용이 가능합니다.

학습팩의 구분은 이렇습니다. 학습용은 local 실행 가능, 실전은 sandbox 또는 container 권장.

최소 안전 원칙 여덟 가지

  1. isolated work directory
  2. timeout
  3. CPU와 memory 제한
  4. network 제한
  5. filesystem mount 제한
  6. API key 미노출
  7. dangerous command filter만으로 안전하다고 가정하지 않기
  8. 최종 실행 전 사람 승인

7번이 특히 중요합니다. "위험한 명령어 목록을 만들어 걸러 낸다"는 접근은 목록에 없는 표현을 막지 못합니다. 학습팩에는 이 방식만으로 안전하다고 가정하지 말라고 적혀 있습니다.

학습팩에는 AutoGen이 DockerCommandLineCodeExecutor를 제공하며 Docker 기반 격리 실행을 권장한다고 적혀 있습니다. 다만 LangGraph에서 이를 구성하는 구체적 코드는 학습팩에 없습니다. 확인 필요

자료 민감도별 조합 분석

자료 민감도모델tracing코드 실행
공개 자료, 학습용외부 APIlocal 가능
사내 자료외부 API + 입력 범위 제한격리 실행
개인정보 포함로컬 모델격리 실행 + 사람 승인

맨 아래 줄의 로컬 모델 구성 절차는 학습팩에 없습니다. 확인 필요

이 차시의 파이썬 코드는 개념을 보이려고 떼어 놓은 예시 조각입니다. 문법 검사는 통과하지만 그대로 돌려서 결과를 확인한 코드는 아닙니다. 실행까지 검증한 코드는 4번과 6번 트랙에 있으며, 그 차시에는 무엇을 어떻게 확인했는지 따로 적어 두었습니다.

이해도 확인

문항을 불러오는 중입니다.