심층 방어 보안은(는) 무엇을 하나요?
개요
보안은 계층화되어 있으며, 어떤 단일 계층이라도 실패할 수 있다고 가정하고, 작동하는 최소 권한만 부여합니다. 공격자는 당신이 잊어버린 계층을 찾습니다. 하나의 벽에 의존하는 시스템은 그 벽에 하나의 버그만 있어도 무너지지만, 중첩된 최소 권한 제어는 단일 계층의 실패에도 살아남습니다.
원칙 (보편적)
- 신뢰할 수 없는 입력, 비밀, 또는 사용자 데이터를 처리하는 모든 것을 구축하기 전에 위협 모델링을 수행하십시오. 새로운 표면마다 간단한 STRIDE 평가(스푸핑, 변조, 부인, 정보 노출, 서비스 거부, 권한 상승)를 적용합니다. 모델과 완화 조치를 기록하십시오(
recording-decisions참조). - 심층 방어. 단일 제어는 "그 자체로" 보안이 아닙니다. 인증, 권한 부여, 입력 유효성 검사, 데이터 계층 강제 적용은 각각 다른 계층이 우회될 수 있다고 가정합니다.
- 모든 곳에서 최소 권한 — 역할, 토큰, 서비스 계정, DB 권한. 기본적으로 접근 권한 없음; 최소한만 부여; 사용하지 않는 것은 철회.
- 비밀은 코드, 이미지, 또는 커밋된 설정 파일에 절대 저장하지 않습니다. 런타임에 비밀 저장소에서 가져오며, 교체(rotation)되고, 필요한 워크로드에만 범위가 지정됩니다.
- 신뢰 경계에서 모든 입력의 유효성을 검증하십시오. 모든 외부 시스템의 출력을 신뢰할 수 없는 데이터로 취급하고, 절대 명령어로 취급하지 마십시오.
- 의존성 공급망은 공격 표면입니다. 잠금 파일을 커밋하고 무결성을 검사하며; 의존성을 스캔하고 업데이트하며; 기본 이미지를 고정(pin)하고 스캔합니다.
- 민감한 작업은 감사(audit)됩니다. — 누가, 언제, 무엇을 했는지 — 그래야 남용과 실수를 재구성할 수 있습니다.
빠른 참조
| 표면 | 첫 번째 질문들 |
|---|---|
| 사용자 입력을 받는 새 엔드포인트 | STRIDE 모델은 무엇인가? 유효성 검사는 어디에 있는가? 작동하는 최소 역할은 무엇인가? |
| 비밀을 포함하는 모든 것 | 비밀 저장소(코드/이미지 아님)에 있는가? 범위가 지정되었는가? 교체 가능한가? |
| 새 의존성 | 잠금 파일이 고정(pin)되었는가? 스캔되었는가? 잘 지원되는가? |
| 권한 상승 변경 | 감사(audit)되는가? 행위자가 애플리케이션 계층뿐만 아니라 데이터 계층에서도 권한이 부여되었는가? |
스택 메커니즘
RLS를 최종 강제 계층으로, GraphQL 깊이/비용 제한을 DoS 제어로, 비밀을 위한 Key Vault, CI에서 pnpm audit/Trivy — postgres-postgraphile-rls-and-sql 및 cloud-delivery-aks를 참조하십시오.
강제 적용: CI에서 의존성 감사 + 이미지 스캐닝 + 비밀 스캐닝(차단); 위협 모델 및 감사 범위는 검토자 판단에 따릅니다.
전체 근거: 헌법 제X조 및 제XIV조, engineering-constitution/references/engineering-constitution.md에 번들로 제공됩니다.