certificate - 如何撤销 Kubernetes 集群中的签名证书?

标签 certificate kubernetes ca

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/

相关文章:

c# - 如何比较证书指纹

security - SSL:如何保护证书免受中间人攻击?

windows - Kubectl - 密码提示不允许输入,就像立即按下 Enter 一样

cassandra - Kubernetes 中托管的 Cassandra 的本地持久卷

c# - 如何在 C# 中验证来自特定根 CA 的证书链

ssl - tomcat 7 ssl 配置 : can multiple certificates be created for an ip address?

docker - 使用 Kubernetes 的齐柏林飞艇。非本地模式的解释器设置中未指定 SPARK_HOME

hyperledger-fabric - 我们可以在 Hyperledger Fabric 中运行没有 tls 的 RAFT 排序节点吗?

ssl - 由多个 CA 签名的 x509(服务器)证书?

node.js - NodeJS 无法读取 ubuntu 中的默认 CA