如何将两个不同的 Cloud Armor BackendConfigs 注释到一个服务

How can I annotate two different Cloud Armor BackendConfigs to of a service

我有两个 Cloud Armor 保单。 策略 "A" 允许我们的办公室网络连接到特定服务。 政策 "B" 允许客户使用服务消费 API。

我无法将策略 "B" 的规则添加到策略 "A",因为这样规则(客户 ip)将可以访问应用策略 "A" 的所有服务至。因此我将它分离到一个独立的策略 "B".

所以我现在有两个不同的 BackendConfig 资源。一项参考政策 "A",一项参考政策 "B"。

我采取的下一步是以某种方式将 云装甲后端配置应用于一项特定服务。办公室网络应该可以访问该服务 加上 我们客户的 IP。 这就是我认为它可能起作用的方式:

metadata:
  annotations:
    beta.cloud.google.com/backend-config: '{"default":{"policy-a-cloud-armor-backend-config","policy-b-cloud-armor-backend-config"}}'

不幸的是,这有效。在 GCP 的策略面板中出现以下警告:

This policy has not been applied to any targets yet, so the policy will not affect any traffic.

知道如何使这种独占访问成为可能吗?

此通知 This policy has not been applied to any targets yet, so the policy will not affect any traffic 表示安全策略未通过后端配置和注释绑定到任何目标。

注释语法看起来与文档不一致:缺少字段 ports。应该是这样的:

{"ports": {"http":"config-http", "http2" :"config-http2"}, "default": "config-default"} 

参见 Associating a Service port with a BackendConfig

很难像service/port那样对同一个集合应用两种不同的安全策略。

作为解决方法,您可以尝试使用包含适用于两个客户端的规则的特殊安全策略的附加服务。