将 Cloud Armor 与 Cloud Run 结合使用并避免绕过
Posted
技术标签:
【中文标题】将 Cloud Armor 与 Cloud Run 结合使用并避免绕过【英文标题】:Use Cloud Armor with Cloud Run and avoid bypass 【发布时间】:2021-04-13 09:35:48 【问题描述】:引用https://cloud.google.com/load-balancing/docs/https/setting-up-https-serverless#enabling
虽然可以使用 Cloud Run(全托管)、Cloud Functions 和 App Engine 后端为后端服务配置 Google Cloud Armor,但此功能存在一定的限制,尤其是对于 Cloud Run(全托管)和 App Engine。有权访问 Google Cloud 分配给这些服务的默认 URL 的用户可以绕过负载平衡器并直接访问服务 URL,从而绕过任何已配置的 Google Cloud Armor 安全策略。
避免攻击者以 Cloud Run URL (*.run.app
) 为目标绕过 Cloud Armor 的最佳方法是什么?
通常我会让 Cloud Run 只能由服务帐户调用,但 Cloud Load Balancer 不能使用服务帐户来调用 Cloud Run。另一种方法是将 Cloud Load Balancer 配置为在标头中使用令牌,并将在 Cloud Run 中运行的应用配置为仅接受具有正确标头/令牌的调用,但我不希望在应用中这样做。
【问题讨论】:
【参考方案1】:您应该将服务的入口限制为“内部和负载平衡”,以禁用来自默认域的访问,并且只允许来自 Cloud Armor 的流量:
gcloud beta run services update SERVICE --ingress internal-and-cloud-load-balancing
【讨论】:
谢谢,最好更新 cloud.google.com/load-balancing/docs/https/… 文档,指定您现在可以(尽管处于 Beta 版)配置 Cloud Run 入口。我还注意到,这似乎在 google-beta Terraform 提供程序中不可用。以上是关于将 Cloud Armor 与 Cloud Run 结合使用并避免绕过的主要内容,如果未能解决你的问题,请参考以下文章
Google Cloud FUSE 与 Cloud Run [Errno 5] 输入/输出错误:'/database' 但已授予存储对象管理员访问权限
Cloud Run 完成,但 Cloud Scheduler 认为该作业已失败
如何为 Cloud Build 用于 Cloud Run 部署的 Cloud Storage 存储分区指定区域?