Kubernetes---安全 认证
⒈机制说明
⒉Authentication
1.分类
1.HTTP Token认证:通过一个Token(字符串) 来识别合法用户
HTTP Token 的认证是用一个很长的特殊编码方式的并且难以被模仿的字符串-Token 来表达客户的一种方式。Token 是一个很长的很复杂的宇符串,每个Token 对应一个用户名存储在 AP| Server能访问的文件中。当客户端发起API调用请求时,需要在 HTTP Header里放入 Token。
2.HTTP Base认证:通过用户名+密码的方式认证
用户名+:+密码 用 BASE64 算法进行编码后的宇符串放在 HTTP Request 中的 HeatherAuthorization域里发送给服务端,服务端收到后进行编码,获取用户名及密码
3.最严格的 HTTPS 证书认证:基于CA根证书签名的客户端身份认证方式
首先签署一个CA根证书,所有节点的证书都是以这个根证书所签发出来的子证书,并且是HTTPS的双向认证。
2.K8S中需要认证的节点
两种类型:
1.Kubenetes 组件对API Server的访问: kubectl、 Controller Manager、Scheduler、 kubelet、kube-proxy
2.Kubernetes 管理的Pod对容器的访问:Pod (dashborad 也是以Pod 形式运行)
安全性说明:
1.Controller Manager、 Scheduler 与 API Server 在同一台机器,所以直接使用API Server 的非安全端口访问,--insecure-bind-address=127.0.0.1,防止不必要的性能消耗
2.kubectl、 kubelet、 kube-proxy访问API Server 就都需要证书进行HTTPS 双向认证
证书颁发:
1.手动签发:通过k8s 集群的跟ca 进行签发HTTPS 证书
2.自动签发:kubelet 首次访问API Server时,使用token 做认证,通过后,Contrller Manager 会为kubelet 生成一个证书,以后的访问都是用证书做认证了
3.kubeconfig
kubeconfig文件包含集群参数 (CA证书、API Server地),客户端参数(上面生成的证书和私钥),集群context信息(集群名称、用户名) Kubenetes 组件通过启动时指定不同的kubeconfig 文件可以切换到不同的集群
4.ServiceAccount
Pod中的容器访问APServer。因为Pod的创建、销毁是动态的,所以要为它手动生成证书就不可行了。
Kubenetes使用了Service Account解决Pod访问API Server的认证问题
5.Secret 与SA的关系
Kubernetes 设计了一种资源对象叫做 Secret,分为两类,一种是用于 ServiceAccount 的service-account token,另一种是用于保存用户自定义保密信息的Opaque.ServiceAccount 中用到包含三个部分: Token、 ca.crt, namespace
token是使用API Server私钥签名的 JWT。用于访问API Server时,Server端认证
ca.crt,根证书。用于Client端验证API Server发送的证书
namespace,标识这个service-account-token的作用域名空间
kubectl get secret --all-namespaces kubectl describe secret default-token-5gm9r --namespace=kube-system
默认情况下,每个namespace都会有一个ServiceAccount,如果 Pod 在创建时没有指定ServiceAccount, 就会使用Pod 所属的namespace 的 ServiceAccount
6.总结
相关推荐
朱培知浅ZLH 2020-11-16
cdbdqn00 2020-11-12
达观数据 2020-11-11
JustinChia 2020-11-11
远远的山 2020-11-09
jingtao 2020-11-08
大叔比较胖 2020-10-30
gracecxj 2020-10-30
onepiecedn 2020-10-29
kunyus 2020-10-28
JustHaveTry 2020-10-27
锋锋 2020-10-26
hubanbei00的家园 2020-10-25
谢恩铭 2020-10-23
btqszl 2020-10-21
kaidiphp 2020-10-13
guchengxinfen 2020-10-12
liverlife 2020-10-10
BigDataMining 2020-10-08