fix(plataforma): tenants alcancam o Keycloak compartilhado (JWKS) -- sem isto todo acesso logado dos tenants provisionados voltava 401
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# =============================================================================
|
||||
# Os tenants CHEGAM ao Keycloak compartilhado — para baixar as chaves (JWKS)
|
||||
# que validam o login, e para o client `operacao` pedir token.
|
||||
#
|
||||
# FALTAVA, e o efeito era TODO acesso logado dos tenants provisionados
|
||||
# recusado. Medido em 2026-09-26: um token VALIDO do realm do `teste5`,
|
||||
# emitido por este Keycloak, voltou 401 do BFF do teste5 — o log mostrava o
|
||||
# `NimbusJwtDecoder` sem conseguir baixar o JWKS de
|
||||
# `keycloak.plataforma-prod.svc:8080`. Os tenants TINHAM a saida liberada (a
|
||||
# `deny-cross-tenant` deles abre 8080 para `plataforma-prod`); faltava a
|
||||
# ENTRADA deste lado. A `deny-cross-tenant` daqui so aceita o proprio
|
||||
# namespace e o kube-system.
|
||||
#
|
||||
# Nao aparecia em log nenhum ate alguem logar: o JWKS so e buscado na primeira
|
||||
# requisicao autenticada. Zero erro no log e "ninguem usou", nao "funciona".
|
||||
#
|
||||
# Mesmo desenho da `tenants-no-pgbouncer` (15-): so a porta 8080, so o pod do
|
||||
# Keycloak, por rotulo `athleticmap.io/tenant` para todo tenant provisionado,
|
||||
# e por nome para os quatro antigos (criados a mao, sem o rotulo), que migram
|
||||
# para este Keycloak a partir de 2026-09-26 (card 156 / P4.8).
|
||||
# =============================================================================
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: NetworkPolicy
|
||||
metadata:
|
||||
name: tenants-no-keycloak
|
||||
namespace: plataforma-prod
|
||||
spec:
|
||||
podSelector:
|
||||
matchLabels: { app: keycloak }
|
||||
policyTypes: [Ingress]
|
||||
ingress:
|
||||
- from:
|
||||
- namespaceSelector:
|
||||
matchExpressions:
|
||||
- { key: athleticmap.io/tenant, operator: Exists }
|
||||
- namespaceSelector:
|
||||
matchLabels: { kubernetes.io/metadata.name: piloto-prod }
|
||||
- namespaceSelector:
|
||||
matchLabels: { kubernetes.io/metadata.name: demo-prod }
|
||||
- namespaceSelector:
|
||||
matchLabels: { kubernetes.io/metadata.name: acme-prod }
|
||||
- namespaceSelector:
|
||||
matchLabels: { kubernetes.io/metadata.name: escolinha-prod }
|
||||
ports:
|
||||
- { protocol: TCP, port: 8080 }
|
||||
Reference in New Issue
Block a user