如何在kibana中设置身份验证
How to set authentication in kibana
是否可以在 Kibana 中启用身份验证以将对仪表板的访问限制为仅供特定用户访问?
Kibana4 目前不支持此功能。
Kibana 本身不支持身份验证或限制对仪表板的访问。
您可以在 Kibana 前面使用 nginx 作为代理 来限制对 Kibana 4 的访问,如下所述:https://serverfault.com/a/345244。只需将 proxy_pass 设置为端口 5601 并在防火墙上为其他人禁用此端口。这将完全启用或禁用 Kibana。
Elastic 还有一个名为 Shield 的工具,可让您管理 elasticsearch 的安全性。例如,使用 Shield,您可以允许某人以只读权限分析特定索引中的数据。 https://www.elastic.co/products/shield
编辑:Elastic 在 github 上有一个 issue,他们建议 使用 Shield。
- 在 these instructions
之后安装 Shield(elasticsearch 插件)
- Configure roles 对于 Kibana 用户
- Configure Kibana 使用 Shield
记住 Shield 仅提供索引级访问控制。这意味着用户 A 将能够看到所有仪表板,但其中一些仪表板将是空的(因为他无权访问所有索引)。
检查这个名为 elasticsearch-readonlyrest 的插件。
它允许通过身份验证或 ip/network、x-forwarded-for header 轻松进行访问控制,并允许在 kibana 中设置 read-write 或 read-only 访问并限制每个用户的索引访问.它设置简单,应该为大多数人提供足够的控制权。
如果需要更多控制,您可以使用 search-guard,一个免费的屏蔽替代品。
我已经通过安装haproxy实现了认证
- 在本地限制 kibana
$sudo nano /etc/kibana/kibana.yml
server.host: "localhost"
2.Install haproxy 在安装了 kibana 的同一台机器上
$ sudo apt update && sudo apt install haproxy
$ sudo nano /etc/haproxy/haproxy.cfg
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 10m
timeout client 10m
timeout server 10m
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
userlist UsersFor_Kibana
user kibana insecure-password myPASSWORD
frontend localnodes
bind *:80
mode http
default_backend nodes
backend nodes
acl AuthOkay_Kibana http_auth(UsersFor_Kibana)
http-request auth realm Kibana if !AuthOkay_Kibana
mode http
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1\r\nHost:localhost
server server1 127.0.0.1:5601 check
用户名:-"kibana"
密码:- "myPASSWORD"
当您浏览 http://IP:80 时会弹出一个窗口进行身份验证。
老问题,但我想补充一点,aws 有一个开源版本的 elk。您或许可以在 elastic.co 的版本中使用该插件。 https://github.com/opendistro-for-elasticsearch/security
是否可以在 Kibana 中启用身份验证以将对仪表板的访问限制为仅供特定用户访问?
Kibana4 目前不支持此功能。
Kibana 本身不支持身份验证或限制对仪表板的访问。
您可以在 Kibana 前面使用 nginx 作为代理 来限制对 Kibana 4 的访问,如下所述:https://serverfault.com/a/345244。只需将 proxy_pass 设置为端口 5601 并在防火墙上为其他人禁用此端口。这将完全启用或禁用 Kibana。
Elastic 还有一个名为 Shield 的工具,可让您管理 elasticsearch 的安全性。例如,使用 Shield,您可以允许某人以只读权限分析特定索引中的数据。 https://www.elastic.co/products/shield
编辑:Elastic 在 github 上有一个 issue,他们建议 使用 Shield。
- 在 these instructions 之后安装 Shield(elasticsearch 插件)
- Configure roles 对于 Kibana 用户
- Configure Kibana 使用 Shield
记住 Shield 仅提供索引级访问控制。这意味着用户 A 将能够看到所有仪表板,但其中一些仪表板将是空的(因为他无权访问所有索引)。
检查这个名为 elasticsearch-readonlyrest 的插件。 它允许通过身份验证或 ip/network、x-forwarded-for header 轻松进行访问控制,并允许在 kibana 中设置 read-write 或 read-only 访问并限制每个用户的索引访问.它设置简单,应该为大多数人提供足够的控制权。
如果需要更多控制,您可以使用 search-guard,一个免费的屏蔽替代品。
我已经通过安装haproxy实现了认证
- 在本地限制 kibana
$sudo nano /etc/kibana/kibana.yml
server.host: "localhost"
2.Install haproxy 在安装了 kibana 的同一台机器上
$ sudo apt update && sudo apt install haproxy
$ sudo nano /etc/haproxy/haproxy.cfg
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 10m
timeout client 10m
timeout server 10m
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
userlist UsersFor_Kibana
user kibana insecure-password myPASSWORD
frontend localnodes
bind *:80
mode http
default_backend nodes
backend nodes
acl AuthOkay_Kibana http_auth(UsersFor_Kibana)
http-request auth realm Kibana if !AuthOkay_Kibana
mode http
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1\r\nHost:localhost
server server1 127.0.0.1:5601 check
用户名:-"kibana" 密码:- "myPASSWORD"
当您浏览 http://IP:80 时会弹出一个窗口进行身份验证。
老问题,但我想补充一点,aws 有一个开源版本的 elk。您或许可以在 elastic.co 的版本中使用该插件。 https://github.com/opendistro-for-elasticsearch/security