Мне нужно отфильтровать и переслать события журнала аудита из kubernetes в webhook. Есть ли механизм, который я могу использовать для локальных кластеров, GKE, EKS и AKS?
Я могу настроить EKS для регистрации событий аудита в журналах Cloudwatch, Azure - для регистрации в журналах диагностики, журналы GCP - в стекдрайвере (Google, кажется, переформатирует их), но я бы предпочел единый механизм для всех,Я знаю, что kubernetes поддерживает запуск сервера api с некоторыми аргументами для определения мест назначения аудита, но я не имею никакого контроля над этим для управляемых облачных решений, таких как eks / aks / gke. Если бы я мог каким-то образом перехватить эти события из контейнера, это было бы здорово. Событие api (https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.10/#event-v1-core), однако, представляется другим классом событий, который не содержит информацию о пользователе, которая мне нужна
События, которые я ищу, - это события аудита, такие как:
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "Request",
"auditID": "b5944e24-548d-4b5e-a5c7-218316d20ff1",
"stage": "ResponseComplete",
"requestURI": "/apis/rbac.authorization.k8s.io/v1beta1/clusterrolebindings/system:persistent-volume-binding",
"verb": "get",
"user": {
"username": "aksService",
"groups": ["system:masters", "system:authenticated"]
},
"sourceIPs": ["172.31.20.52"],
"userAgent": "kubectl/v1.13.2 (linux/amd64) kubernetes/cff46ab",
"objectRef": {
"resource": "clusterrolebindings",
"name": "system:persistent-volume-binding",
"apiGroup": "rbac.authorization.k8s.io",
"apiVersion": "v1beta1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestReceivedTimestamp": "2019-10-24T17:38:56.846112Z",
"stageTimestamp": "2019-10-24T17:38:56.848507Z",
"annotations": {
"authorization.k8s.io/decision": "allow",
"authorization.k8s.io/reason": ""
}
}