摘要:kubernetes secret对象类型用来保存敏感数据,例如密码、Oauth令牌和ssh密钥。把这些信息放入到secret中比放在pod的定义或者容器镜像中来说更加安全和灵活。
kubernetes secret对象类型用来保存敏感数据,例如密码、Oauth令牌和ssh密钥。把这些信息放入到secret中比放在pod的定义或者容器镜像中来说更加安全和灵活。
灵活:secret可以做到热更新。
安全:因为secret是非明文的,我们在调用的时候是看不到数据本身的。为了安全,不仅做了编码,还做了一系列后续的动作配合,来保证secret的安全性。
kubernetes通过仅仅将secret分发到需要访问secret的pod所在的机器节点来保障其安全性。并不是所有的机器节点都可以去存储当前的secret数据。只有pod要调用secret,当前的节点才会被分发。
secret只会存储在节点的内存中,永远不写入物理存储,这样就可以保证在节点删除secret的时候,不需要擦写磁盘数据。磁盘本身叫非易失性存储器,内存叫易失性存储器。我们只需要取消这一个内存点的占用或者标记,它就很快会把数据清理好。相对于放入硬盘中来说,会更加安全一些。
从kubernetes 1.7版本开始,etcd会针对secret进行加密保存,在一定程度上保证了secret的安全性。也就是我们直接连接etcd,读取secret对象的信息,它也不是一个明文的展示。当然,这也可以通过一定的手段把密文解密回来。
可以通过echo -n "密文" | base64 -d
逆向解密出来secret的密文。
secret的安全性尽可能地在提高,但是完全不能把它当做唯一的手段去用。
如果非常重要数据的危害性很大,比如拿到数据后就可以把整个集群的所有服务、所有数据获取到,那么这种情况下只靠secret去做保护,这种行为还是非常危险的。有时候可以借助一些第三方的开源工具,去做加密数据和解密数据用。secret只是编码和解码,并不是真正的非常安全的非对称加密。
service的分类,包括:
①:clusterIP
②:NodePort
③:LoadBalancer类型
④:externalName类型
secret有很多分类,包括:
①:Opaque非透明类型,也是用户自定义的任何数据类型,用来专门存储一些敏感数据的类型。它也是secret的默认类型。我们需要存储的数据需要编码以后放进去,看起来并不能直接看到原数据,所以叫做非透明。
②:kubernetes.io/service-account-token 服务账号令牌,简称SA。
③:kubernetes.io/dockercfg 这是比较老的docker版本,它可能通过在自己的家目录下~/.dockercfg 文件中去保存相关的仓库信息、认证数据。在新版的docker中,这个文件已经被废弃了,是dockercfg 文件的序列化形式。
④:kubernetes.io/dockerconfigjson 在docker的家目录下,~/.docker/config.json 这个目录中的config配置文件,会保存当前我们用户认证的凭据。
⑤:kubernetes.io/basic-auth 这是基于用户身份认证的信息凭证。在七层负载均衡调度ingress中,可以做一个基于用户的ACL。也就是用户在访问网站接口的时候,需要先填写用户名和密码进行认证。认证通过以后,才能允许访问。网站的登录认证,会有一个认证文件,叫basic-auth。
⑥:kubernetes.io/ssh-auth ssh身份认证的凭据,一般叫密钥。
⑦:kubernetes.io/TLS tls是https证书的保存格式,用来TLS客户端或者服务端的数据认证。
⑧:bootstrap.kubernetes.io/token 启动引导令牌数据,对应的引导令牌的token。
以上这些都是secret的子类。用到的话,都可以使用。
当secret配置文件中未作显示设定时,默认的secret类型就是Opaque。当使用kubectl创建一个secret时,会使用generic子命令来标明要创建的是一个Opaque类型的secret。不指定secret的类型,默认就是Opaque类型。
创建service时,如果不指定类型,默认就是clusterip类型。
创建secret:
echo -n "admin" | base64
创建secret的密文:
secret的yaml资源清单文件:
secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
password: xxx(密文)
username: XXX (密文)
郁金香
鼓励的话语:只要你肯努力,总有翻身的一天!
来源:明辉教育