我想在我的 kubernetes 环境中拥有每个客户端的命名空间和存储,其中每个客户端运行一个专用的应用程序实例,并且只有客户端应该能够加密/解密该特定客户端的应用程序正在使用的存储。我已经看到了数百个关于 Kubernetes 环境中秘密加密的示例,但很难实现由客户端控制的实际存储加密。是否可以在只有客户端知道加密密钥(而不是 k8s 管理员)的 K8s 环境中进行存储加密?
问问题
83 次
1 回答
1
正如评论中已经建议的那样,我唯一想到的是hashcorp vault。
Vault 是一种用于安全访问机密的工具。机密是您想要严格控制访问的任何内容,例如 API 密钥、密码或证书。Vault 为任何机密提供统一的接口,同时提供严格的访问控制并记录详细的审计日志。
您可能要检查的一些功能:
- API 驱动的接口
由于 HTTP API,您可以通过编程方式访问其所有功能。此外,还有几个官方支持的编程语言库(Go 和 Ruby)。这些库使与 Vault API 的交互更加方便。还有一个命令行界面可用。 - Data Encryption
Vault 能够在不存储数据的情况下加密/解密数据。这样做的主要含义是,如果发生入侵,即使攻击成功,黑客也无法获得真正的秘密。 - Dynamic Secrets
Vault 可以为某些系统(例如 AWS 或 SQL 数据库)按需生成密钥。例如,当应用程序需要访问 S3 存储桶时,它会向 Vault 索取凭证,而 Vault 将根据需要生成具有有效权限的 AWS 密钥对。创建这些动态机密后,Vault 也会在租约到期后自动撤销它们。这意味着秘密在被读取之前不存在。 - 租赁和续订:保险柜中的所有秘密都有与之关联的租赁。在租约结束时,Vault 将自动撤销该机密。客户可以通过内置的更新 API 更新租约。
- 便捷的Authentication
Vault支持使用token进行认证,既方便又安全。
Vault 还可以自定义并连接到各种插件以扩展其功能。这一切都可以通过网络图形界面进行控制。
于 2020-08-10T09:43:19.680 回答