프로젝트 소개
# Kyverno용 Nirmata Runtime
Nirmata Runtime은 eBPF를 사용하여 커널 수준에서 워크로드 동작을 모니터링하고 강제하는 Kubernetes 네이티브 런타임 보안 도구입니다. 클러스터 범위의 `RuntimePolicy` 사용자 정의 리소스로 선택된 파드에 eBPF 프로그램을 연결하는 노드별 DaemonSet으로 작동합니다.
## 핵심 기능
`RuntimePolicy`는 다섯 가지 유형의 워크로드 동작을 관리합니다:
1. **파일 열기** – 프로세스가 여는 파일
2. **바이너리 실행** – 실행하는 바이너리
3. **네트워크 대상** – 트래픽을 보내는 위치
4. **애플리케이션 프로토콜** – 사용하는 프로토콜
5. **DNS 해석** – 해석하는 도메인 이름
결정은 커널에서 이루어지므로 거부된 작업은 완료되지 않습니다. 이는 시작 전에 파드 사양을 검증하는 Kyverno와 같은 어드미션 컨트롤러를 보완하여 실제 런타임 동작을 강제합니다.
## 주요 특징
- **강제 또는 모니터링 모드**: 정책은 작업을 차단(`mode: enforce`)하거나 단순히 결과를 보고(`mode: monitor`)할 수 있으며, 정책별로 구성할 수 있습니다.
- **CEL 기반 규칙**: Kyverno 라이브러리와 함께 Common Expressions Language(CEL)를 사용하여 리터럴 값, 표현식, 재사용 가능한 변수를 지원합니다.
- **기본 거부 및 허용 목록**: `deny.values: ["*"]`를 설정하여 허용된 항목 외에는 모두 거부하는 동작으로 전환할 수 있습니다.
- **Kubernetes 네이티브 출력**: 결과는 파드의 네임스페이스에 OpenReports `Report` 객체로 기록되며, 노드별 상태 조건과 Prometheus 카운터가 포함됩니다.
- **셀렉터 범위 지정**: 정책은 레이블 셀렉터를 통해 클러스터 전체에서 파드와 네임스페이스를 대상으로 할 수 있습니다.
- **주기적 재평가**: `evaluationInterval`은 정책 표현식을 다시 실행하여 외부 소스의 거부 목록을 최신 상태로 유지합니다.
## 빠른 시작
Helm으로 설치:
```bash
helm install kyverno-runtime oci://ghcr.io/nirmata/charts/kyverno-runtime --namespace kyverno-runtime --create-namespace
```
예: 파드에 특정 IP 주소 차단:
```yaml
apiVersion: runtime.nirmata.io/v1alpha1
kind: RuntimePolicy
metadata:
name: block-address-sample
spec:
mode: enforce
podSelector:
matchLabels:
app: egress-client
behaviors:
- network:
deny:
values:
- "8.8.8.8"
```
## 제한 사항(1.0 이전)
- 이그레스는 IPv4 전용이며 IPv6 리터럴은 지원되지 않습니다.
- 파일 열기 및 실행 강제는 커널에서 BPF-LSM이 활성화되어 있어야 합니다(`lsm=` 부팅 매개변수).
- 네트워크, 프로토콜, 열기, 실행 관찰은 eBPF 카운터에서 폴링되므로 결과가 지연될 수 있고 순서 대신 카운트를 포함합니다. DNS 질의는 실시간으로 스트리밍됩니다.
- 예외는 아직 지원되지 않습니다.
## 문서
빠른 시작, 개념, 설치, 플랫폼 지원(EKS, GKE, AKS, Bottlerocket), 예제, 섀도우 AI 탐지, 문제 해결, RuntimePolicy CRD, CEL 표현식 및 메트릭에 대한 참조 문서가 포함됩니다.
## 라이선스
Apache License 2.0
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.