Audit Policy
На этой странице
Политика аудита
Audit Policy - политика аудита событий в кластере Kubernetes, позволяющая гибко настроить, какие события необходимо отслеживать и на каком уровне. Audit Policy является ресурсом модуля аудита KubeAPI сервера.
Рекомендуемая политика автоматически монтируется при развертывании кластера с расширенными настройками безопасности. Для создания или изменения ранее созданной политики аудита (Audit Policy) в клиентском кластере или кластере управления из интерфейса платформы “Штурвал” необходимо перейти в раздел Администрирование/Конфигурация узлов.
Если ранее вы создавали Audit Policy с помощью объекта конфигурации узлов (NCI), можно отредактировать существующий манифест политики или создать новый объект NCI.
Если Audit Policy не была установлена в кластер, необходимо создать новый объект конфигурации узлов. Обратите внимание, если ранее Audit Policy была размещена в конфигурации узлов, то новый объект конфигурации узлов (NCI) должен иметь приоритет выше ранее созданного.
В селекторе узлов из выпадающего списка выберите ключ лейбла node-role.kubernetes.io/control-plane
. Значение для лейбла не устанавливайте.
- В блоке Настраиваемые разделы выберите Файлы и директории, нажмите “Управлять”.
- В открывшемся окне нажмите +
- В типе файла/директории должно быть выбрано Файл. В поле Путь к файлу или директории пропишите
/etc/kubernetes/audit_policy.yaml
. - В поле Содержимое файла вставьте содержимое YAML-файла политики, нажмите “Добавить”. Затем нажмите “Завершить”.
Master-узлы будут последовательно перезапущены.
Настройка API-сервера
Перейдите в редактирование манифеста kube-apiserver: /etc/kubernetes/manifests/kube-apiserver.yaml
Внесите параметры в манифест согласно инструкции:
spec:
containers:
- command:
- --audit-policy-file=/etc/kubernetes/audit_policy.yaml
- --audit-log-path=/var/log/kube-api-audit/audit.log
- --audit-log-maxage=30
- --audit-log-maxbackup=10
- --audit-log-maxsize=100
- --audit-log-mode=batch
В блок volumeMounts необходимо смонтировать политику и логи
volumeMounts:
- mountPath: /etc/kubernetes/audit_policy.yaml
name: audit-policy
- mountPath: /var/log/kube-api-audit/
name: audit-log
readOnly: false
В блок volumes необходимо указать политику и логи
volumes:
- hostPath:
path: /etc/kubernetes/audit_policy.yaml
type: File
name: audit-policy
- hostPath:
path: /var/log/kube-api-audit/
type: DirectoryOrCreate
name: audit-log
Пример манифеста Audit Policy
apiVersion: audit.k8s.io/v1
kind: Policy
# Собирать события только когда система сформировала ответ
omitStages:
- "RequestReceived"
- "ResponseStarted"
rules:
- level: None
userGroups: ["system:authenticated"]
nonResourceURLs:
- "/api*"
- "/version"
# Регистрировать запросы к нагрузкам
- level: Metadata
verbs: ["delete"]
resources:
- group: ""
resources: ["deployments", "statefulsets", "daemonsets", "pods/log", "pods"]
- level: RequestResponse
verbs: ["create", "update", "patch"]
resources:
- group: ""
resources: ["deployments", "statefulsets", "pods"]
- level: Request
resources:
- group: ""
resources: ["pods/exec"]
# Записываем все изменения объектов с чувствительной информацией
- level: Metadata
verbs: ["create", "update", "delete", "get"]
resources:
- group: ""
resources: ["secrets", "configmaps", "serviceaccount"]
verbs: ["create", "delete", "update", "patch", "get"]
resources:
- group: "ops.shturval.tech"
resources: ["shturvalserviceconfigs"]
- group: "node.shturval.tech"
resources: ["nodeconfigitems", "nodeconfigs"]
# Записываем создание, изменение и удаление сведений на уровне запроса, связанные с ролевой моделью
- level: Request
verbs: ["create", "delete", "update", "patch"]
resources:
- group: "rbac.authorization.k8s.io"
resources: ["roles", "clusterroles"]
verbs: ["create", "delete"]
resources:
- group: "rbac.authorization.k8s.io"
resources: ["clusterrolebindings", "rolebindings"]
verbs: ["create", "delete", "update", "patch"]
resources:
- group: "permissions.shturval.tech"
resources: ["grouproles", "userroles"]
# Записываем действия, связанные с изменениями политик безопасности
- level: Metadata
verbs: ["delete"]
resources:
- group: "kyverno.io"
resources: ["clusterpolicies"]
- level: Request
verbs: ["create", "update", "patch"]
resources:
- group: "kyverno.io"
resources: ["clusterpolicies"]
# Записываем действия, связанные с изменениями сетевых политик
- level: Metadata
verbs: ["delete"]
resources:
- group: "cilium.io"
resources: ["ciliumnetworkpolicies"]
- level: Request
verbs: ["create", "update", "patch"]
resources:
- group: "cilium.io"
resources: ["ciliumnetworkpolicies"]
Аудит логи
Если кластер развернут с расширенными настройками ИБ и используются сервисы логирования Штурвала, в OpenSearch будет автоматически создан Kube-audit индекс для кластера, логи будут перенаправлены автоматически. На вкладке “События безопасности” дашборда кластера будут доступны аудит логи за последний час.
В платформе “Штурвал” по умолчанию используется log-backend, события аудита будут собраны с помощью Fluentbit и перенаправлены в OpenSearch. Политика ротации логов в OpenSearch устанавливается по умолчанию.
Подробнее об индексах и просмотре логов здесь.