摘要:secret对象类型用来保存敏感数据,比如:密码、OAuth令牌和ssh密钥。将这些信息放在secret中比放在pod的定义或者容器镜像中来说更加安全和灵活。
secret的安全机制基于编码实现的,而不是加密,编码是可逆的。
加密不是可逆的,一般非对称加密的加密密钥和解密密钥是完全不同的。
secret对象类型用来保存敏感数据,比如:密码、OAuth令牌和ssh密钥。将这些信息放在secret中比放在pod的定义或者容器镜像中来说更加安全和灵活。
安全是因为secret是密文的,调用的时候是看不到数据本身的;灵活是secret依然可以做到热更新。为了安全,不只是做了数据的编码,还有一部分后续的动作和操作来保证数据的安全性。
Secret的特性:
1.kubernetes通过仅仅将secret分发到需要访问的pod所在的机器节点来保障其安全性。
2.secret只会存储在节点的内存中,永不写入物理存储,这样从节点删除secret时就不需要擦除磁盘数据。磁盘是非易失性存储器,内存是易失性存储器。
3.从kubernetes v1.7版本开始,etcd就会以加密方式存储secret,一定程度地保证了secret的安全性。直接连接etcd,去读取secret对象信息的话,它也不是明文展示的。可以通过一定的方式解密回来。
使用echo -n "密文" | base64 --decode
secret的安全性尽可能地在提升,但是不能完全把secret当成唯一的安全手段去使用。
重要的数据只靠secret数据去保护的话,会非常危险。第三方的开源工具一些可以帮助我们去加密数据和解密数据使用。
Secret创建的时候,可以显示出来:它只是进行编码和解码,并不是真正非常安全的非对称加密。
Service有很多类型:
①:clusterIP类型
②:nodeport类型
③:loadbalancer类型
④:externalname类型
secret的类型:
①:Opaque 非透明的方式,它是默认的secret类型,它是用户定义的任意数据类型。用来存储密码、密钥、信息、证书等,类型标识符为generic。存储的数据需要编码以后放进去,所以看起来并不能直接看到原数据,所以是非透明的方式。
②:kubernetes.io/service-account-token 服务账号sa。用来访问kubernetes API,由kubernetes自动创建,并且会自动挂载到pod的/var/run/secrets/kubernetes.io/serviceaccount目录中。
③:kubernetes.io/dockercfg dockercfg文件的序列化形式。
④:kubernetes.io/dockerconfigjson docker的config.json文件的序列化形式,用来存储私有docker registry 的认证信息。
⑤:kubernetes.io/basic-auth 用于基本身份认证的凭据。
⑥:kubernetes.io/ssh-auth 用于ssh身份认证的凭据。
⑦:kubernetes.io/tls 用于TLS环境,保存crt证书和key证书。用于为ssl通信模式存储证书和私钥文件。
⑧:bootstrap.kubernetes.io/token 启动引导令牌数据。
金鱼图
鼓励的话语:谁也有下雨未带伞的时候,你今天搭的桥就是未来所走的路。本欲渡众人,反被众生渡!
来源:没谱的高中历史老师