Certificate 如何在Kubernetes集群中撤销签名证书?
Certificate 如何在Kubernetes集群中撤销签名证书?,certificate,kubernetes,ca,Certificate,Kubernetes,Ca,kube-apiserver似乎没有提供使用证书撤销列表(CRL)的选项 如果客户端证书丢失或不再使用,有没有办法撤销它?据我所知,没有办法通过CRL直接撤销证书。但是,我们目前使用的是识别用户(通过证书的通用名称设置),以及他们是否可以访问Kubernetes上的给定资源 例如,假设您有一个名为“random”的用户。您将从给定的证书颁发机构为它们生成一个客户端证书,其通用名称为“random” 从那里,您可以拥有一个ABAC策略文件(一个csv文件,每行都有一点JSON),并为用户“随机”设
kube-apiserver
似乎没有提供使用证书撤销列表(CRL)的选项
如果客户端证书丢失或不再使用,有没有办法撤销它?据我所知,没有办法通过CRL直接撤销证书。但是,我们目前使用的是识别用户(通过证书的通用名称设置),以及他们是否可以访问Kubernetes上的给定资源 例如,假设您有一个名为“random”的用户。您将从给定的证书颁发机构为它们生成一个客户端证书,其通用名称为“random” 从那里,您可以拥有一个ABAC策略文件(一个csv文件,每行都有一点JSON),并为用户“随机”设置权限,从而为用户提供对Kubernetes API的某种级别的访问。您可以让他们访问所有内容、某些名称空间或其他API参数。如果需要撤销权限,只需从ABAC策略文件中删除该用户。我们已经测试过了,效果很好。不幸的是,我要说的是,您必须重新启动Kubernetes API服务才能使这些更改生效,因此可能需要几秒钟的停机时间才能进行此更改。显然,在开发环境中,这不是什么大问题,但在生产环境中,您可能需要安排添加用户的时间 希望在将来,一个简单的“kube apiserver重载”将允许重新读取ABAC策略文件 最后要注意的一点是:当使用客户端证书进行ABAC身份验证时,需要分别为用户设置权限。与ABAC的身份验证令牌不同,您不能在“组”中设置客户端证书用户。这让我们很头疼,所以我认为它值得传递。:)
希望这有帮助 感谢您的解决方案、解释和建议。目前,我的k8s集群中有4套钥匙和CRT,分别用于
apiserver
,其他主组件
,仆从
,最后一套用于kubectl
。首先,我想知道一种方法来解决其中一个丢失的crt之类的问题。现在看来,ABAC政策是最好的选择。一个愚蠢的问题,哪种类型的烫发适合只能创建豆荚的kubectl?@Yang在这种情况下丢失证书无疑是不幸的,但不幸的是,我认为答案仍然是从ABAC中删除该用户,并创建一个新用户。例如,如果“random”丢失了他们的证书,您可能必须为该用户创建一个具有新证书的“random2”用户。我知道社区一直在讨论向Kubernetes的更高版本添加CRL支持,但目前不可能撤销证书。一个可能的解决办法是让HAProxy/NGINX在Kube API前面检查吊销的证书。感谢这么多详细的实现,我非常感谢,特别是HAProxy/NGINX的想法,它让我对XD感兴趣