ns: ephI-core
(處理/儲存 ePHI)、ns: ai-infer
(模型推論)、ns: anon-analytics
(去識別化分析)。apiVersion: v1
kind: Namespace
metadata:
name: ephi-core
labels:
pod-security.kubernetes.io/enforce: "restricted"
pod-security.kubernetes.io/audit: "restricted"
pod-security.kubernetes.io/warn: "restricted"
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
namespace: ephi-core
spec:
podSelector: {}
policyTypes: ["Ingress", "Egress"]
範例:只允許 app=api
讀 app=db
的 5432 連線:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-api-to-db
namespace: ephi-core
spec:
podSelector:
matchLabels:
app: db
ingress:
- from:
- podSelector:
matchLabels:
app: api
ports:
- protocol: TCP
port: 5432
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: default
namespace: ephi-core
spec:
mtls:
mode: STRICT
需在控制面設定 kube‑apiserver
--encryption-provider-config
encryption-config.yaml
:
apiVersion: apiserver.config.k8s.io/v1
kind: EncryptionConfiguration
resources:
- resources: ["secrets"]
providers:
- aescbc:
keys:
- name: key1
secret: <base64-encoded-32-byte-key>
- identity: {}
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
name: ephi-secrets
namespace: ephi-core
spec:
provider: azure
parameters:
usePodIdentity: "true"
keyvaultName: "kv-prod"
objects: |
array:
- |
objectName: db-password
objectType: secret
tenantId: "<tenant-guid>"
Pod 掛載:
volumeMounts:
- name: secrets-store
mountPath: "/mnt/secrets"
volumes:
- name: secrets-store
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: ephi-secrets