【问题标题】:BackendConfig with multiple securityPolicys not working具有多个 securityPolicys 的 BackendConfig 不起作用
【发布时间】:2019-11-22 08:43:05
【问题描述】:
https://cloud.google.com/kubernetes-engine/docs/how-to/cloud-armor-backendconfig
我只看到了分配一个 securityPolicy 的示例,但我想分配多个。
我使用 2 个策略创建了以下后端配置,并使用 beta.cloud.google.com/backend-config: my-backend-config 应用于我的服务
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
namespace: cloud-armor-how-to
name: my-backend-config
spec:
securityPolicy:
name: "policy-one"
name: "policy-two"
当我部署时,只应用“策略二”。我可以以某种方式分配两个策略吗?我没有看到这方面的文档
【问题讨论】:
标签:
kubernetes
google-cloud-platform
google-kubernetes-engine
google-cloud-armor
【解决方案1】:
文档中没有任何内容表明您可以指定多个策略。甚至规范都说 securityPolicy 是单数,而 YAML 结构不是数组。
此外,如果您查看您的规范:
spec:
securityPolicy:
name: "policy-one"
name: "policy-two"
YAML 标准完全忽略了第一个 name: "policy-one",这解释了为什么只使用 name: "policy-two"。您可以在YAMLlint 上查看。要在 YAML 上增加一个值,您必须将 securityPolicy 转换为数组。像这样的:
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
namespace: cloud-armor-how-to
name: my-backend-config
spec:
securityPolicy:
- name: "policy-one"
- name: "policy-two"
问题在于 GCP 可能不支持它。
【解决方案2】:
同样的行为也发生在常规 HTTP(S) 负载均衡器上。似乎只能为每个目标添加一个安全策略,并且相同的行为会影响 GKE 入口创建的 HTTP(S) 负载均衡器。
可以为唯一的安全策略添加更多规则。可以像添加first rule一样添加新规则;但是,这些规则的优先级必须不同,如下例所示:
~$ gcloud beta compute security-policies rules create 1000 \
--security-policy ca-how-to-security-policy \
--src-ip-ranges "192.0.2.0/24" \
--action "deny-404"
~$ gcloud beta compute security-policies rules create 1001 \
--security-policy ca-how-to-security-policy \
--src-ip-ranges "11.16.0.0/24" \
--action "deny-404"