음식 환경 강화
생산 환경 강화
1) 목적과 프레임
강화는 사고 가능성과 사고로 인한 피해를 줄이는 체계적인 관행입니다. 초점: API 경계, 고객/결제 데이터, CI/CD, 컨테이너 플랫폼, 액세스, 변경 제어, 관찰 및 준수.
주요 원칙:- 설계 및 기본값으로 보안: 필요한 최소 권한, 기본값을 보호합니다.
- 제로 트러스트: 확인없이 네트워크 나 신원을 신뢰하지 마
- 심층 방어: 다단계 보호 (네트워크 → 서비스 → 응용 프로그램 → 데이터).
- 인공물의 불변성: "한 번 빌드하고 많은 것을 실행하십시오".
- E2E는 추적하고 감사합니다: 누가, 언제, 무엇이 바뀌 었는지, 왜.
2) 위협 모델 및 중요 자산
자산: 계정 및 결제 토큰, PII/여권 데이터, RNG/게임 잔액, 암호화 키, 통합 비밀, 파이프 라인 배치, 컨테이너 이미지.
벡터: 종속성 취약점, 토큰 누출, 클라우드 잘못된 구성/K8, API의 SSRF/RCE, 공급망 (CI/CD/저장소 손상), 내부자 액세스, DDoS/봇 트래픽.
시나리오: 무단 엔티티에 의한 자금 인출, 계수/밸런스 대체, 기본 드레인, 파이프 라인 캡처, 제품의 수동 편집.
3) 네트워크 아키텍처 및 격리
세분화: prod/stage/dev에 대한 별도의 VPC/VNet. 내부 prod - Edge (LB/WAF), API, 데이터베이스, 분석, 관리 서비스 용 서브 넷.
"명시 적으로 허용 된" 정책: 서브넷 사이의 모든 것을 거부하고 필요한 포트/방향 만 엽니 다.
서비스 간 mTLS, 인증서 회전이 자동화됩니다.
yaml apiVersion: networking. k8s. io/v1 kind: NetworkPolicy metadata:
name: default-deny namespace: prod spec:
podSelector: {}
policyTypes: ["Ingress","Egress"]
apiVersion: networking. k8s. io/v1 kind: NetworkPolicy metadata:
name: allow-api-to-db namespace: prod spec:
podSelector:
matchLabels: {app: db}
ingress:
- from:
- podSelector: {matchLabels: {app: api}}
ports: [{protocol: TCP, port: 5432}]
4) 정체성 및 액세스 (PAM/JIT)
모든 인간 접근에 대한 SSO + MFA.
RBAC & ABAC-클라우드, 클러스터, 네임 스페이스 및 응용 프로그램 레벨에서 역할을합니다.
PAM: 점프/요새, JIT 액세스 (제한된 시간), 세션 기록.
브레이크 글래스: 하드웨어 키, 로그 발행이있는 밀봉 된 계정.
"무엇에 액세스 할 수있는 사람" 에 대한 정기적 인 스캔은 30 일마다 한 번씩 검토합니다.
5) 비밀과 열쇠
Vault/KMS/Secrets Manager는 Git의 비밀을 제외합니다.
마스터 키의 KMS/HSM; KEK/DEK, 자동 회전.
TTL 정책: 단기 토큰 (OIDC/JWT), CI의 임시 계정.
암호화: 휴식 시간 (AES-256/GCM), 비행 중 (SL 1. 별도의 키가있는 2 +/mSL), PII/카드 데이터 열.
6) 공급망, CI/CD 경화
prod를위한 러너 격리 (개인 네트워크에서 자체 호스팅).
인공물 서명 (Sigstore/cosign), depla의 서명 검증.
각 커밋 및 릴리스 전에 SBOM (CycloneDX/SPDX), SCA/VA.
"최신 태그 없음" 정책, 불변의 태그 만 있습니다.
4 눈 원칙: 필수 코드 검토 및 승인 변경.
코드로서의 인프라: Terraform/Helm) 코드 정책 (OPA/Conftest).
rego package iac. guardrails
deny[msg] {
input. resource. type == "storage_bucket"
input. resource. acl == "public-read"
msg:= sprintf("Public bucket forbidden: %s", [input. resource. name])
}
7) 컨테이너와 Kubernetes
최소 이미지베이스 (디스트로리스), 뿌리가없고 읽기 전용 FS, 드롭 CAP.
입학 통제: 특권, 호스트 경로, 호스트 네트워크 거부.
포드 보안 표준: 기준/제한된
ImagePolicyWebhook-서명 된 이미지 만 건너 뛰십시오.
런타임 정책 (Falco/eBPF): 비정상적인
쿼터/제한 범위: "잡음 이웃" 으로부터 노드를 보호합니다.
8) API 경계: WAF, 속도 제한, 봇/DDoS
게이트웨이 API: 인증 (OAuth2/JWT/HMAC), 정규화, mSL, 스키마 검증.
WAF: 비즈니스 지표에 대한 기본 규칙 + 카스트.
요율 제한: 글로벌/바이 IP/클라이언트 키; "토큰" 과 버스트.
nginx limit_req_zone $binary_remote_addr zone=api:20m rate=10r/s;
server {
location /api/ {
limit_req zone=api burst=30 nodelay;
proxy_pass http://api_backend;
}
}
봇 관리: 행동 신호, 장치 지문, 도전.
DDoS: 뜨거운 기능을위한 CDNA/에지 스크러빙, 자동 스케일, "다크 런칭".
9) 설정 정책 및 기본값 보호
위험한 기능을 신속하게 비활성화하기 위해 플래그/킬 스위치 기능.
회로 검증, 구성 요소에 대한 카나리아/청록색의 코드 설정.
구성 요소/키를 취소 할 때 KPI로 취소합니다.
10) 데이터 및 개인 정보
분류: PII/금융/운영 로그/원격 측정.
최소화: 익명화/가명 만 필요한 것만 저장하십시오.
백업: 별도의 계정/프로젝트, 암호화, 일반 DR 리허설.
철회 규칙: 동일한 방법, 속도 제한, 위험 점수, 4 눈.
법적 보류/보존: 보관 일정, 관리 처리.
11) 관찰 가능성, 경고 및 응답
트라이어드: 로그 (비밀 포함), 메트릭 (SLO/SLA), 트레일 (W3C).
보안 신호: 입력 성공/실패, 권한 상승, 비밀 변경, 트래픽 편차.
SIEM + SOAR: 상관 및 반자동 플레이 북.
사건 플레이 북: DDoS, 비밀 유출, 러너 타협, 릴리스 롤백, 지불 "동결".
응답 성의 주요 지표로서 MTTD/MTTR.
12) 변경 및 릴리스 관리
고위험 변경을 위해 자문위원회 (경량) 를 변경하십시오.
사전 게이트: 테스트, 보안, perf, 데이터베이스 마이그레이션.
Canary/Blue-Green/Shadow depley, SLO의 자동 롤백.
prod에서 직접 편집을 금지합니다. 파이프 라인을 통해서만 변경됩니다.
13) 취약성 및 패치
패치 정책: 중요-최대; 높음-N 일 동안.
수정 후 수지; CVE 노출 가중치.
혼돈 보안: 강조 표시된 창에서 주기적 테이블 탑 연습 및 빨간색 명령 공격.
14) 준수 및 감사
제어 프레임 워크: PCI DSS (결제), SOC 2, ISO 27001.
아티팩트: 제어 매트릭스, 로그 변경, 스캔 보고서, DR 테스트 결과, 액세스 검토.
지속적인 가용성: "코드로서의 증거" -아티팩트는 파이프 라인 및 시스템에서 자동으로 수집됩니다.
15) 경제와 신뢰성
비용 별 보호: 할당량, 예산, 경고, 미사용 리소스의 자동 종료.
용량: SLO 지향 계획, 로드 테스트, "혼돈의 날".
복구 우선 순위: 서비스 별 RTO/RPO, 종속성 맵.
16) 반 패턴
Git의 v.env의 비밀, 모든 사람을위한 일반적인 "관리자", "prod in prod", 컨테이너의 수동 수정, "최신" 태그, 모든 것을위한 하나의 공통 클러스터, 퍼블릭 버킷, prod-network의 아웃 바운드 인터넷이있는 CI 러너, "핫" 기능의 킬 스위치 없음.
17) 빠른 시작 점검표 (90 일)
0-30 일
MFA/SSO 활성화, 액세스 검토; 모든 네트워크 정책 거부; 비밀 관리자/KMS; K8에서 금지 된 특권; WAF/속도 제한 기본 항목/에스컬레이션 경고 사용
31-60 일
이미지 서명 + ImagePolicy; SBOM + SCA 칼륨 CI; 카나리아/롤백; SIEM 상관 관계; IR 플레이 북; JIT/PAM; DR 테스트로 백업.
61-90 일
IaC를위한 OPA- 가드 레일; eBPF/팔코; 봇 관리; 정기적 인 액세스 검토; 혼돈 보안 운동; 컨피그 및 비용 절감 감사.
18) 성숙도 지표
액세스: MFA 계정의%, 토큰의 평균 연령, 리콜 시간.
파이프 라인:% 서명/SBOM 이미지, SAST/DAST 적용 범위.
플랫폼: 읽기 전용 FS, PSS 제한, NetworkPolicy 적용 범위를 가진 포드 공유.
경계계: 속도 제한/WAF 규칙이있는% API, DDoS에 대한 평균 응답.
IR: MTTD/MTTR, 탁상용 주파수, 성공적인 DR 리허설 비율.
준수: 자동 증거가있는 제어 비율.
19) 부록: 정책 템플릿
AWS SCP (공개 버킷 금지)
json
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "DenyPublicS3",
"Effect": "Deny",
"Action": ["s3:PutBucketAcl","s3:PutBucketPolicy"],
"Resource": "",
"Condition": {"StringEquals": {"s3:x-amz-acl": "public-read"}}
}]
}
Kubernetes PodSecurity (네임 스페이스 라벨)
yaml apiVersion: v1 kind: Namespace metadata:
name: prod labels:
pod-security. kubernetes. io/enforce: restricted pod-security. kubernetes. io/audit: restricted
컨테이너 용 <> OPA (금지 된 특권)
rego package k8s. admission deny[msg] {
input. request. object. spec. containers[_].securityContext. privileged == true msg:= "Privileged containers are not allowed in prod"
}
20) 결론
식품 환경을 강화하는 것은 지속적인 과정입니다. 액세스 및 비밀, 네트워크 격리, 아티팩트 서명 및 파이프 라인 제어, API 주변 보호, 관찰 가능성 및 규율 변경과 같은 위험 완화 조치의 우선 순위를 정하십시오. 나머지는 반복적으로 구축하여 성숙도 지표를 포착하고 경제를 제어합니다.