IDP 보안: 통합 접근 방식
보안을 하나로 내부 개발자 플랫폼 이것은 추가 레이어가 아닙니다. 소급 적용: 반드시 디자인으로 통합 모든 구성 요소에 플랫폼. 패러다임 제로 트러스트 ("신뢰하지 말고 항상 확인하세요") 보안 플랫폼의 아키텍처 기반: 모든 요청, 모든 액세스 및 모든 출처에 관계없이 통신이 확인됩니다.
플랫폼 팀의 과제는 보안과 개발자 경험의 균형을 맞추는 것입니다. 정책이 너무 많습니다. 제한적으로 개발 속도를 늦추고 안전하지 않은 해결 방법을 장려하는 반면 정책은 너무 많습니다. 허용 정책은 조직을 위험에 노출시킵니다. 해결책은 보안 자동화: 장애 없이 보호하는 자동 정책 시행입니다.
무엇을 배울 것인가
- IDP에 적용되는 제로 트러스트 원칙
- 세분화된 액세스 제어를 위한 RBAC 및 ABAC
- OPA 및 Kyverno를 통한 정책 시행
- Vault를 통한 자동화된 비밀 관리
- 공급망 보안: SBOM, 이미지 서명, 취약점 스캔
- 규정 준수 프레임워크: GDPR, SOC2, ISO 27001
제로 트러스트 아키텍처
모델 제로 트러스트 반드시 지켜야 할 기본 원칙에 기초하고 있습니다. 플랫폼의 모든 수준에서 구현됩니다.
- 명시적으로 확인: 내부 네트워크에서 오는 경우에도 모든 요청이 인증되고 승인됩니다.
- 최소 권한 액세스: 각 사용자 및 서비스는 해당 기능을 수행하는 데 필요한 최소한의 권한을 갖습니다.
- 위반으로 가정: 플랫폼은 타협이 발생할 수 있다는 가정하에 설계되어 폭발 반경을 최소화합니다.
Kubernetes 컨텍스트에서 제로 트러스트는 서비스 간 필수 mTLS(서비스 메시), 무단 트래픽을 차단하는 네트워크 정책, 무단 트래픽을 차단하는 포드 보안 표준 권한 있는 컨테이너를 실행하고 각 작업에 대한 감사 로깅을 수행합니다.
# Zero Trust: network policies Kubernetes
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: checkout-service-policy
namespace: checkout
spec:
podSelector:
matchLabels:
app: checkout-service
policyTypes:
- Ingress
- Egress
ingress:
# Solo dal gateway e dal servizio ordini
- from:
- namespaceSelector:
matchLabels:
name: api-gateway
- namespaceSelector:
matchLabels:
name: orders
ports:
- protocol: TCP
port: 8080
egress:
# Solo verso database, cache e servizi necessari
- to:
- namespaceSelector:
matchLabels:
name: databases
ports:
- protocol: TCP
port: 5432
- to:
- namespaceSelector:
matchLabels:
name: cache
ports:
- protocol: TCP
port: 6379
# DNS resolution
- to:
- namespaceSelector:
matchLabels:
name: kube-system
ports:
- protocol: UDP
port: 53
---
# Pod Security Standard: restricted
apiVersion: v1
kind: Namespace
metadata:
name: checkout
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/warn: restricted
RBAC 및 ABAC: 세분화된 액세스 제어
플랫폼의 접근 통제는 다음과 같아야 합니다. 세분화된 e 자동화된:
- RBAC(역할 기반 액세스 제어): 사전 정의된 역할(개발자, 기술 책임자, 플랫폼 관리자)을 기반으로 권한 할당
- ABAC(속성 기반 액세스 제어): 동적 속성(팀, 환경, 시간, 위치)에 따른 권한
- 적시 액세스: 자동 승인 및 만료를 통해 권한 있는 리소스에 대한 임시 액세스
- Break Glass 절차: 전체 감사를 통한 높은 접근 비상 절차
# RBAC: ruoli Kubernetes per il platform team
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: platform-developer
rules:
# Può vedere e gestire i propri deployment
- apiGroups: ["apps"]
resources: ["deployments", "replicasets"]
verbs: ["get", "list", "watch", "create", "update", "patch"]
# Può vedere i pod ma non eliminarli
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "list", "watch"]
# Può gestire configmap e secrets nel proprio namespace
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["get", "list", "watch", "create", "update", "patch"]
# NON può modificare namespace, RBAC o network policies
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: team-checkout-developer
namespace: checkout
subjects:
- kind: Group
name: team-checkout
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: platform-developer
apiGroup: rbac.authorization.k8s.io
자동화된 정책 시행
정책은 다음과 같아야 합니다. 자동으로 시행, 선의에 의존하지 마십시오 개발자의. Kubernetes의 정책 시행을 위한 두 가지 주요 도구는 다음과 같습니다.
- OPA/게이트키퍼: Rego 언어를 사용한 범용 정책 엔진. 강력하지만 학습 곡선이 가파르다
- 키베르노: YAML을 사용하는 Kubernetes 기본 정책 엔진입니다. K8s 관련 정책이 더 간단하고 직관적입니다.
# Kyverno: policy di sicurezza per la piattaforma
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-non-root
spec:
validationFailureAction: Enforce
rules:
- name: run-as-non-root
match:
any:
- resources:
kinds:
- Pod
validate:
message: "I container devono eseguire come non-root"
pattern:
spec:
containers:
- securityContext:
runAsNonRoot: true
allowPrivilegeEscalation: false
---
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-resource-limits
spec:
validationFailureAction: Enforce
rules:
- name: require-limits
match:
any:
- resources:
kinds:
- Pod
validate:
message: "Tutti i container devono avere resource limits"
pattern:
spec:
containers:
- resources:
limits:
memory: "?*"
cpu: "?*"
requests:
memory: "?*"
cpu: "?*"
---
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-labels
spec:
validationFailureAction: Enforce
rules:
- name: require-team-label
match:
any:
- resources:
kinds:
- Deployment
- StatefulSet
validate:
message: "Tutti i workload devono avere il label 'team'"
pattern:
metadata:
labels:
team: "?*"
app: "?*"
공급망 보안
La 공급망 보안 전체 소프트웨어 수명주기를 보호합니다. 배포 종속성:
- SBOM(소프트웨어 자재 명세서): 각 서비스의 모든 종속성에 대한 전체 인벤토리가 자동으로 생성됩니다.
- 이미지 서명: Cosign/Sigstore를 사용하여 컨테이너 이미지에 암호화 서명하여 무결성을 보장합니다.
- 취약점 스캔: CI/CD에 통합된 Trivy, Snyk 또는 Grype를 사용한 자동 이미지 스캐닝
- 입장 통제: 서명 및 스캔된 이미지만 클러스터에 배포할 수 있습니다.
보안 자동화 원리
보안 정책에 따라 필요한 경우 직접 조치 개발자에 의해, 그것은 실패할 것이다. 보안은 자동화되어야 합니다. CI/CD에서 스캔하고, CI/CD에서 정책을 시행합니다. 승인 컨트롤러, 자동 비밀 순환, 자동 인증서 갱신. 개발자 그는 보안에 대해 생각할 필요가 없습니다. 플랫폼이 그를 위해 보안을 관리해 주기 때문입니다.
규정 준수 프레임워크
최신 IDP는 규제 프레임워크 준수를 지원해야 합니다.
- GDPR: 데이터 암호화, 접근 로깅, 데이터 보유 정책, 삭제 권한
- SOC 2: 보안 제어, 가용성, 처리 무결성, 기밀성, 개인 정보 보호
- ISO 27001: 정보보안 관리체계, 위험평가, 지속적인 개선
- PCI DSS: 결제 데이터를 관리하는 플랫폼
플랫폼은 규정을 준수해야 합니다. 연속적이고 자동적인: 감사 추적 자동 실시간 정책 시행, 자동 생성된 규정 준수 보고서. 이를 통해 규정 준수는 스트레스가 많은 연간 감사에서 지속적이고 고통 없는 프로세스로 전환됩니다.
감사 로깅 및 모니터링
시스템 감사 로깅 완전하고 보안 및 규정 준수의 기초:
- 불변 로그: 감사 로그는 변경할 수 없으며 규정 준수에 필요한 기간 동안 보관되어야 합니다.
- 중앙 집중식 로깅: 모든 보안 로그는 중앙 집중식 시스템(SIEM)으로 유입됩니다.
- 실시간 알림: 중요한 보안 이벤트(의심스러운 접근, 권한 상승)에 대한 즉각적인 경고
- 포렌식 능력: 보안 사고 발생 시 사건의 순서를 재구성하는 능력
# Audit logging: Kubernetes audit policy
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
# Log tutti gli accessi ai secrets
- level: Metadata
resources:
- group: ""
resources: ["secrets"]
# Log tutte le modifiche a RBAC
- level: RequestResponse
resources:
- group: "rbac.authorization.k8s.io"
resources: ["clusterroles", "clusterrolebindings", "roles", "rolebindings"]
# Log tutti i delete
- level: RequestResponse
verbs: ["delete", "deletecollection"]
# Log tutti gli exec nei pod
- level: Request
resources:
- group: ""
resources: ["pods/exec", "pods/attach"]
# Log minimo per le richieste di lettura frequenti
- level: None
resources:
- group: ""
resources: ["events", "nodes/status"]
verbs: ["get", "list", "watch"]
기본 보안
가장 안전한 구성은 다음과 같아야 합니다. 기본 구성. 골든스 경로에는 루트가 아닌 컨테이너, 리소스 제한, 통합 보안 모범 사례가 포함되어야 합니다. 네트워크 정책, Vault를 통한 비밀 관리. 황금의 길을 걷는 개발자 추가적인 노력 없이 보안을 달성합니다.







