kube-apiserver
似乎没有提供使用证书撤销列表 (CRL) 的选项。
如果客户端证书丢失或不再使用,有没有办法撤销它?
最佳答案
据我所知,没有办法通过 CRL 直接撤销证书。然而,什么有效,我们目前正在使用的是 ABAC policies 识别用户(通过证书的通用名称设置),以及他们是否有权访问 Kubernetes 上的给定资源。
例如,假设您有一个名为“random”的用户。您将从给定的证书颁发机构为他们生成一个客户端证书,通用名称为“随机”。
从那里,您可以拥有一个 ABAC 策略文件(一个 csv 文件,每一行都是一点 JSON),为用户“随机”设置权限,这将为他们提供对 Kubernetes API 的一定级别的访问权限。您可以让他们访问所有内容或某些命名空间或其他 API 参数。如果您需要撤销权限,只需从 ABAC 策略文件中删除该用户即可。我们对此进行了测试,效果很好。不幸的是,我要说的是你必须重新启动 Kubernetes API 服务以使这些更改生效,因此此更改可能需要几秒钟的停机时间。显然,在开发环境中这不是什么大问题,但在生产环境中,您可能需要为添加用户安排时间。
希望将来一个简单的“kube-apiserver 重新加载”将允许重新读取该 ABAC 策略文件。
最后要注意的一件事:当使用客户端证书进行 ABAC 身份验证时,您需要单独为用户设置权限。与使用 ABAC 的身份验证 token 不同,您不能在“组”中设置客户端证书用户。一些让我们头疼的东西,所以认为它值得传递。 :)
希望这可以帮助!
关于certificate - 如何撤销 Kubernetes 集群中的签名证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36919323/