인프라의 보안 계층
(섹션: 기술 및 인프라)
간단한 요약
보안은 계층 시스템입니다. 각 계층은 보류하고 이전 계층이 실패하면 공격을 감지합니다. iGaming의 경우 결제 흐름, PII, 파트너 통합 및 피크로드와 같이 특히 중요합니다. 아래는 네트워크, ID, 응용 프로그램, 데이터 및 운영 프로세스를 하나의 관리 프로그램으로 연결하는 심층 방어 프레임 워크입니다.
1) 위협 모델 및 기본
위협 모델링: 키 흐름 (로그인, 예금, 입찰, 철회, 백 파일) 을위한 STRIDE/킬 체인.
제로 트러스트: "기본적으로 신뢰하지 마십시오", 최소 권리, 모든 홉을 확인하십시오.
최소 특권 및 의무 분리: 역할은 원자적이고 민감한 작업이 분리되어 있습니다.
기본값으로 보장: 닫힌 포트, 모든 정책 거부, 기본값을 보호합니다.
감사 가능성: 중앙 집중식 감사에서 모든 액세스/변경 사항.
2) 네트워크 및 주변
목적: 측면 이동을 피하고 위험을 고립 적으로 관리하십시오.
세분화/영역: 가장자리 (CNC/WAF) → API → 서비스 → 데이터 (DB/KMS) → 관리자/백호.
공공/개인 서비스를위한 VPC/VNet 격리 + 서브넷; GPS/출구 제어 (PSP/게임 제공 업체에 대한 출구 허용 목록 포함).
어디에서나 mTLS (메쉬/인 그레이스), TLS 1. 2 +/HSTS/클리어 암호화 구성.
주변의 WAF/봇 관리/DDoS; 자격 증명 채우기에 대한 득점 금지.
DNA 보안: 분할 수평선, DNSSEC, 결함 허용 오차, 중요한 도메인을위한 캐시 피닝.
yaml apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: { name: api-deny-all, namespace: prod }
spec:
podSelector: { matchLabels: { app: api } }
policyTypes: [Ingress, Egress]
ingress: [] # deny-all egress:
- to:
- namespaceSelector: { matchLabels: { name: prod } }
podSelector: { matchLabels: { app: payments } }
ports: [{ protocol: TCP, port: 8080 }]
3) 신원 및 액세스 (IAM/PAM)
목적: 모든 액세스는 정당화되고 제한되며 투명하게 감사됩니다.
사람과 자동차를위한 SSO + MFA; 권한있는 계정을위한 하드웨어 키.
클라우드 용 RBAC/ABAC/K8/백오프; SCIM-자동 켜기/꺼짐.
감사가 강화 된 JIT 액세스 (임시), 브레이크 글래스.
단기 토큰 (OIDC/JWT), 클라이언트 비밀 감사가있는 서비스 계정.
요새/명령 미러링: 요새 및 쓰기 세션을 통해서만 생산 데이터베이스/노드에 액세스합니다.
4) 비밀과 열쇠
목표는 누출을 제거하고 관리 가능한 주요 수명주기를 제공하는 것입니다.
KMS/HSM (마법사 키), 규칙적인 회전; 키를 영역/대상으로 나눕니다.
다이나믹 크리드 및 임대 기능이있는 Vault/Cloud KMS Secrets.
- 엔벨로프 암호화가있는 휴식 시간 (DB/버킷/스냅 샷).
- 대중 교통 중 (TLS/mSL).
- 결제 데이터에 대한 토큰 화; PAN 안전 스레드 및 3 도메인 보안 (PCI DSS).
hcl path "kv/prod/payments/" {
capabilities = ["read","list"]
}
path "database/creds/readonly" {
capabilities = ["read"]
}
5) 컨테이너 및 Kubernetes의 보안
목적: 런타임 레벨에서 공격 표면을 최소화합니다.
이미지: 최소한의 기본, 컴파일러/쉘 없음; 서명 (cosign) 및 SBOM.
입학 통제 (OPA/Gatekeeper/Kyverno): 금지 ': 최신', '권한', 'hostPath', '루트'.
런타임-지정된 литик달력: Seccomp/AppArmor, 'readOnlyRootFilesystem', 'drop ALL' 기능 + 허용 목록.
비밀 관리자의 볼륨/env로서의 비밀; 이미지에서 굽지 않고.
PodSecurity (и독점 Pod Security Admission): 제한을 적용하십시오.
레지스터: 비공개, 취약성 확인 (SAST/DAST/CSA).
yaml apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sAllowedRepos metadata: { name: only-internal-registry }
spec:
repos: ["registry.internal.local/"]
6) 공급망... CI/CD
목적: 인공물을 커밋에서 생산까지 신뢰하십시오.
지점 정책: 코드 검토, 보호 지점, 필수 점검.
아티팩트 서명 및 출처 (SLSA/COSIN), 불변의 태그 (불변의 이미지).
SBOM (CycloneDX/SPDX), Dependabot/Renovate 및 피닝 종속성.
CI 격리: 임시 러너, 보호 된 작업에서만 비밀, 평문이 없습니다.
CD- 게이트: 품질/SAST/라이센스/공급 업체 정책; GitOps를 통해서만 프로모션.
7) 애플리케이션 보안 (API/web/mobile)
목표: 논리적 및 기술적 공격을 방지합니다.
AuthN/AuthZ: OAuth2/OIDC/JWT; 짧은 TTL, 주요 회전, 청중/발행자 확인.
입력 보안: 검증/정규화, 주입 보호, 매개 변수가있는 템플릿.
CSP/HSTS/XFO/XSS-Protection, 엄격한 CORS, 다운로드 가능한 ID/크기 제한.
지불/지불에 대한 요율 제한/할당량, demempotency 키.
Ficheflags: 위험한 기능을위한 빠른 킬 스위치.
nginx add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
add_header Content-Security-Policy "default-src 'self'; img-src 'self' data: https:;" always;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options DENY;
8) 데이터, PII 및 규정 준수 (PCI 포함)
목표: 최소 수집, 최소 액세스, 최대 투명도.
데이터 영역/класс달러: '공개/내부/기밀/피이/pci'. 볼트 및 로그의 태그.
PII 최소화: 'player _ id' 의 가명, 지불 세부 사항의 토큰 화.
저장 정책: 핫/콜드, 감사를위한 WORM; 자동 TTL 삭제.
액세스: 합의 된 역할 및 속성 (지역/대상) 을 통해서만 가능합니다.
PCI 세분화: 격리 된 세그먼트, 액세스 로그, 일반 스캔/ASV.
9) 에지 레이어: CNC/WAF/DDoS/봇 보호
목표는 플랫폼 코어에 "쓰레기" 를 제거하는 것입니다.
CNC: 지오 블록, 캐시 전략, 레이어 7 보호.
WAF: API에 대한 기본 서명 + 사용자 정의 규칙 (JSON 체계, 비표준 방법 금지).
내기: 이상에 대한 행동 분석, 장치 지문, 속도 제한/캡차.
TLS/ALPN: 오래된 암호를 끄고 OCSP 스테이플링을 켜십시오.
10) 모니터링, 원격 측정 및 SecOps
목표: 사건 전에 공격을보고 대응하십시오.
관찰 가능성: 'trace _ id' 및 감사 필드가있는 메트릭/로그/트레일.
SIEM/SOAR: 이벤트 상관 관계 (인증, IAM 변경, WAF 트리거, 비밀 액세스).
탐지 규칙: 401/403 스파이크, 역할 확대, 대량 지불, 지리 이상.
스캔: SAST/DAST/IAST, CSPM/KSPM, 일반 펜 테스트 및 버그 바운티.
사기 방지: 점수 거래/행동, 속도 필터, 제재 목록.
11) 신뢰성, 예비 및 비즈니스 연속성
목표: 데이터 손실 및 SLA없이 충돌을 생존하십시오.
데이터베이스에 대한 복제 및 PITR, 테스트 복구시 빈번한 스냅 샷.
DR 계획: RTO/RPO, 지역 장애 조치 스크립트, 스위칭 테스트.
DR의 비밀: 독립적 인 키/KMS 복제본, 비상 회전 프로세스.
공식 가이드: 복구 점검표 및 게임 데이 연습.
12) 운영 과정과 문화
목표는 보안이 "기본값" 이되는 것입니다.
PR 별 보안: 민감한 변경에 대한 필수 보안 검토.
릴리스 정책: 야간/피크 창이 닫힙니다. 비행 전 점검표.
보안 런북-보안 매개 변수, 감사 작업이 포함 된 지침.
교육: 피싱 시뮬레이션, 사건 교육, 라이브 탁상 세션.
13) 점검표 (짧은)
네트워크 및 경계계
- WAF/CDN당 모든 수입; DDoS 활성화
- 서비스 간 mTLS; 모든 네트워크 정책 거부
- 외부 제공 업체에 대한 탈퇴 허용 목록
정체성
- SSO + MFA; 감사와 JIT 및 브레이크 글래스
- RBAC/ABAC, SCIM 비활성화 레이 오프
- 짧은 토큰을 가진 서비스 계정
K8/컨테이너
- 이미지 서명 + SBOM; 금지 ': 최신'
- Seccomp/AppArmor, 읽기 전용 FS, 드롭 캡
- 게이트 키퍼/Kyverno 정책 및 거부 목록
비밀/키
- Vault/KMS, 회전, 키 분할
- 휴식/운송 중 암호화
- 지불에 대한 토큰 화
CI/CD! 공급망
- Ephemeral 주자; 보호 된 작업에서만 비밀
- SAST/DAST/라이센스; 아티팩트 서명
- GitOps 프로모션, 품질 게이트
데이터/PII/PCI
- 저장소의 데이터 및 태그 분류
- 유지/세계 정책; 역할 별 액세스
- PCI 세그먼트 격리, ASV 스캔
SecOps
- SIEM/SOAR 규칙, 에스컬레이션 경고
- 사기 방지 및 속도 필터
- DR 계획, RTO/RPO 테스트
14) "하드" 정책의 예
Kyverno: 특권 컨테이너 금지
yaml apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: { name: disallow-privileged }
spec:
rules:
- name: no-priv match: { resources: { kinds: ["Pod"] } }
validate:
message: "Privileged containers are not allowed"
pattern:
spec:
containers:
- securityContext:
privileged: "false"
OPA (Rego): 'hostNetwork' 금지
rego package kubernetes.admission
violation[msg] {
input.request.kind.kind == "Pod"
input.request.object.spec.hostNetwork == true msg:= "hostNetwork is not allowed"
}
15) 반 패턴
키 회전 및 복구 테스트없이 "종이에" 암호화
내부 mSL/세분화 → 측면 이동없이 "둘레를 보호" 합니다.
CI env 변수의 비밀은 로그에 업로드됩니다.
이미지 ': 최신', 서명 없음 및 SBOM.
클러스터에서 모든 정책을 허용합니다. 모든 것을위한 일반적인 네임 스페이스.
논리 수정 및 데이터 검증 대신 WAF에 의존합니다.
DR 연습/표 시나리오가 없습니다-계획은 "먼지 수집" 입니다.
16) 시작 방법 (90 일 계획)
1. 1-2 주차: 자산/데이터 인벤토리, 분류, 흐름지도
2. 3-4 주차: mSL/거부 네트워크 정책, WAF/DDoS/봇 필터 사용.
3. 5-6 주차: Vault/KMS, 주요 교체, 지불 토큰 화.
4. 7-8 주차: 게이트 키퍼/Kyverno, Seccomp/AppArmor, '권한 '/' hostPath' 금지
5. 9-10 주차: 이미지 서명, SBOM, CI/CD 게이트, GitOps 프로모션.
6. 11-12 주차: SIEM/SOAR 규칙, 에스컬레이션 경고, 사기 방지.
7. 13 주차: DR 운동, Runabook 업데이트 및 준수 상태 (PII/PCI).
결과
보안 계층은 일련의 체크 박스가 아닌 솔루션 아키텍처입니다. 네트워크 세분화와 Zero Trust, 엄격한 IAM, 보안 컨테이너/K8, 관리 비밀 및 암호화, 보호 된 파이프 라인, 에지 방어 및 SecOps 관찰 가능성을 결합하십시오. 그런 다음 공격 및 충돌시 플랫폼은 데이터 무결성, PII/PCI 기밀성 및 주요 스트림 (예금, 입찰 및 인출) 의 가용성을 피크 시간에 유지합니다.