Cloud Run for Anthos 中的安全最佳做法

Cloud Run for Anthos 依赖 Istio 处理入站流量。因此,您可以自定义并配置 Istio 以支持您的需求。这也意味着 Cloud Run for Anthos 可能会受到 Istio 已知问题或漏洞的影响。

本页面旨在帮助您使用已知的最佳做法配置 Cloud Run for Anthos 以及解决已知问题,避免资源受到漏洞的意外威胁。

其他最佳做法指南和资源:

已知漏洞

AuthorizationPolicies 中配置路径

安全漏洞

说明

您可以使用 Cloud Run for Anthos 服务的路径,通过 Istio 的 AuthorizationPolicies 进行访问权限控制。由于 CVE-2021-31920,如果您配置基于路径的访问权限控制,则可能容易受到路径混淆攻击。

例如,您将位于 yourservice.com/admin 的一个服务配置为允许请求访问路径 /admin。如果您没有明确拒绝访问 //adminAuthorizationPolicy 中的路径漏洞会导致无法阻止使用格式错误的 //admin 路径的请求进行访问。由于服务可能无法区分这些路径,使用格式错误的路径的请求会获得意外的访问权限。

背景

Cloud Run for Anthos 使用的默认 Istio 入站网关依赖于默认的网址格式标准化,使用遵循 RFC 3986normalize_path Envoy 代理。

但是,有一些已知的请求网址格式并未通过默认的网址格式标准化标准进行标准化。请参阅以下部分,了解如何缓解该漏洞。

缓解措施

为防止遭受路径混淆攻击,您可以采用以下两种方法:

  • 推荐选项:默认拒绝所有访问权限

    将 Istio 配置为在 AuthorizationPolicy 政策中使用默认拒绝模式。这通常可以改善集群的安全状况。配置默认拒绝授权模式会默认拒绝向服务发出的所有请求,并可让您明确定义允许请求访问的所有条件。

    使用此模式可能意味着如果您未能允许特定条件,某些请求将被意外拒绝。这可能会导致用户体验不佳、服务中断或无法达到 SLO 或 SLA。一般而言,明确定义所有访问权限的代价好过意外访问导致的安全突发事件。

    例如:

    在目标命名空间中定义 allow-nothing 政策,以创建 AuthorizationPolicy 来使用默认拒绝模式。例如,要拒绝发送到 default 命名空间中所有服务的全部流量,您可以创建以下政策:

    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
      name: allow-nothing
      namespace: default
    spec:
      {}
    

    如需详细了解如何定义 AuthorizationPolicy 类型的政策,请参阅 HTTP 流量的 Istio 授权

  • 替代选项:明确拒绝服务的所有有问题的网址变体

    要避免实施默认拒绝模式,您必须确保后端服务能够拒绝任何有问题的路径。根据实现服务的语言、框架以及其他因素,您必须明确拒绝 Istio 入站网关未标准化的所有网址路径,包括:

    • 多个正斜杠或反斜杠://\\
    • 转义的正斜杠或反斜杠的序列:%2F%2f%5C%5c