我正在编写一个基于 spring boot 的微服务,它将部署在 GKE 上。要配置服务帐户凭据,我确实看到有多个选项可用。什么是最优选且可能更安全的可用选项。我尝试了以下方法,请建议其他方法
- CredentialsProvider 与 spring.cloud.gcp.credentials.location 接口(interface)
- spring.cloud.gcp.credentials.encoded-key
- 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/