1. 계산을 설명하는 것과 접근 권한을 부여하는 것 구분하기
프로그램이 실제로 소비하는 정보부터 시작하세요. 배치 크기, 모델 이름, 처리 모드는 하나의 경험을 설명합니다. 다운로드를 허용하는 토큰이나 스토리지를 여는 키는 접근 권한을 부여합니다. 첫 번째 집합은 설명 가능해야 하고, 두 번째 집합은 필요한 곳에서만 사용할 수 있어야 합니다.
경계는 변수 이름만으로 정해지지 않습니다. 경로가 고객을 드러낼 수 있고, URL이 식별자를 포함할 수 있으며, 작은 데이터 샘플도 기밀일 수 있습니다. 따라서 공유 가능한 매개변수의 내용도 함께 평가하세요. 설정을 게시하는 것과 그 안의 모든 절대 경로를 게시하는 것은 같은 결정이 아닙니다.
이 표는 작업용 분류를 제안합니다. Kernodeck 머신에 설치된 서비스를 설명하는 것이 아닙니다. 프로젝트에서 각 항목을 누가, 언제, 어느 사본에서 읽을 수 있는지 정의하세요. 이 결정을 노트북의 마지막 내보내기에 맡기지 마세요.
표의 모든 열을 보려면 스크롤하세요.| 항목 | 역할 | 권장 처리 |
|---|---|---|
| 배치 크기, 모드, 임계값 | 계산 매개변수 | 값을 버전 관리하고 검증하세요. |
| 토큰, 개인 키, 비밀번호 | 접근 수단 | 별도로 제공하고 출력에 포함하지 마세요. |
| 경로, URL, 코퍼스 식별자 | 잠재적으로 민감한 컨텍스트 | 공유 전에 확인하고, 논리적 식별자를 선호하세요. |
| 결과 및 로그 | 실행 증거 | 보존할 필드를 선택하고 전달되는 폴더를 점검하세요. |
2. 단일 우선순위 규칙 선택하기
코드, 파일, 실행 옵션에 모두 존재하는 매개변수는 무엇이 우선하는지 아무도 모르면 모호해집니다. 간단한 규칙을 정하세요. 예를 들어 문서화된 기본값, 그다음 설정 파일, 그다음 명령의 공개 옵션 순서입니다. 이것은 애플리케이션의 계약이며, Python이 제공하는 보편적 우선순위가 아닙니다.
이 해석 후에 검증하세요. 알 수 없는 키를 거부하여 batch_szie 같은 오타가 기본값으로 조용히 대체되지 않도록 하세요. 정수, 정수를 나타내는 문자열, 불리언을 구분하세요. 그다음 유용한 제약을 추가하세요. 양수 값, 허용된 모드, 일관된 매개변수 조합 등입니다.
마지막으로 허용된 필드로 제한된 유효 설정을 기록하세요. 이는 옵션이 파일을 대체한 경우에도 프로그램이 무엇을 사용했는지 설명해 줍니다. 알려진 비밀번호 몇 개를 제거하기 전에 전체 설정 객체를 직렬화하여 이 문서를 얻지 마세요. 먼저 무엇이 포함될 수 있는지 선택하세요.
3. 서비스에 연결하지 않고 예제 작업하기
다음 예제는 교육용이며 실행되지 않습니다. 여덟 개 항목의 배치로 벡터를 생성하는 가상 작업을 설명합니다. 여기서 embedding이라는 단어는 인터페이스 선택이며, 어떤 모델도 로드되지 않고 어떤 GPU 의존성도 설치된 것으로 가정하지 않습니다. 이 파일을 읽거나 검증하는 데 어떤 비밀도 필요하지 않습니다.
Python 3.11부터 사용할 수 있는 표준 모듈 tomllib은 TOML 형식을 읽습니다. 이 모듈은 문서의 값을 Python 객체로 변환할 뿐, 애플리케이션에서 로트가 0인 것을 금지해야 하는지 결정하지 않습니다. 도메인 검사는 읽기 이후에 명시적으로 수행됩니다.
이 스니펫은 정확히 두 개의 키와 두 개의 모드를 허용합니다. 프로젝트에서 사용하려면 이후 인수, 오류 처리, 출력 경로를 연결하세요. 예상되는 거부 사례는 추론하기 쉽습니다. batch_size가 0인 경우, batch_size가 문자열인 경우, 또는 token 키를 추가한 경우입니다. 이는 사용자가 직접 확인해야 할 사례이며, 여기서 측정된 결과가 아닙니다.
batch_size = 8
mode = "embedding"import tomllib
with open("config.toml", "rb") as source:
config = tomllib.load(source)
if set(config) != {"batch_size", "mode"}:
raise ValueError("CONFIG_KEYS")
if type(config["batch_size"]) is not int or config["batch_size"] <= 0:
raise ValueError("CONFIG_BATCH_SIZE")
if config["mode"] not in ("embedding", "classification"):
raise ValueError("CONFIG_MODE")
public_config = {
"batch_size": config["batch_size"],
"mode": config["mode"],
}4. 비밀이 필요한 단계에만 비밀 제공하기
이미 존재하는 파일을 작업하는 단계는 다운로드 토큰을 요구해서는 안 됩니다. 접근이 필요해지는 경계에서 비밀을 요청하세요. 해당 단계가 활성화되었지만 접근 권한이 없으면, 예상되는 채널을 명시한 메시지와 함께 중단하고, 수신된 값을 표시하거나 전체 요청을 복사하지 마세요.
채널은 사용 가능한 환경에 따라 달라집니다. 비밀 관리자, 접근이 제한된 자격 증명 파일, 또는 조직에서 마련한 주입 메커니즘 등입니다. 환경 변수는 인터페이스로 사용될 수 있지만, 프로세스가 접근할 수 있는 데이터로 남아 진단에 나타날 수 있습니다. 주입의 편의성과 완전한 보호를 혼동하지 마세요.
필요한 범위로만 접근을 제한하고 교체를 대비하세요. 소프트웨어 준비 요청이 비밀 관리자의 존재를 보장하지는 않습니다. 실행 방식을 그것에 맞춰 구성하기 전에 실제로 사용 가능한 메커니즘을 확인하고, 비밀이 필요 없는 하위 프로세스에는 전달하지 마세요.
5. 입력을 복사하지 않고 유용한 로그 설계하기
몇 가지 이벤트를 정의하세요. 구성 수락, 파일 검사, 파티션 완료, 출력 검증 등입니다. 여기에 실행 식별자, 단계, 카운터를 연결하세요. CONFIG_BATCH_SIZE 오류만으로도 관련 규칙을 찾을 수 있으며, 전체 파일을 포함할 필요는 없습니다.
OWASP는 특히 비밀번호, 액세스 토큰, 키를 로그에서 제외할 것을 권장합니다. 이 규칙을 예외, 디버깅용으로 표시된 객체, 셀 출력에도 적용하세요. 마지막 화면에서 마스킹해도 이미 파일이나 캡처에 기록된 내용은 제거되지 않습니다.
사고를 공유하려면 작은 선별본을 준비하세요. 유용한 버전, 허용된 매개변수, 오류, 문제를 재현하는 합성 예제 등입니다. 전체 폴더의 자동 압축은 피하세요. URL, 헤더, 경로, 오류 주변 줄도 다시 확인하세요. 겉보기에는 무해한 메시지 주변에 민감한 데이터가 있을 수 있습니다.
6. 공유 전에 분리 검증하기
세 가지 시험을 준비하세요. 원격 단계 없는 유효한 구성, 유효하지 않은 구성, 접근 권한이 없는 단계를 요구하는 구성입니다. 첫 번째는 불필요한 비밀 없이 기능적 경계까지 진행할 수 있어야 하며, 나머지 두 개는 서로 다른 오류를 내야 합니다. 또한 배치 크기의 공개 변경이 실제 구성에 반영되는지도 확인하세요.
공유 절차를 점검하려면 명백히 가상이고 접근 권한이 없는 센티널 문자열을 사용하세요. 격리된 연습에서 비밀과 동일한 위치에 통과시킨 후, 로그, 내보내기, 선별된 파일에서 이를 검색하세요. 이것이 발견되지 않는 것은 이 경로에 대한 제한적인 점검일 뿐, 모든 유출이 불가능하다는 증거는 아닙니다.
적절한 비공개 파일을 Git 제외 목록에 추가하되, 이미 추적 중인 파일도 확인하세요. Git 문서에 따르면 gitignore는 추적되지 않은 파일에 적용됩니다. 패턴을 추가해도 이미 기록된 비밀은 제거되지 않습니다. 제외한다고 여겨지는 규칙만이 아니라 실제로 전송할 내용을 검토하세요.
7. 유출에 대응하고 활용 가능한 기록 남기기
접근 권한이 노출되었다면 재사용을 중단하고, 이를 발급한 시스템에서 폐기하거나 교체하도록 하세요. 현재 파일에서 한 줄을 삭제해도 이전 복사본이 무해해지지는 않습니다. 관련 위치를 파악하여 제거할 수 있는 것은 제거하고 유출 범위를 파악하세요.
이후 재현 가능한 폴더에는 사용한 채널 이름과 허용된 매개변수를 유지할 수 있지만 비밀 자체는 보관하지 마세요. 향후 실행 시 적절한 시점에 유효한 접근 권한을 요청하게 됩니다. 이렇게 하면 실험 아카이브를 접근 키 모음으로 만들지 않고도 전달 가능한 절차를 얻을 수 있습니다.
이 방법은 애플리케이션과 그 결과물에 관한 것입니다. 전체 환경의 격리나 다른 곳에 기술적 흔적이 남지 않음을 보장하지는 않습니다. 실행 단계로 넘어가려면 이를 문서화된 환경, 통제된 데이터, 그리고 진행 상황과 검증된 결과를 구분하는 추적과 함께 사용하세요.