java - 在 Spring Boot 应用程序中配置 GCP 凭据的首选方法是什么

标签 java spring-boot google-cloud-platform microservices google-kubernetes-engine

我正在编写一个基于 spring boot 的微服务,它将部署在 GKE 上。要配置服务帐户凭据,我确实看到有多个选项可用。什么是最优选且可能更安全的可用选项。我尝试了以下方法,请建议其他方法

  1. CredentialsProvider 与 spring.cloud.gcp.credentials.location 接口(interface)
  2. spring.cloud.gcp.credentials.encoded-key
  3. GCP secret 管理器

最佳答案

在云环境中,通常最安全、管理开销最少的最佳选择是使用来自云提供商的相应服务——在您的情况下,它将是 Secret Manager .当然,如果您打算不将您的应用程序与特定的云提供商绑定(bind)或迎合本地环境,那么您可以使用第三方 secret 管理提供商,如 HashiCorp Vault .

然而,即使使用 Secret Manager,如果您直接与 API 交互,您也必须提供 key 才能在某处调用 API,这会产生另一个问题。一般推荐的解决方案是使用应用程序身份验证作为服务帐户并直接与 Secret Manager 交互,如概述 here .或者有其他方法可以使用 CSI 驱动程序将 Secret Manager 中的 Secret 安装到 GKE Volume 上,如所述 here .

运行安全的集群和容器应用程序是一项关键要求,并且 here是关于 GKE 安全强化的进一步建议,其中也涵盖了 Secret 管理。更具体地说,您可以查看“CIS GKE 基准测试建议:6.3.1”部分中的建议

关于java - 在 Spring Boot 应用程序中配置 GCP 凭据的首选方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68816320/

相关文章:

java - 检查 x 是否是 n 的倍数的有效方法是什么?

java - 我应该担心使用 AWTUtilities.setWindowShape() 吗?

spring - MockBean stub 无效

java - 从 Spring Boot 资源执行和处理 Void @Async 操作

java - 为每个单元测试重置单例 - Java

java - 在java中创建无限数组

java - 从 Spring Boot 中的属性注入(inject)值

python - 来自 google-cloud-sdk 的 Pylance 问题

mysql - 使用Cron将数据从mysql数据库导出到CSV,然后将所有数据获取到bigquery表

python - 在 Google App Engine 中使用 ctypes 来使用二进制文件?