Permission Controler-通过Instance理解Kubernetes的Auth
这一系列文档都是关于Kubernetes集群内部pods等资源对外部请求的认证与授权的管以及如何使用roles和role binding控制Kubernetes内部资源的访问权限。
Kubernetes Permission Controler概览
Permission Controler-通过Instance理解Kubernetes的Auth
Permission Controler-通过Instance理解Kubernetes的授权
Permission Controler-探索Kubernetes的Service Accounts
在生产环境中,Kubernetes管理员使用namespaces隔离集群上的资源。Namespaces在权限控制上扮演着资源的逻辑分界线的角色。
设想下面的应用场景:
运维team中新加入一位同事名字叫Bob,他的主要工作是管理工程师组在Kubernetes上的部署工作。因此运维组的老大必须授权Bob操作engineering namesapces足够的权限。
下面的实验操作是发生在我的私人Kubernetes集群上,你可以使用具有Kubernetes集群最高权限的任何集群资源上完成下面的实验。
创建名为cred的文件夹,然后通过下面的命令为Bob生成私钥。
mkdir cred
cd cred
openssl genrsa -out bob.key 2048
使用私钥生成一个认证签名请求文件
openssl req -new -key bob.key -out bob.csr -subj "/CN=bob/O=eng"\n
查看认证签名文件
创建Kubernetes Certificate Signing Request的signing-request.yaml文件,然后将认证签名文件作base64编码后插入到yaml文件中,最后通过命令创建Certificate Signing Request资源。
验证 Certificate Signing Request (CSR) 资源是否生成

从上图可见csr资源对应的状态仍然是Pending,集群管理员使用approve命令使其变成active
将csr资源的状态变更为Active

从上图可见csr资源已经变成Approved,Issued状态
获取认证的签名信息
上面的bob.crt文件是用来对Bob进行认证和授权的文件。我们从Kubernetes中获得bob.key私钥文件和bob.crt认证文件后,我们就可以对bob账户做授权工作了。
将Bob添加为Kubernetes集群用户

通过上面命令可见bob用户已经添加到Kubernetes集群中
创建engineering namesapce
验证
验证kubernets admin管理员是否有操作engineering namespace的资源
验证bob管理员是否有操作engineering namespace的资源
明显可见Bob还不能操作enginering namespace的资源。这是为什么?
即便我们对Bob做关于Kubernetes集群访问的认证,但是我们并没有对Bob授权操作Kubernets资源的行为。
在这一系列文章的下一章节中,我将带你对bob用户授权操作Kubernetes资源的行为。这主要是关于 role和role binding的知识,继续加油哦!
文章翻译自A Practical Approach to Understanding Kubernetes Authentication ,行文略有删减。
Last updated
Was this helpful?