AFAIK Невозможно повлиять на правила по умолчанию для istio-ingressgateway Loadbalancer на брандмауэре GCP только из конфигурации istio.
Однако,
Этот тип фильтрации может быть достигнут с использование политики istio. Так что запросы достигнут istio-ingressgateway
, но затем будут отклонены политиками, если IP-адрес не был внесен в белый список.
Согласно документации istio :
Istio поддерживает белые списки и черные списки на основе IP-адреса. Вы можете настроить Istio на прием или отклонение запросов от указанного c IP-адреса или su bnet.
Убедитесь, что вы можете получить доступ к Bookinfo productpage
, найденному в http://$GATEWAY_URL/productpage
, Вы не сможете получить к нему доступ, если примените приведенные ниже правила.
Примените конфигурацию для адаптера list , который занесен в белые списки su bnet "10.57.0.0\16"
на входном шлюзе:
$ kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.4/samples/bookinfo/policy/mixer-rule-deny-ip.yaml)
Содержимое mixer-rule-deny-ip.yaml
:
apiVersion: config.istio.io/v1alpha2
kind: handler
metadata:
name: whitelistip
spec:
compiledAdapter: listchecker
params:
# providerUrl: ordinarily black and white lists are maintained
# externally and fetched asynchronously using the providerUrl.
overrides: ["10.57.0.0/16"] # overrides provide a static list
blacklist: false
entryType: IP_ADDRESSES
---
apiVersion: config.istio.io/v1alpha2
kind: instance
metadata:
name: sourceip
spec:
compiledTemplate: listentry
params:
value: source.ip | ip("0.0.0.0")
---
apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:
name: checkip
spec:
match: source.labels["istio"] == "ingressgateway"
actions:
- handler: whitelistip
instances: [ sourceip ]
---
Попробуйте получить доступ к Bookinfo productpage
на http://$GATEWAY_URL/productpage
и убедитесь, что вы получаете сообщение об ошибке, похожее на: PERMISSION_DENIED:staticversion.istio-system:<your mesh source ip> is not whitelisted
Пример в документации имеет Перед вами начинайте часть, поэтому убедитесь, что выполнены требования для Включение политик .
Редактировать:
Чтобы уточнить,
Правила межсетевого экрана Istio и GCP работают на разных уровнях. Istio включен только в me sh, то есть везде, где вам вводят коляску.
Чтобы заставить istio-ingressgateway
работать, GCE предоставляет балансировщик сетевой нагрузки, который имеет некоторые предварительно настроенные правила, полностью независимые от Istio me sh.
Итак, в основном: Брандмауэр GCE правила будут влиять только на балансировщик сетевой нагрузки, подключенный к кластеру, чтобы разрешить трафик c в Istio me sh, а правила фильтрации в Istio будут работать только во всех модулях / службах / конечных точках, которые находятся в me sh.