加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

如何保障Kubernetes的机密信息

发布时间:2022-05-27 09:55:45 所属栏目:安全 来源:互联网
导读:现如今开发的大多数应用程序,或多或少都会用到一些敏感信息,用于执行某些业务逻辑。比如使用用户名密码去连接数据库,或者使用秘钥连接第三方服务。 在代码中直接使用这些密码或者秘钥是最直接的方式,但同时也带来了很大的安全问题,如何保证密码、秘钥不
  现如今开发的大多数应用程序,或多或少都会用到一些敏感信息,用于执行某些业务逻辑。比如使用用户名密码去连接数据库,或者使用秘钥连接第三方服务。

       在代码中直接使用这些密码或者秘钥是最直接的方式,但同时也带来了很大的安全问题,如何保证密码、秘钥不被泄露。如果你的应用程序已经被容器化,且使用Kubernetes(k8s),那情况会好很多。Kubernetes提供了一个原生资源,称为“Secret”,可用于管理和存储敏感信息。敏感信息被编码为未加密的Base64格式,并被存储在Secret对象中。Secret可以作为环境变量被注入到Pod内部的容器中,也可以作为数据卷挂载到容器内部。
 
  为了保证敏感信息的安全性,Secret对象应该被加密,并且应该使用Kubernetes RBAC机制对访问进行控制。如果你正在使用AWS公有云来托管Kubernetes集群,则可以利用AWS密钥管理服务(KMS)对静态数据进行加密。Kubernetes的清单文件通常被提交到代码仓库中以进行版本控制。但是你可能不希望将敏感信息以纯文本或Base64编码字符串的形式提交到Git代码仓库中。我们都应该知道为什么,这不安全!但是,你在Kubernetes集群之外将敏感数据保存在何处,以确保它们是安全的?
 
  有很多方法可以解决这个问题。下面列出了其中几个:
 
  选择1:使用第三方服务来存储敏感数据
  你可以将敏感数据存储到第三方服务中,如AWS Secrets Manager或HashiCorp Vault。
  创建自定义Kubernetes控制器,基于配置从这些服务中获取机密信息,并在运行时创建Kubernetes Secret对象。
  External Secrets项目可以帮助你实现选项2。

  选项2:加密纯文本敏感数据,然后再提交到Git代码仓库中
  使用对称或非对称算法加密纯文本敏感数据。
  使用Kubernetes Custom Resource Definition(CRD)创建自定义的Secret对象,以使用加密的文本数据。
  创建一个自定义Kubernetes控制器,该控制器读取自定义Secret对象中的加密信息,并在运行时解密,并创建一个原生的Secret对象。
  使用这种方法,你可以将加密的数据提交到Git代码仓库中。而且它没有风险,因为数据是加密的,只能用你的私钥解密。但是你把私钥放在哪里?

  你还可以增强应用程序逻辑,以便在应用程序启动时从第三方服务读取机密信息,但这里的整体思想是将机密信息管理与应用程序业务逻辑分离开来,并利用Kubernetes的功能来进行相同的管理。

  快速概览Sealed Secrets
  在Sealed Secret开源项目中,你可以将你的Secret加密为一个SealedSecret,这样就可以安全地存储,甚至可以存储到公共存储库中。SealedSecret只能由运行在目标集群中的控制器解密,其他人,甚至包括原始作者,都无法从SealedSecret获得原始的Secret。

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读