首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用键盘门卫保护Kibana仪表盘?

如何使用键盘门卫保护Kibana仪表盘?
EN

Stack Overflow用户
提问于 2019-08-14 15:12:51
回答 1查看 3.1K关注 0票数 1

电流:

收到的请求(/sso)->特使代理->/sso

期望流:

收到的请求(/sso)->特使代理->密钥斗篷-守门人->键盘斗篷 ->如果没有登录-> keycloak标记页-> /sso-kibana ->如果已经登录-> /sso-kibana

我将keycloak-网关管理员部署为一个具有以下配置的k8s集群:

keycloak-gatekeeper.yaml

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: keycloak-gatekeeper
  name: keycloak-gatekeeper
spec:
  selector:
    matchLabels:
      app: keycloak-gatekeeper
  replicas: 1
  template:
    metadata:
      labels:
        app: keycloak-gatekeeper
    spec:
      containers:
        - image: keycloak/keycloak-gatekeeper
          imagePullPolicy: Always
          name: keycloak-gatekeeper
          ports:
            - containerPort: 3000
          args:
            - "--config=/keycloak-proxy-poc/keycloak-gatekeeper/gatekeeper.yaml"
            - "--enable-logging=true"
            - "--enable-json-logging=true"
            - "--verbose=true"
          volumeMounts:
             -
              mountPath: /keycloak-proxy-poc/keycloak-gatekeeper
              name: secrets
      volumes:
        - name: secrets
          secret:
           secretName: gatekeeper

gatekeeper.yaml

代码语言:javascript
复制
discovery-url: https://keycloak/auth/realms/MyRealm
enable-default-deny: true
listen: 0.0.0.0:3000
upstream-url: https://kibana.k8s.cluster:5601
client-id: kibana
client-secret: d62e46c3-2a65-4069-b2fc-0ae5884a4952

Envoy.yaml

代码语言:javascript
复制
- name: kibana
    hosts: [{ socket_address: { address: keycloak-gatekeeper, port_value: 3000}}]

问题:

我能够在/Kibana上调用keycloak登录,但是在登录后,用户不会访问/Kibana url,即Kibana仪表板没有加载。

注意: Kibana也作为k8s集群运行。

参考资料:

https://medium.com/@vcorreaniche/securing-serverless-services-in-kubernetes-with-keycloak-gatekeeper-6d07583e7382

https://medium.com/stakater/proxy-injector-enabling-sso-with-keycloak-on-kubernetes-a1012c3d9f8d

更新1:

我可以在/sso上调用keycloak登录,但是在输入凭据之后,它就可以给404了。流动情况如下:

步骤1.单击http://something/sso-kibana

步骤2.密钥披风登录页面在https://keycloak/auth/realms/THXiRealm/protocol/openid-connect/auth.

步骤3.输入凭据后重定向到该URL https://something/sso-kibana/oauth/callback?state=890cd02c-f.

步骤4. 404

更新2:

在Envoy.yaml中添加了一条新的路由后,解决了404错误

Envoy.yaml

代码语言:javascript
复制
  - match: { prefix: /sso-kibana/oauth/callback }
                route: { prefix_rewrite: "/", cluster: kibana.k8s.cluster }

因此,预期的流(如下图所示)现在运行良好。

收到的请求(/sso)->特使代理->密钥斗篷-守门人->键盘斗篷 ->如果没有登录-> keycloak标记页-> /sso-kibana ->如果已经登录-> /sso-kibana

EN

回答 1

Stack Overflow用户

发布于 2019-08-20 21:46:08

在您的配置中,您显式地启用了enable-default-deny,在文档中解释为:

启用对所有请求的默认拒绝,您必须显式说明什么是允许的(推荐)

启用该功能后,您将需要通过如1所示的resources条目或命令行参数2指定urls、方法等。

代码语言:javascript
复制
resources:
- uri: /app/*

1

2

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57497526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档