You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Kubernetes上限制Keycloak控制台的公网访问权限

解决方案:禁止Keycloak管理控制台公网访问

方法一:通过Ingress规则直接拦截(推荐)

NetworkPolicy仅支持四层网络控制,无法区分HTTP路径,而Keycloak管理控制台和业务接口共用同一端口,因此在Ingress层面做七层路径拦截更高效。

针对公网可访问的Ingress,添加路径拦截规则:

  • 对管理控制台默认路径/auth/admin(若有自定义路径请调整)配置拒绝策略
  • 保留其他业务路径的正常访问权限

示例Ingress配置(以NGINX Ingress Controller为例):

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: keycloak-public
  annotations:
    nginx.ingress.kubernetes.io/configuration-snippet: |
      location ~* /auth/admin {
        deny all;
        return 403 Forbidden;
      }
spec:
  rules:
  - host: public-keycloak.your-domain.com
    http:
      paths:
      - path: /auth
        pathType: Prefix
        backend:
          service:
            name: keycloak-service
            port:
              number: 8080

内网访问的Ingress无需添加该注解,即可正常访问管理控制台。

方法二:修正NetworkPolicy规则(解决原配置失效问题)

若坚持使用NetworkPolicy,先排查以下常见失效原因:

  • 确认集群CNI插件支持NetworkPolicy(如Calico、Cilium,Flannel默认不支持)
  • 确认NetworkPolicy的Pod选择器精准匹配Keycloak Pod
  • 公网流量通过Ingress Controller进入集群,需针对Ingress Controller的Pod标签/IP段配置规则

正确的NetworkPolicy配置示例(假设Ingress Controller标签为app.kubernetes.io/name=nginx-ingress):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: keycloak-network-policy
spec:
  podSelector:
    matchLabels:
      app: keycloak # 替换为你的Keycloak Pod标签
  policyTypes:
  - Ingress
  ingress:
  # 允许集群内网IP段访问所有端口(示例为192.168.0.0/16,需替换为实际内网段)
  - from:
    - ipBlock:
        cidr: 192.168.0.0/16
    ports:
    - protocol: TCP
      port: 8080
  # 允许Ingress Controller访问,结合Ingress规则拦截/admin路径
  - from:
    - podSelector:
        matchLabels:
          app.kubernetes.io/name: nginx-ingress
    ports:
    - protocol: TCP
      port: 8080

注意事项

  • 若Keycloak版本较新,管理控制台路径可能为/admin而非/auth/admin,请根据实际版本调整
  • 测试公网访问时,需清除浏览器缓存或使用隐私窗口,避免缓存导致的误判

内容的提问来源于stack exchange,提问作者Stieg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:01:56