当前位置: 首页 > 知识库问答 >
问题:

是否可以将Spring Boot应用部署到应用引擎并连接到数据库?

邰昀
2023-03-14

我觉得我在这里兜圈子,所以,请,忍忍。我想将我的Spring Boot应用程序部署到App Engine,但与Google提供的简单示例不同,我的应用程序需要数据库,这意味着凭据。我正在谷歌应用引擎上运行标准的Java11。

通过在application.properties中包含以下内容,我成功地连接了应用程序:

spring.datasource.url=jdbc:postgresql://google/recruiters_wtf?cloudSqlInstance=recruiters-wtf:europe-west2:recruiters-wtf&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=the_user&password=monkey123

问题是我不想向存储库提交任何凭据,因此,这是不可接受的。我可以使用一个环境变量,但是我必须在app.yaml文件中定义它们。我要么保留部署所需的未提交的app.yaml文件(这很麻烦),要么提交它,然后回到原点,将凭据提交到存储库。

由于Google App Engine显然不能以任何其他方式定义环境变量(不像Heroku),这是否意味着不可能将Spring Boot应用部署到App Engine并使其连接到数据库而不使用一些不安全/繁琐的做法?我觉得我错过了什么。

共有1个答案

程墨竹
2023-03-14

根据我对您所描述内容的理解,您希望将运行在Google App Engine上的Spring boot应用程序连接到数据库,而不暴露敏感信息。如果是这样的话,我就能够发现云KMS为用户提供了秘密管理的能力。具体地说,在构建或运行时需要小段敏感数据的应用程序被称为机密。这些秘密可以用对称密钥加密和解密。在您的情况下,可以将数据库凭据存储为机密。您可以在这里找到加密/解密秘密过程的更多细节。

它们是目前管理机密的三种方法:

  1. 将秘密存储在代码中,使用Cloud KMS中的密钥加密。此解决方案在应用程序层实现机密。
  2. 在云存储的存储桶中存储秘密,在静止状态下加密。您可以使用Cloud Storage:Bucket来存储您的数据库凭据,还可以授予该Bucket一个特定的服务帐户。这种解决方案允许系统分离。在代码存储库被破坏的情况下,您的秘密本身仍可能受到保护。
  3. 使用第三方机密管理系统。

希望这有帮助!

 类似资料:
  • 我一直在使用带有gcloud的Laravel来创建网站(App Engine)和数据库(SQL),但由于某种原因,我无法让App Engine连接到数据库。 我收到的错误是,laravel自己调试的“SQLSTATE[HY000][2002]没有这样的文件或目录(SQL:从用户中选择*)”,“加载资源失败:服务器在浏览器检查窗口中以500()的状态响应。”。 如果我运行本地实例,它可以正常工作,因

  • 有了Tomcat7,我可以部署几个应用程序,误用MyFaces 1. x/2. x在TomEE中,如果我用MyFaces 1. x部署应用程序,我会运行到许多异常,因为tomee有内置的myfaces2支持...有什么想法吗,有可能像jboss那样切换模块吗?

  • 我正在appengine虚拟机上开发一个Flask应用程序。我想上传文件到谷歌云存储,所以我使用连接到云存储。仅在VM中测试时,我的应用程序运行正常,没有错误。但是,在我使用部署并在部署的应用程序上测试上载功能后,它失败并返回错误。日志显示了回溯,这是由于连接到云存储的代码行: 具体错误是

  • 因此,我正在尝试将一个简单的meteor应用程序部署到谷歌应用程序引擎。我已经试着遵循这个教程https://cloud.google.com/community/tutorials/run-meteor-on-google-app-engine但它导致了

  • 是否可以在 VNet 中部署 Azure 函数? 如果我在 VNet 中创建了应用服务环境,然后在创建函数时选取了该应用服务计划,这是否意味着 Azure 函数部署在 VNet 内部,并具有与 VNet 定义的相同限制等?

  • 我是谷歌应用引擎服务的新手。我有一个JavaMaven项目,其中一个模块运行在应用引擎flex上,另一个模块运行在应用引擎标准上。我正在为应用引擎Flex API使用JWT身份验证。我想从应用引擎标准向应用引擎Flex发出发布请求。验证服务的最佳方式应该是什么? 此外,我还有一个cron服务,它可以访问我用于某些后端内容的特定URL。如何验证请求是否仅来自Cron服务?