71 lines
3.8 KiB
YAML
71 lines
3.8 KiB
YAML
# Журнал аудита Vault: том /vault/audit, общий PID namespace и два sidecar'а.
|
||
# Чарт vault-contour 0.2.3: auditStorage → volumeClaimTemplates "audit" + mount в контейнер vault;
|
||
# extraContainers/volumes/shareProcessNamespace — values (toYaml, без tpl).
|
||
#
|
||
# Vault — fail-closed: включённый audit device, который не может записать событие, останавливает обслуживание
|
||
# запросов. Поэтому сеть в пути записи нет (файл + sidecar), а объём на диске ограничен ротацией и очередью.
|
||
- op: add
|
||
path: /spec/values/server/auditStorage
|
||
value:
|
||
enabled: true
|
||
size: 5Gi # TODO(verify): по замеру объёма журнала (KEEP × MAX_BYTES + очередь + запас)
|
||
storageClass: local-path
|
||
accessMode: ReadWriteOnce
|
||
mountPath: /vault/audit
|
||
# Нужен audit-rotate для SIGHUP процессу vault. Побочный эффект: sidecar'ы с UID vault видят его процесс
|
||
# (/proc/<pid>/environ; память — при разрешающем kernel.yama.ptrace_scope). См. README, «Решения с последствиями».
|
||
- op: add
|
||
path: /spec/values/server/shareProcessNamespace
|
||
value: true
|
||
- op: add
|
||
path: /spec/values/server/volumes
|
||
value:
|
||
- name: audit-shipper-config
|
||
configMap: {name: audit-shipper-config}
|
||
- name: audit-rotate-script
|
||
configMap: {name: audit-rotate-script}
|
||
- op: add
|
||
path: /spec/values/server/extraContainers
|
||
value:
|
||
# filelog → OTLP в access-collector. Чекпоинты и очередь отправки — на том же PVC.
|
||
# Кредов Kafka здесь нет: Vault Agent в поде Vault невозможен (Vault стартует запечатанным).
|
||
- name: audit-shipper
|
||
image: cr.yandex/crp3ccidau046kdj8g9q/opentelemetry-collector/opentelemetry-collector-contrib:0.121.0-amd64
|
||
args: ["--config=/conf/config.yaml"]
|
||
env:
|
||
- {name: CONTOUR, value: uralkal}
|
||
- name: MY_POD_IP
|
||
valueFrom: {fieldRef: {fieldPath: status.podIP}}
|
||
- {name: GOMEMLIMIT, value: 200MiB}
|
||
securityContext: &audit-sidecar-security
|
||
# UID/GID процесса vault (podSecurityContext чарта: 100/1000): файл журнала 0600, владелец — vault.
|
||
runAsUser: 100
|
||
runAsGroup: 1000
|
||
runAsNonRoot: true
|
||
readOnlyRootFilesystem: true
|
||
allowPrivilegeEscalation: false
|
||
capabilities: {drop: [ALL]}
|
||
seccompProfile: {type: RuntimeDefault}
|
||
resources:
|
||
requests: {cpu: 25m, memory: 64Mi}
|
||
limits: {cpu: 200m, memory: 256Mi}
|
||
volumeMounts:
|
||
- {name: audit, mountPath: /vault/audit}
|
||
- {name: audit-shipper-config, mountPath: /conf, readOnly: true}
|
||
# Ротация по размеру + SIGHUP vault (file device по SIGHUP переоткрывает файл).
|
||
- name: audit-rotate
|
||
# busybox 1.37.0 из registry контура (helperImage local-path-provisioner); тег latest закреплён digest'ом.
|
||
image: cr.yandex/crp3ccidau046kdj8g9q/contour/local-path-provisioner-nn/busybox@sha256:11f85134f388cff5f4c66f9bb4c5942249c1f6f7eb8b3889948d953487b5f7a8
|
||
command: ["/bin/sh", "/scripts/rotate.sh"]
|
||
env:
|
||
- {name: MAX_BYTES, value: "104857600"}
|
||
- {name: KEEP, value: "5"}
|
||
- {name: INTERVAL, value: "30"}
|
||
securityContext: *audit-sidecar-security # тот же UID: иначе нельзя отправить сигнал vault
|
||
resources:
|
||
requests: {cpu: 5m, memory: 16Mi}
|
||
limits: {cpu: 50m, memory: 32Mi}
|
||
volumeMounts:
|
||
- {name: audit, mountPath: /vault/audit}
|
||
- {name: audit-rotate-script, mountPath: /scripts, readOnly: true}
|