Я хотел, чтобы все модули, развернутые в пространстве имен dev, были аутентифицированы, кроме проверки работоспособности, путь к ней - path: [/ user / ping, / message / ping], но я не могу предоставить оба одновременно
Я воспроизвел вашу проблему и думаю, что она работает так, как вы хотели.
Есть мои yamls RequestAuthentication и AuthorizationPolicy.
apiVersion: security.istio.io/v1beta1
kind: RequestAuthentication
metadata:
name: testing-dev-authenticator
namespace: istio-system
spec:
selector:
matchLabels:
istio: ingressgateway
jwtRules:
- issuer: "[email protected]"
jwksUri: "https://raw.githubusercontent.com/istio/istio/release-1.8/security/tools/jwt/samples/jwks.json"
---
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: require-jwt
namespace: istio-system
spec:
selector:
matchLabels:
istio: ingressgateway
action: ALLOW
rules:
- from:
- source:
requestPrincipals: ["*"]
to:
- operation:
paths: ["/productpage"]
- to:
- operation:
paths: ["/api/v1/products"]
Вы можете использовать следующее, чтобы исключить путь (например, / api / v1 / products) из JWT, когда / productpage требует JWT и отклоняет все запросы без токена.
Если вы хотите исключить более одного пути, это должно сработать:
paths: ["/api/v1/products","/login"]
Итак, в вашем случае это было бы
paths: ["/user/ping", "/message/ping"]
Я протестировал вышеуказанную конфигурацию в приложении bookinfo.
Это токен, который я использовал
TOKEN=$(curl https://raw.githubusercontent.com/istio/istio/release-1.8/security/tools/jwt/samples/demo.jwt -s)
Тесты:
api/v1/products
Without token
200
With token
200
------------------------------------------------------------------
/productpage
Without token
403
With token
200
Вы также упомянули, что хотите сделать это в конкретном пространстве имен, тогда вы можете попробовать эти yamls RequestAuthentication и AuthorizationPolicy.
apiVersion: security.istio.io/v1beta1
kind: RequestAuthentication
metadata:
name: testing-dev-authenticator
namespace: dev
spec:
jwtRules:
- issuer: "[email protected]"
jwksUri: "https://raw.githubusercontent.com/istio/istio/release-1.8/security/tools/jwt/samples/jwks.json"
---
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: test-dev-only-authorized-api
namespace: dev
spec:
action: DENY
rules:
- from:
- source:
notRequestPrincipals: ["*"]
to:
- operation:
paths: ["/productpage"]
Также на основе приложения bookinfo.
Тесты:
api/v1/products
Without token
200
With token
200
------------------------------------------------------------------
/productpage
Without token
403
With token
200
Дополнительные ресурсы:
person
Jakub
schedule
12.01.2021
RBAC: access denied
вместоupstream connect error or disconnect/reset before headers
. Не могли бы вы проверить, работает ли ваше приложение? Работает ли без AuthorizationPolicy? В логах приложений что-нибудь есть? - person Jakub   schedule 11.01.2021