K8S 安全

容器安全

  • 容器和宿主机有明确的隔离,限制容器对其他容器的不良影响
  • 最小化权限原则,限定每隔组件只拥有执行操作的最小化权限
  • 限制容器资源,限制一个或这一组容器容器上限,避免对其他容器的不良影响

Kubernetes API 安全访问

Kubernetes API Server是Kubernetes系统的入口,以REST API接口方式提供给外部客户和内部组件调用,对于Kubernetes API的访问调用需要进行严格管控,保证系统的安全。

  • 所有请求都HTTPS发送,确保请求响应数据都是通过SSL加密传输

认证

认证方式有哪些?

  1. Basic Authentication: 浏览器会弹出一个窗口,让你输入用户名和密码,如果所输入的用户名在资源使用者的验证列表中,并且密码完全正确,此时,用户才可以访问受限的资源。但是这种方式安全性较低,就是简单地将用户名和密码进行Base64编码放到头域中。

  2. Token Authentication: Token是一个用户自定义的任意字符串,具有随机性、不可预测性,相比于密码更加安全,一般黑客或软件无法猜测出来。Token Authentication实际上同Basic Authentication类似,使用Token替换账号密码,可在一定程度上提高安全性。通常客户端通过服务端认证校验后,服务端会返回Token,客户端后续所有请求都需要带上这个Token,用以标识用户已经验证了身份,Token通常会有时效性,过期后通常需要重新验证获取。

  3. Client Certificate Authentication: Client Certificate是一种用于证明用户身份的客户端数字证书,如果服务端开启Client Certificate Authentication,客户端访问的时候就需要提供Client Certificate。这个原理其实可以参考笔记Nginx双向认证

  4. OpenID Authentication: OpenID是一套以用户为中心的分散式身份认证系统,用户只需注册获取OpenID之后,就可以凭借此OpenID账号在多个系统之间自由登录使用,而不需要在每一个系统中注册账号,实现用户认证。

  5. Keystone Authentication: Keystone是OpenStack框架中负责管理身份验证、服务规则和服务令牌功能的模块。用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都可以通过Keystone来处理。

我安装时使用的是kubeadm完成的快速安装,默认是开启了认证的,而安装时生成使用的这个文件$HOME/.kube/config,里面包含了证书和私钥信息,所以据推测Kubernetes 默认使用的认证方式应该是第三种客户端证书验证方式

results matching ""

    No results matching ""