Доступ к внешнему jwksuri через прокси компании

Я новичок в istio и сомневался в настройке политики проверки подлинности запроса. В политике используется jwksuri, который является внешним URI. Политика применяется к пространству имен istio-system. В тот момент, когда я применяю эту политику и выполняю

>istioctl proxy-status 

Входной шлюз, к которому применяется политика LDS, помечен как устаревший. Если я удалю эту политику, шлюз вернется в состояние SYNCED. Кажется, что этот jwksuri недоступен, поскольку мы находимся за прокси компании. Я создал запись службы для доступа к внешнему jwks uri примерно так

kubectl apply -f - <<EOF
apiVersion: 
networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: jwksexternal
 spec:
  hosts:
  - 
authorization.company.com
  ports:
  - number: 443
    name: https
    protocol: HTTPS
  resolution: DNS
  location: MESH_EXTERNAL
EOF

Также попытался создать еще одну служебную запись Настройка трафика на внешний прокси со ссылкой на эту документацию https://istio.io/latest/docs/tasks/traffic-management/egress/http-proxy/

Но это не работает. Как мне настроить прокси компании в Istio.

Редактировать это журналы в istiod (обратите внимание на https://authorization.company.com/jwk — внешний URL)

2021-06-02T14:35:39.423938Z error model Failed to fetch public key from "https://authorization.company.com/jwk": Get "https://authorization.company.com/jwk": dial tcp: lookup authorization.company.com on 10.X.0.X:53: no such host
2021-06-02T14:35:39.423987Z error Failed to fetch jwt public key from "https://authorization.company.com/jwk": Get "https://authorization.company.com/jwk": dial tcp: lookup authorization.company.com on 10.X.0.X:53: no such host
2021-06-02T14:35:39.424917Z info ads LDS: PUSH for node:istio-ingressgateway-5b69b5448c-8wbt4.istio-system resources:1 size:4.5kB
2021-06-02T14:35:39.433976Z warn ads ADS:LDS: ACK ERROR router~10.X.48.X~istio-ingressgateway-5b69b5448c-8wbt4.istio-system~istio-system.svc.cluster.local-105 Internal:Error adding/updating listener(s) 0.0.0.0_8443: Provider 'origins-0' in jwt_authn config has invalid local jwks: Jwks RSA [n] or [e] field is missing or has a parse error

Не удалось найти обходной путь для этой проблемы. На данный момент jwks встроен в правила jwt. Но у этого есть проблема, всякий раз, когда ключи открытого ключа меняются. Правила jwt терпят неудачу. Это проблема прокси, но не знаю, как обойти


person user2714010    schedule 01.06.2021    source источник


Ответы (1)


По умолчанию Istio разрешает трафик во внешние системы.

См. https://istio.io/latest/docs/tasks/traffic-management/egress/egress-control/#change-to-the-blocking-by-default-policy

Поэтому, если проблема в том, что URL-адрес JWKS недоступен, это, скорее всего, не из-за Istio, и ServiceEntry не поможет. Я предполагаю, что проблема будет где-то еще, не в Istio.

person user140547    schedule 02.06.2021
comment
Я получаю следующее в журналах istiod: 2021-06-02T02:51:54.948646Z ошибка Не удалось получить открытый ключ jwt из авторизация.company.com/jwk: получите authorization.company.com/jwk: наберите tcp: поиск author.company.com на 10.X.0.X:53: такого хоста нет - person user2714010; 02.06.2021
comment
Хост в вашей ServiceEntry не должен содержать путь (поэтому должен быть без /jwks) - person Peter Claes; 04.06.2021
comment
Извините, моя плохая запись службы без jwks в пути. - person user2714010; 07.06.2021
comment
Не удалось найти обходной путь для этой проблемы. На данный момент jwks встроен в правила jwt. Но у этого есть проблема, всякий раз, когда ключи открытого ключа меняются. Правила jwt терпят неудачу. Это проблема прокси, но не знаю, как обойти - person user2714010; 09.06.2021