Cloud Run/Secret Manager 免费套餐

Cloud Run/Secret Manager 免费套餐

我正在使用 Cloud Run 作为我正在进行的项目的后端,部分原因是它的免费套餐很慷慨(每月 200 万个请求,免费)。但这些服务需要一些秘密值(数据库密码、Oauth 密钥等),因此我遵循 Google 的建议将这些值存储在 Google Secret Manager 中,并通过 Cloud Run 将它们加载为环境变量。

但是,Secret Manager 的免费套餐限制要严格得多,每月仅可免费访问 10,000 次。如果 Cloud Run 几乎为每个请求都启动一个容器,那么它似乎也必须以大约这个速率访问机密,从而大大减少了免费套餐配额。

我的问题是,我应该如何为我的 Cloud Run 实例设置环境变量,而不破坏最初使该平台如此有吸引力的免费套餐?简单地将数据库密码等放在环境变量中似乎是个坏主意,但我不清楚这实际上会带来多大的安全风险,因为该项目是一个学生网站,数据库中不包含任何敏感的个人信息,而且考虑到具有 Google Cloud 控制台管理权限的用户无论如何都可以从秘密管理器访问秘密值。

答案1

为 Secret Manager 付费。实现它的硬件安全模块和合规性证明不是免费的。

或者想出不同的解决方案。不同的机密管理软件、不太复杂的纯文本文件中的机密存储、不同的应用程序部署模型。这可能与仅使用托管的 Cloud Run 产品不兼容。

我不清楚这实际上会带来多大的安全风险,因为该项目是一个学生网站,数据库中不包含任何敏感的个人信息

从整体上看,这可能对您的组织来说是一个小风险,但对秘密掉以轻心是一个坏习惯。

每个应用程序,即使是简单合规环境中的小型应用程序,也应该得到一定程度的机密保护。至少要限制访问配置文件。绝对不能嵌入到应用程序代码中。

无论如何,具有 Google Cloud 控制台管理权限的用户都可以从秘密管理器访问秘密值。

向授权管理员隐藏数据并不是机密系统的目的。任何机密的访问或删除都会被记录下来。理论上,这可以捕捉到向攻击者泄露机密的行为,或者在应该轮换的时间之后使用旧版本的行为。

答案2

为了降低成本,您需要弄清楚什么是保持容器正常运行或允许其关闭的最佳方法。

简而言之,Cloud Run 容器最多可以闲置 15 分钟,然后才会关闭。最大化其运行时间往往可以避免向 Secret Manager 发出额外请求。

您可以配置一个监控系统,在访问量最大的时段每 10 分钟向您的应用程序发送一次请求,以保持您的容器正常运行,而在访问量较少的时段不发送任何请求,以便让它在晚上关闭。

这样,您可以最大限度地减少集装箱在营业时间内的启动和冷启动,并允许它们在夜间关闭以节省成本。

相关内容