Security 使用Secret Manager的附加值

Security 使用Secret Manager的附加值,security,google-cloud-platform,passwords,Security,Google Cloud Platform,Passwords,我有一个用Java编写的非常标准的应用程序,它还可以对DB运行查询。应用程序驻留在GCP上,数据库驻留在Atlas上 出于可以理解的原因,我不想在代码中保留DB的用户名和密码 所以我想到的选项1是将用户名和密码作为环境变量传递给GCP中的应用程序容器 选项2在GCP中使用Secret Manager并将我的用户名和密码存储在那里,然后将GCP凭据作为环境变量传递给GCP中的应用程序容器 我的问题是,如果第2个选项有附加值,它的附加值是多少?从安全的角度来看,选项2似乎更糟糕,因为如果某个黑客获得

我有一个用Java编写的非常标准的应用程序,它还可以对DB运行查询。应用程序驻留在GCP上,数据库驻留在Atlas上

出于可以理解的原因,我不想在代码中保留DB的用户名和密码

所以我想到的选项1是将用户名和密码作为环境变量传递给GCP中的应用程序容器

选项2在GCP中使用Secret Manager并将我的用户名和密码存储在那里,然后将GCP凭据作为环境变量传递给GCP中的应用程序容器

我的问题是,如果第2个选项有附加值,它的附加值是多少?从安全的角度来看,选项2似乎更糟糕,因为如果某个黑客获得了google凭据,它就可以访问存储在Secret Manager中的所有机密


我不知道什么是最佳实践,在这种情况下建议做什么。感谢您的帮助。

在GCP secret manager中拥有凭据将有助于您在集中位置跟踪所有机密和更改,并从您的任何应用程序进行全局访问

对于一个标准应用程序,其中一个JAVA连接到一个DB,可能不会增加太多值


因此,您可以查看kubernetes secret。

如果您的应用程序驻留在GCP中,则不需要服务帐户密钥文件(这是您的安全问题,您是对的。I)

TL;DR用于自动获取Google云组件上自动提供的服务帐户凭据(请参阅)

然后授予此组件标识(默认或用户定义,如果支持),即服务帐户电子邮件,以访问您的机密

就这些!您的代码和环境变量中没有秘密,登录名/密码和服务帐户密钥文件都没有


如果您在Java中使用ADC有困难,请毫不犹豫地分享您的代码。我将能够帮助您实现这一点。

要在谷歌云上使用Secret Manager,您需要安装Secret Manager Java SDK库。这展示了如何开始使用Secret Manager API的云客户端库,您只需要转到Java部分。 此库可帮助您访问密钥,以便应用程序使用

下面显示了如何通过查看机密的元数据来获取有关机密的详细信息。请记住,查看机密的元数据需要机密、项目、文件夹或组织上的机密查看器角色(
角色/secretmanager.Viewer

我建议您创建一个特殊的服务帐户来处理您的应用程序的适当权限,因为如果您没有定义SA,则默认SA将生成请求,并且不安全。您可以在此中了解有关如何创建服务帐户的更多信息

另一方面,您可以找到如何使用下面的示例,其中包含一个自动查找凭据的好示例,它比手动传递凭据更方便、更安全