GH GambleHub

코드로서의 정책

1) "정치" 로 간주되는 것

정책은 상황에 따라 "할 수없는" (또는 "정확히 어떻게 할 수 있는지") 질문에 대답하는 결정 론적 규칙입니다

액세스/승인: RBAC/ABAC, ReBAC, 데이터 내보내기, 스텝 업 (MFA).
인프라 보안: 입학 통제 Kubernetes, 이미지/비밀 정책, 네트워크 규칙.
준수 및 개인 정보 보호: 동의 관리, PII 태깅, 현지보고 일, 지리 제한.
구성 및 품질: "거부: 최신" 리소스 제한, 필수 리소스 태그 (클라우드).
데이터 및 ML: 동의없이 세트에 대한 교육 금지, k- 익명 성, DP- 예산, 데이터 계보 불변량.

2) PaC 건축 모델

PAP (Policy Administration Point): 저장소 및 관리 프로세스 (MR/PR, 검토, 버전).
PDP (Policy Decision Point): 정책 결정을 계산하는 엔진 (OPA, Cedar-Engine, 기본 인터프리터).
PEP (Policy Enforcement Point): 응용 프로그램 포인트 (API 게이트웨이, K8의 웹 후크 관리, ETL 변압기, SDK).
PIP (Policy Information Point): 속성/사실 소스: IdP, 리소스 디렉토리, 데이터웨어 하우스, 위험률.
결정 로그/감사: 변경 불가능한 솔루션 로그 (사고 분석 및 규정 준수).

스트림: 요청 → PEP 양식 컨텍스트 → PDP로드 팩트 (PIP) → 솔루션을 계산합니다 → PEP 적용 (허용/거부/편집) → 로그/메트릭스.

3) 도구 및 도메인

OPA/Rego는 선언적 정책 (K8의 웹 후크 관리: CI-Conftest, API-사이드카/서비스) 을위한 범용 엔진 및 언어입니다.
Kyverno-YAML의 Kubernetes에 대한 선언적 정책, 패치/유효성/생성.
삼나무 (AWS/휴대용) 는 누가 인증에 중점을 둔 정책 언어입니다.
Cloud IAM (AWS/GCP/Azure) - 클라우드 리소스 정책 (바람직하게는 PaC 정적 및 IaC 요금제에서 확인).
사용자 정의 - 세부 사항에 대한 JSON/SQL에 대한 DSL/규칙 (예: ML 준수).

4) 정책 수명주기

1. 대상 및 도메인의 정의: "높은/CRITICAL 취약점이있는 컨테이너를 적재하는 것을 금지합니다".
2. 코드의 공식화: Rego/Cedar/YAML.
3. 테스트: 진실 테이블, 부정적인 경우, 재산 기반.
4. CI 검사: 린터, 단위, 가상의 표현/요청에 대한 통합.
5. 출시 및 배포: 번들, 서명, PDP/엣지로의 게시.
6. 모니터링: 적중률, 대기 시간 p95/p99, 점유율 거부, 드리프트 대시 보드.
7. 예외/면제: 시간/볼륨 제한, 감사 및 소유.
8. 리팩토링 및 아카이브: 버전, 호환성, 마이그레이션.

5) 저장 및 배포

레포 레이아웃: '정책/< 도메인 >/< 정책> .rego' cedar 'yaml', 'test/',' bundles/', 'skias/'.
검증: PDP 응답의 준결승 및 '정책 _ 버전'.
번들-압축 정책 패키지 + 스키마 + 구성 요소, 서명 (공급망 보안).
배포: 풀 (레지스트리/S3에서 PDP 가져옵니다) 또는 푸시 (컨트롤러 전송).
부분 평가: 주변에서 빠른 실행을위한 정책을 예상합니다.

6) 데이터 모델 및 스키마

단일 컨텍스트 계약: '주제', '리소스', '액션', 'env', '법적'.
JSON- 스키마/프로토 타입: 실제 모델의 유효성 검사; 스키마 불일치-" 불확정 → 거부 "의 원인.
속성 정규화: 통합 된 이름 (예: 'tenit _ id', 'risk _ level', 'pii _ tags', '이미지). 외음부 ').

7) 성능과 신뢰성

솔루션 캐시: 키 '(주제 _ 해시, 자원 _ 키, 작업, 정책 _ 버전)'; 짧은 TTL, 이벤트 별 장애 (역할/태그 변경).
지역 사실: 핫 트랙에서 무거운 PIP를 가져 오지 마십시오-동기화 스냅 샷.
실패 대 실패: 중요한 도메인 보안-실패; UX 크리티컬-성능 저하 (거부 대신 에디션).
대기 시간 예산: PDP 메모리에서 솔루션 당 '<3-10 ms', PIP로 '<30-50 ms' 를 목표로합니다.

8) 예외 관리 (면제)

제한된 시간 (예: 7 일), 의무 소유자 및 이유.
결합: 리소스/프로젝트/네임 스페이스; 세계적인 "영원히" 금지.
감사 및 알림: 만료 면제, 자동 닫기/에스컬레이션에 대한보고.

9) 측정 및 관찰 가능

정책 범위: PaC에 의해 보호되는 경로/엔드 포인트의 비율.
결정 대기 시간/QPS/오류율.
거부 속도 및 거짓 긍정적/음수 (드라이 런/섀도우 모드를 통해).
드리프트: SDK와 서버 솔루션 간의 계획 (IaC) 과 사실 (실시간) 간의 불일치.
'decision _ id, policy _ ids, 버전, properties _ digest, effect, reason'.

10) 반 패턴

정책은 버전과 테스트없이 코드로 "하드 와이어" 됩니다.
회로도/컨텍스트 검증 부족 → 예측할 수없는 결정.
하나의 모 놀리 식 파일 "메가. 레고 ".
예외 프로세스 → 수동 라운드와 혼돈은 없습니다.
CI에서 시프트 왼쪽이없는 런타임 응용 프로그램 만 (늦은 실패).
정책의 숨겨진 부작용 (정책은 순수한 기능이어야 함).

11) 예

11. 1 레고 (OPA) -K8의 취약한 이미지 거부

rego package k8s. admission. vulns

deny[msg] {
input. kind. kind == "Pod"
some c img:= input. request. object. spec. containers[c].image vulns:= data. registry. scan [img] # actual-snapshot from PIP count ({v     v:= vulns[_]; v.severity == "CRITICAL"}) > 0 msg:= sprintf("image %s has CRITICAL vulns", [img])
}

11. 2 Rego: MFA 및 흰색 IP에서만 데이터 내보내기

rego package api. export

default allow = false

allow {
input. action == "export"
input. subject. mfa_verified == true net. cidr_contains("203. 0. 113. 0/24", input. env. ip)
}

11. 3 삼나무: 소유자 또는 팀원에게만 읽기

cedar permit(
principal in Group::"team_members",
action in [Action::"read"],
resource in Photo::"")
when { resource. owner == principal          resource. team_id in principal. team_ids };

11. 4 Kyverno (YAML): 금지 ': 최신' 및 의무. 자원

yaml apiVersion: kyverno. io/v1 kind: ClusterPolicy metadata:
name: disallow-latest-and-require-limits spec:
validationFailureAction: Enforce rules:
- name: disallow-latest match: { resources: { kinds: ["Pod"] } }
validate:
message: "Image tag 'latest' is not allowed."
pattern:
spec:
containers:
- name: ""
image: "!:latest"
- name: require-limits match: { resources: { kinds: ["Pod"] } }
validate:
message: "resources. limits.{cpu,memory} required."
pattern:
spec:
containers:
- resources:
limits:
cpu: "?"
memory: "?"

11. 테라 폼 계획에 대한 CI의 5 가지 혼란

bash terraform plan -out tf. plan terraform show -json tf. plan > tf. json conftest test tf. json --policy policies/terraform

12) 기존 능력의 포함

RBAC/ABAC: PaC - 선언 계층; 역할 엔진 기사의 PDP/PEP가 재사용됩니다.
동의 관리: 데이터/엔드 포인트 액세스 조건으로서의 "광고/개인화" 정책.
익명/PII: 정책은 익명화 및 DP 예산 프로필없이 교육/수출을 금지합니다.
지리 라우팅: 스토리지 영역별로 트래픽/데이터를 라우팅하는 정책.

13) 프로세스와 사람들

정책 도메인 소유자: 보안, 플랫폼, 데이터, 제품/마케팅.
검토 자: 보안 + 도메인 소유자.
정책 카탈로그: 대상 설명, 위험, SLO, 연락처, 예, 사건 링크.
교육: 개발자를위한 가이드 및 스 니펫 (테스트 작성 방법, Rego 디버깅 방법).

14) 건축가 점검표

1. 정의 된 최소 도메인 및 소유자 세트?
2. 테스트, 라인터 및 CI가있는 정책 저장소?
3. PDP/PEP는 주변, API, K8 및 데이터 파이프 라인에 배치됩니까?
4. 컨텍스트 다이어그램과 검증이 있습니까?
5. 서명 및 전달 번들, 캐시 및 장애 전략?
6. 메트릭 (대기 시간, 거부, 드리프트), 의사 결정 로그 및 감사?
7. TTL 및보고를 통한 예외 프로세스?
8. Enforce 전에 드라이 런/섀도우 모드?
9. 핫스팟에 대한 부분 평가/사전 편집?
10. 열화를위한 런북 (실패/수정 허용)?

결론

Code로서의 정책은 검토 코드, 테스트, CI/CD, 메트릭 및 롤백과 같은 응용 프로그램과 동일한 원칙으로 규칙을 재현 가능하고 검증 가능하며 관리합니다. PaC를 승인 (RBAC/ABAC), 규정 준수 및 플랫폼 보안과 연결함으로써 입장 제어에서 데이터 수출 및 ML 파이프 라인에 이르기까지 시스템 동작을위한 단일 예측 가능하고 확장 가능한 제어 루프를 얻을 수 있습니다.

Contact

문의하기

질문이나 지원이 필요하시면 언제든지 연락하십시오.우리는 항상 도울 준비가 되어 있습니다!

Telegram
@Gamble_GC
통합 시작

Email — 필수. Telegram 또는 WhatsApp — 선택 사항.

이름 선택 사항
Email 선택 사항
제목 선택 사항
메시지 선택 사항
Telegram 선택 사항
@
Telegram을 입력하시면 Email과 함께 Telegram에서도 답변드립니다.
WhatsApp 선택 사항
형식: +국가 코드 + 번호 (예: +82XXXXXXXXX).

버튼을 클릭하면 데이터 처리에 동의하는 것으로 간주됩니다.