防止用户在 kubernetes 上的受限命名空间中生成 pod



如何防止用户使用具有高权限但允许他们创建命名空间的服务帐户在命名空间中生成 pod?

例如,我在 velero 命名空间中有一个带有 velero 的集群。我想阻止用户使用 veleroe 服务帐户创建 pod,以防止用户创建特权帐户。但我希望用户可以创建命名空间并将服务帐户与重新设置的 PSP 一起使用。

在我看来,在 Kubernetes 中强制执行这一点的惯用方法是创建一个动态验证准入控制器

https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#validatingadmissionwebhook

我知道这听起来有点复杂,但相信我,这真的很简单。最终,准入控制只是一个 webhook 端点(一段代码(,它可以在创建的对象上更改和/或强制实施特定状态。

因此,在您的情况下:创建一个动态验证 webhook,并简单地禁止创建与您的限制不匹配的 pod,并带有相应的相关错误消息。

首先,Valero 使用的服务帐户位于 Valero 命名空间中。因此,如果用户没有 RBAC 在 Valero 命名空间中执行任何操作,它将无法使用 Valero 使用的服务帐户。应为用户定义 RBAC,以便他们只能对预期命名空间中的资源执行 CRUD,而不能对其他命名空间中的资源执行 CRUD。当我说资源时,它还包括服务帐户。

相关内容

最新更新