创建客户端证书时如何指定用户及所在的用户组信息(CSR CN,O)
1、概述
在k8s中,当客户端需要通过证书来与api server进行通讯的时候,就需要通过客户端证书的某些字段来表明这个证书所代表的用户、用户组什么,这样当api server收到来自这个证书的请求之后,就可以对这个用户的身份进行认证,进而进行鉴权,然后决定该用户可以做什么。
本文档就介绍下,如何在客户端的证书申请的CSR中指定所在的用户和用户组。
注意:客户端证书中,不需要指定hosts定义。
2、实现方法
2.1、openssl命令
如果使用openssl命令,使用类似如下的命令
openssl req -new -key jbeda.pem -out jbeda-csr.pem -subj "/CN=jbeda/O=app1/O=app2"
即CN(Common Name)表示用户,O表示用户组,如果是多个用户组,那么就用多个O来指定。O代表Oraganization
2.2、cfssl命令
cfssl命令来创建证书的时候,就是要在csr-json文件中指定
{
"CN": "kubernetes-admin",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"O": "system:masters"
}
]
}
这样通过这个CSR生成的证书就表示用户kubernetes-admin,所在的用户组system:masters