跳到主内容

ELK

Casdoor/elk-auth-casdoor概览

ELK(Elasticsearch,Logstash和Kibana)最大的缺点之一是,这些产品最初没有认证机制。 因此,任何知道Kibana或Elasticsearch的URL的人都可以访问Kibana仪表板。 后来,ELK集成了一个名为“Xpack”的嵌入式认证系统。 然而,它的高级功能(如OAuth,OIDC,LDAP,SAML)并不是免费的。 只有使用一组账户和密码的普通认证是免费的,这非常不方便。 这种方法不允许我们为公司中的每个人提供唯一的账户。

为了解决这个问题,我们基于Casdoor开发了一种麋鹿认证解决方案。 此解决方案是免费的,开源的,正在进行持续的维护,并支持一系列高级功能。 Casdoor是一个基于OAuth 2.0/OIDC的集中认证/单点登录平台。 Casdoor/elk-auth-casdoor充当反向代理,旨在拦截所有朝向ELK/Kibana堆栈的HTTP数据流。 它引导尚未登录的用户进行登录。 只要用户已登录,这个反向代理就会透明地运行。

如果用户未被正确验证,请求将被暂时缓存,并且用户将被重定向到Casdoor登录页面。 一旦用户通过Casdoor登录,缓存的请求将会被恢复并发送到Kibana。 因此,如果一个POST请求(或者除GET之外的任何其他类型的请求)被拦截,用户就不需要重新填写表单并重新发送请求。 逆向代理将为你记住它。

casdoor/elk-auth-casdoor仓库位于https://github.com/casdoor/elk-auth-casdoor

如何使用?

  1. 确保你已经安装了Go编程语言环境。

  2. 前往 casdoor/elk-auth-casdoor 并获取代码。

  3. 将您的代理注册为Casdoor的应用程序。

  4. 修改配置。

    配置文件位于 "conf/app.conf"。 这是一个例子,你应根据自己的具体需求进行定制。

    appname = .
    # port on which the reverse proxy shall be run
    httpport = 8080
    runmode = dev
    # EDIT IT IF NECESSARY. The URL of this reverse proxy.
    pluginEndpoint = "http://localhost:8080"
    # EDIT IT IF NECESSARY. The URL of the Kibana.
    targetEndpoint = "http://localhost:5601"
    # EDIT IT. The URL of Casdoor.
    casdoorEndpoint = "http://localhost:8000"
    # EDIT IT. The clientID of your reverse proxy in Casdoor.
    clientID = ceb6eb261ab20174548d
    # EDIT IT. The clientSecret of your reverse proxy in Casdoor.
    clientSecret = af928f0ef1abc1b1195ca58e0e609e9001e134f4
    # EDIT IT. The application name of your reverse proxy in Casdoor.
    appName = ELKProxy
    # EDIT IT. The organization to which your reverse proxy belongs in Casdoor.
    organization = built-in
  5. 访问 http://localhost:8080(在上述示例中)并按照重定向指导进行登录。 然后,你应该会看到Kibana被Casdoor保护并进行了身份验证。

  6. 如果一切运行正常,不要忘记通过配置防火墙(或其他方法)来阻止外部访问原始的Kibana端口。 这确保了外部人员只能通过这个反向代理来访问Kibana。