본문 바로가기
C.W.K.
Stream
Lesson 06 of 08 · published

SDK 경계 밖으로 나가는 데이터부터 그려 봐

~14 min · security, privacy, secrets, logging

Level 0Observer
0 XP0/64 lessons0/13 achievements
0/150 XP to next level150 XP to go0% complete

요청과 능력은 서로 반대 방향으로 경계를 넘어

SDK를 호출하면 프롬프트와 시스템 지침, 첨부 파일, 도구 정의가 Anthropic 서버나 Bedrock·Vertex로 나가. 반대쪽에서는 모델이 파일 읽기·셸 실행·URL 호출 같은 능력을 얻어. 무엇을 보내는지와 무엇을 실행하게 하는지, 두 방향을 모두 보안 모델에 넣어야 해.

비밀은 코드와 프롬프트와 로그에서 모두 빼

API 키는 환경변수나 비밀 관리 서비스에 두고 코드·프롬프트·도구 설명에는 넣지 마. 특히 JSONL 기록에 시스템 프롬프트나 요청 본문을 그대로 남기면 sk-ant-... 같은 키 값이 Git 이력까지 흘러갈 수 있어. 저장 전에 비밀 패턴과 개인정보를 가리는 규칙이 필요해.

보존 약속은 계정 계약으로 확인해

Anthropic의 기본 API는 고객 입력을 학습에 쓰지 않지만, 데이터 거주와 보존 조건은 선택한 경로와 계약에 따라 달라져. Bedrock과 Vertex는 각 클라우드의 약속을 따르고, Zero Data Retention(ZDR)은 일부 요금제에서 계약으로 제공돼. 규제 대상 데이터를 보내기 전에 “안전할 것”이라고 추측하지 말고 계정에 실제로 적용된 조건을 확인해야 해.

원칙: SDK를 공개 경계처럼 다뤄. 전송한 데이터와 남긴 로그는 둘 다 감사 대상이야.

Code

구조화 로그에서 API 키 redact·python
import re

KEY_PATTERN = re.compile(r"\bsk-ant-[A-Za-z0-9_-]{20,}\b")

def redact(text: str) -> str:
    return KEY_PATTERN.sub("sk-ant-***REDACTED***", text)

# 로그된 페이로드는 항상 redact() 통해서 — 프라이빗 레포라도.
log_line = '{"prompt": "hi", "key": "sk-ant-api03-abcdef0123456789"}'
print(redact(log_line))
스테이지된 파일에 키 패턴 있으면 거부하는 pre-commit 훅·bash
#!/usr/bin/env bash
# .git/hooks/pre-commit
set -euo pipefail
if git diff --cached -U0 | grep -E 'sk-ant-[A-Za-z0-9_-]{20,}' >/dev/null; then
  echo 'refusing to commit: detected an Anthropic key pattern in staged content'
  exit 1
fi

External links

Exercise

SDK 요청과 응답을 기록하는 코드 한 곳에 API 키와 사용자 개인정보를 가리는 필터를 넣어. 가짜 키가 절대 통과하지 않는 단위 시험도 추가해.
Hint
sk-ant- 접두사를 먼저 잡고, 뒤에는 길이가 달라질 수 있는 영숫자와 대시가 온다고 가정해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.