【发布时间】:2021-12-02 01:10:18
【问题描述】:
我有一个应用,用户需要在其中输入第三方服务的 API 密钥,
存储用户 API 密钥的最佳方式是什么?我知道我们可以使用私钥对其进行加密,但这会产生另一个问题,如何安全地存储加密密钥?我们不希望所有用户都拥有一个相同的加密密钥。
感谢您的帮助
【问题讨论】:
标签: laravel encryption design-patterns architecture password-encryption
我有一个应用,用户需要在其中输入第三方服务的 API 密钥,
存储用户 API 密钥的最佳方式是什么?我知道我们可以使用私钥对其进行加密,但这会产生另一个问题,如何安全地存储加密密钥?我们不希望所有用户都拥有一个相同的加密密钥。
感谢您的帮助
【问题讨论】:
标签: laravel encryption design-patterns architecture password-encryption
正确答案是专用秘密存储。如果您使用云部署,AWS Secrets Manager、GCP Secret Manager 或 Azure Key Vault 是三大云供应商提供的产品。
如果您在 kubernetes 集群上部署,您可以使用内置的secret storage。
或者在任何情况下您都可以使用专用的第三方秘密存储软件,例如Hashicorp Vault、akeyless 或其他。
如果您有非常贵重的钥匙,不应该公开(而且您有很多钱可以花),您应该查看hardware security modules,例如ulitmaco。这些可以提供密钥使用,而密钥永远不会离开受保护的设备。云供应商还使用 HSM 提供服务,例如 AWS CloudHSM、GCP Cloud HSM、Azure Dedicated HSM。
对于您在应用程序端需要的密钥:您不应该在部署期间将机密存储在代码存储库或磁盘上。一个好的做法是使用环境变量或启动后删除的临时文件(对于容器,您可以重新启动整个容器)。
【讨论】: