ProofedMesh/deploy/dummy-sink/40-networkpolicy.yaml

87 lines
2.6 KiB
YAML
Raw Permalink Normal View History

# NetworkPolicy for dummy-sink.
#
# Cluster-wide NetworkPolicy enforcement is active on BasicStack (see
# cluster memory on NetworkPolicy activation). Pods in agent-trust
# without an explicit allow-list are isolated; this file is the
# explicit allow-list for dummy-sink per DEV-615.
#
# Ingress callers (per Phase-1 architecture V1.1 §7):
# - testagent-transform — the sole producer of handover deliveries.
#
# Egress reachable targets (Phase-1 §7 Senken-Vertrag):
# - verification-service — chain verification + replay guard.
# - signing-service — handover-attestation signing.
# - transparency-log — logging the signed handover envelope.
# - DNS — kube-dns for service name resolution.
#
# dummy-sink intentionally does NOT egress Pocket-ID directly; it uses
# the Pocket-ID OIDC endpoint via HTTPS/443 as the client_credentials
# source for its Bearer token to signing-service. That cluster-external
# target is included below.
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: dummy-sink
namespace: agent-trust
labels:
app.kubernetes.io/name: dummy-sink
app.kubernetes.io/part-of: proofedmesh
spec:
podSelector:
matchLabels:
app.kubernetes.io/name: dummy-sink
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
app.kubernetes.io/name: testagent-transform
ports:
- port: 8083
protocol: TCP
egress:
# verification-service (same namespace).
- to:
- podSelector:
matchLabels:
app.kubernetes.io/name: verification-service
ports:
- port: 8084
protocol: TCP
# signing-service (same namespace).
- to:
- podSelector:
matchLabels:
app.kubernetes.io/name: signing-service
ports:
- port: 8081
protocol: TCP
# transparency-log (same namespace, port 80 → container 8080).
- to:
- podSelector:
matchLabels:
app.kubernetes.io/name: transparency-log
ports:
- port: 8080
protocol: TCP
# Pocket-ID OIDC token exchange + JWKS — cluster-external HTTPS/443.
- ports:
- port: 443
protocol: TCP
# DNS egress to kube-dns.
- to:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: kube-system
podSelector:
matchLabels:
k8s-app: kube-dns
ports:
- port: 53
protocol: UDP
- port: 53
protocol: TCP