Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Certificate 如何在Kubernetes集群中撤销签名证书?_Certificate_Kubernetes_Ca - Fatal编程技术网

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感兴趣