Kubernetes:当 Secrets 被删除时如何/在哪里记录?

Kubernetes:当 Secrets 被删除时如何/在哪里记录?

当 Secrets 被删除时,kubernetes 会捕获这些信息吗?在事件日志或其他地方?我没有在事件日志中看到这些信息: kubectl get events --field-selector involvedObject.kind=Secret --watch 而且我在两个日志中都找不到这些信息/var/log/pods/kube_system-kube-apiserver/

我们正在使用一种称为 external-secrets-operator 的东西来管理秘密,并且我们希望在秘密被删除时得到通知,因为这不应该发生在 ESO 中,所以这是我们想要监控的边缘情况。

答案1

使用事件日志,kubectl get events --field-selector involvedObject.kind=Secret --watch您将获得现有的机密,而不是已删除的资源,对于已删除的资源,您需要使用审计日志,某些托管 Kubernetes(如 GKE 和 AWS)会自动启用审计日志。托管 Kubernetes 服务(如 EKS、AKS 或 GCP)通过轻松将集群审计日志路由到集中式日志记录服务(如 AWS CloudWatch、GCP 日志资源管理器)来提供支持。

要找出谁在什么时候删除了命名空间,它只提供 IAM 用户,下面的查询用于获取何时以及谁删除了机密。

logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.methodName:"io.k8s.core.v1.secrets"
NOT protoPayload.methodName:"get"
NOT protoPayload.methodName:"list"
NOT protoPayload.methodName:"watch"

如果你没有使用任何托管的 kubernetes,请按照以下操作博客由 Daniel Olaogun 撰写,详细说明了如何使用审计日志。

相关内容