百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

Kibana安全特性之权限控制 权限管理rbac的实现

yuyutoo 2024-10-16 15:45 7 浏览 0 评论

1. 前言


在之前的例子中,我们都是直接输入地址访问的,系统也没有提示我们要输入用户名密码。但是,在实际使用过程中不大可能所有人都是超级管理员可以做任何操作,一定是有权限控制的,这里我们借助X-Pack插件来实现(PS:X-Pack是收费的,可以申请试用30天。)

2. 安装X-Pack

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。


用下列命令安装插件:

bin/kibana-plugin install <package name or URL>

例如:

bin/kibana-plugin install x-pack

事实上,我们无需再次安装X-Pack插件,因为在安装Kibana的时候默认已经安装了。

By default, when you install Elasticsearch, X-Pack is installed.

By default, when you install Kibana, X-Pack is installed.

3. 在Elasticsearch中配置Security


X-Pack安全性使你能够轻松地保护集群。通过X-Pack安全性,你可以对数据进行密码保护,并实现更高级的安全措施,如加密通信、基于角色的访问控制、IP过滤和审计。

第1步:检查你的license中是否包含X-Pack安全特性

如果你想尝试所有的X-Pack特性,你可以开始一个30天的试用。在试用期结束时,你可以购买以继续使用X-Pack组件的全部功能。

这里,我们先试用30天再说

可以看到,试用以后我们的license从“Basic”变成“Trial”。而且,从控制台日志中我们可以看到这个变化:

log [03:49:03.965] [info][license][xpack] Imported license information from Elasticsearch for the [monitoring] cluster: mode: basic | status: active
log [03:55:25.049] [info][license][xpack] Imported changed license information from Elasticsearch for the [data] cluster: mode: trial | status: active | expiry date: 2018-09-18T11:55:25+08:00

第2步:检查你的集群中的每个节点配置中xpack.security.enabled是否设置为true。如果你用的是一个trail license,这个配置项默认是false。

xpack.security.enabled: true

配置项

xpack.security.enabled

设置为true则在节点上启用X-Pack安全特性,false表示禁用X-Pack安全特性。(PS:推荐明确设置这个值)

xpack.security.authc.accept_default_password

在elasticsearch.yml中,将其设置为false,以禁用默认密码。默认密码是“changeme”。

xpack.security.authc.anonymous.username

配置匿名用户

xpack.security.authc.anonymous.roles

匿名用户关联的角色

例如:

xpack.security.authc:
 anonymous:
 username: anonymous_user 
 roles: role1, role2 
 authz_exception: true 

xpack.security.dls_fls.enabled

设置为false表示阻止文档和字段级别的访问控制。默认是true。

xpack.security.authc.token.enabled

设置为false表示禁用token服务。默认true。

xpack.security.authc.realms

配置realms,例如:

xpack.security.authc.realms:
 realm1:
 type: native
 order: 0
 ...
 realm2:
 type: ldap
 order: 1
 ...
 realm3:
 type: active_directory
 order: 2
 ...
 ...
  • type:可选值有native, ldap, active_directory, pki, file
  • order:realm在realm链中的优先级,数值越小,优先级越高
  • enabled:默认true,表示启用这个realm

第3步:为内部节点通信配置TSL/SSL

这需要你的集群中至少有两个节点。如果你的集群中只有一个节点,那么可以忽略这一步。

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

第4步:启动Elasticsearch

第5步:为所有内置用户设置密码

X-Pack安全性提供了内置的用户来帮助你启动和运行。elasticsearch-setup-password命令是首次设置内置用户密码的最简单方法。

内置用户有4个,如下:

  • elastic 超级用户
  • Kibana 用于连接并且和Elasticsearch通信的
  • logstash_system 用于在Elasticsearch中存储监控信息
  • beats_system 用于在Elasticsearch中存储监控信息

例如,你可以以交互模式运行命令,依次为这些用户设置新密码:

bin/elasticsearch-setup-passwords interactive

(画外音:elasticsearch-setup-passwords命令只能运行一次,不能再运行第二次。此后如果你想修改密码的话,可以在Kibana UI界面中通Management --> Users 或者通过API的方式来修改密码)

第6步:选择你想要用来认证用户的realms类型

例如:https://www.elastic.co/guide/en/elasticsearch/reference/6.3/configuring-native-realm.html

第7步:设置用于访问Elasticsearch的角色和用户。例如:

curl -XPOST -u elastic 'localhost:9200/_xpack/security/role/events_admin' -H "Content-Type: application/json" -d '{
 "indices" : [
 {
 "names" : [ "events*" ],
 "privileges" : [ "all" ]
 },
 {
 "names" : [ ".kibana*" ],
 "privileges" : [ "manage", "read", "index" ]
 }
 ]
}'
curl -XPOST -u elastic 'localhost:9200/_xpack/security/user/johndoe' -H "Content-Type: application/json" -d '{
 "password" : "userpassword",
 "full_name" : "John Doe",
 "email" : "john.doe@anony.mous",
 "roles" : [ "events_admin" ]
}'

第8步:启用审计

xpack.security.audit.enabled: true

3.1. 用户管理API

3.1.1. 查看用户

# 查看所有用户
curl -X GET -u elastic "localhost:9200/_xpack/security/user"
# 查看指定用户
curl -X GET -u elastic "localhost:9200/_xpack/security/user/jacknich"

例如:

3.1.2. 创建用户

例如:

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

curl -X POST -u elastic "localhost:9200/_xpack/security/user/jacknich" -H 'Content-Type: application/json' -d'
{
 "password" : "j@rV1s",
 "roles" : [ "admin", "other_role1" ],
 "full_name" : "Jack Nicholson",
 "email" : "jacknich@example.com",
 "metadata" : {
 "intelligence" : 7
 }
}
'

在这些参数中,password 和 roles 是必须的。

(画外音:加上“-u elastic”是因为只有elastic用户有管理用户权限,另外,请求参数后面可以带上?pretty,这样返回的格式会好看一点儿)

3.1.3. 修改密码

curl -X POST "localhost:9200/_xpack/security/user/jacknich/_password" -H 'Content-Type: application/json' -d'
{
 "password" : "s3cr3t"
}
'

3.1.4. 禁用/启用/删除用户

curl -X PUT "localhost:9200/_xpack/security/user/jacknich/_disable"
curl -X PUT "localhost:9200/_xpack/security/user/jacknich/_enable"
curl -X DELETE "localhost:9200/_xpack/security/user/jacknich"

3.2. 角色管理API

curl -X GET "localhost:9200/_xpack/security/role"
curl -X GET "localhost:9200/_xpack/security/role/my_admin_role"
curl -X DELETE "localhost:9200/_xpack/security/role/my_admin_role"
curl -X POST "localhost:9200/_xpack/security/role/my_admin_role" -H 'Content-Type: application/json' -d'
{
 "cluster": ["all"],
 "indices": [
 {
 "names": [ "index1", "index2" ],
 "privileges": ["all"],
 "field_security" : { // 可选
 "grant" : [ "title", "body" ]
 },
 "query": "{\"match\": {\"title\": \"foo\"}}" // 可选
 }
 ],
 "run_as": [ "other_user" ], // 可选
 "metadata" : { // 可选
 "version" : 1
 }
}
'

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

3.3. 基于角色的访问控制(RBAC)

X-Pack安全性提供了一种基于角色的访问控制(RBAC)机制,它使你能够通过向角色分配特权和向用户或组分配角色来授权用户。

4. 在Kibana中配置Security


当在你的集群上启用X-Pack时,Kibana用户必须登录成功后才可以访问。你可以为Kibana用户配置X-Pack安全角色,以控制用户可以访问哪些数据。

通过Kibana向Elasticsearch发出的大多数请求都通过登录用户的凭证进行认证的。然而,Kibana服务器需要向Elasticsearch集群发出一些内部请求。因此,你必须为Kibana服务器配置用于这些请求的凭证。

启用了X-Pack安全性之后,如果你加载一个Kibana指示板,该指示板访问你没有权限查看的索引中的数据,那么你将得到一个索引不存在的错误。X-Pack安全性目前还没有提供一种方法来控制哪些用户可以加载哪些仪表板。

为了在Kibana中应用X-Pack安全特性:

第1步:在Elasticsearch中配置security

第2步:配置Kibana使用内置账户,例如:

第3步:在kibana.yml配置文件中指定xpack.security.encryptionKey,例如:

第4步:可选的:更改默认的session过期时间,例如:

xpack.security.sessionTimeout: 600000

第5步:可选的:配置Kibana加密通信

第6步:重启Kibana

第7步:现在一个用户身份认证机制,并授予用户所需的权限

你可以在Kibana中管理权限(Management / Security / Roles 页面)

如果你用native realm with Basic Authentication,你可以在Management / Security / Users 页面指定角色或者用APIs。

第8步:授权用户用Kibana工作的时候可以访问哪些索引

(画外音:你可以根据需要为Kibana用户定义许多不同的角色)

第9步:检查用户是否可以正常登录 http://localhost:5601

4.1. 配置项

xpack.security.enabled

设置为true(默认)以启用X-Pack安全特性

xpack.security.cookieName

cookie的名字。默认是“sid”。

xpack.security.encryptionKey

用于加密cookie中的凭证的32个或更多字符的任意字符串。关键是这个密钥不向Kibana的用户公开。默认情况下,在内存中会自动生成一个值。如果使用这种默认行为,当Kibana重新启动时,所有会话都将失效。

xpack.security.sessionTimeout

设置会话持续时间(以毫秒为单位)。默认情况下,会话保持活动状态,直到浏览器关闭。

4.2. Kibana用户身份认证

Kibana支持两种认证机制:

  • Basic Authentication
  • SAML Single Sign-On

4.2.1. Basic Authentication

Basic Authentication在登录Kibana时需要一个用户名和密码。默认它是启用的,并且是基于Elasticsearch提供的 native realm

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

4.2.2. SAML Single Sign-On

SAML身份验证允许用户使用外部身份提供者(如Okta或Auth0)登录Kibana。在Kibana中设置SAML之前,请确保在Elasticsearch中启用和配置SAML。

4.3. User authentication(用户认证)

为了访问受保护的资源,一个用户必须通过密码、凭证、或者其它方式(通常是token)来证明他们的身份标识。

认证过程由一个或多个被称为“realms”的认证服务来处理。

你可以用本机支持管理和认证用户,或者集成外部的用户管理系统(比如:LDAP 和 Active Directory)。

X-Pack安全特性提供了内置的realms,比如:native,ldap,active_directory,pki,file 和 saml。如果没有一个内置realms满足你的需求,你还可以构建自己的realm。

当启用X-Pack安全特性时,根据你配置的realms,你必须将用户凭证附加到发送到Elasticsearch的请求中。例如,当使用支持用户名和密码的realms时,你可以简单的将basic auth头信息添加到请求中。

4.4. 在Kibana管理后台界面中取管理用户

5. 演示


5.1. kibana.yml

server.port: 5601
server.host: "192.168.101.5"
elasticsearch.url: "http://localhost:9200"
elasticsearch.username: "kibana"
elasticsearch.password: "123456"
xpack.security.enabled: true
xpack.security.encryptionKey: "4297f44b13955235245b2497399d7a93"

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

5.2. elasticsearch.yml

xpack.security.enabled: true

5.3. 登录

相关推荐

pdf,word,ppt,rar,mp4等等文档在线预览

背景:移动端的智能化已经被大多数人接受了,但是有时一些文件格式要在移动端打开,需要安装特定的软件才行,这个就是很多人不喜欢的,要看个文档还要下载安装一个app,实在麻烦,那能不能直接在线就预览文件呢具...

Qt/C++音视频开发69-保存监控pcm音频数据到mp4文件/监控录像

一、前言用ffmpeg做音视频保存到mp4文件,都会遇到一个问题,尤其是在视频监控行业,就是监控摄像头设置的音频是PCM/G711A/G711U,解码后对应的格式是pcm_s16be/pcm_alaw...

全能下载神器文件蜈蚣体验(全能文件王)

文件蜈蚣是一款开源免费的软件,在GitHub上公布了所有源代码,自身非常绿色环保,没有流氓后台也没广告,和莫名弹窗的同行相比,可算得上是一股清流。文件蜈蚣的使用很简单,解压后运行一次其中的exe,完成...

支持HLS和mp4在线播放的源码(hls支持的视频编码格式)

今天安利的一套在线视频播放源码,它不是安卓端,也不是PC端。你只需要部署一下这个单页面源码即可。使用php+mysql+nginx即可。任何版本都能运行。HLSDOWNLOAD网页打开服务器地址:1...

大模型微调知识与实践分享(模具微调结构)

一、微调相关知识介绍...

IOS遇到的几个H5坑、h5键盘弹起遮挡输入框的处理

一、IOS遇到的几个H5坑1、ios端兼容input光标高度  问题描述:input输入框光标,在安卓手机上显示没有问题,但是在苹果手机上当点击输入的时候,光标的高度和父盒子的高度一样。例如下图,左...

实用技巧:如何在win10中安装没有管理员权限的软件

通常,我们可能会遇到需要在Windows10电脑上安装软件,但在该电脑上没有管理员权限的情况,由于不是管理员,所以无权在在电脑上安装软件,这让人非常苦恼。事实上,这是微软专门设计的一个安全功能,它的...

基于ENVI的Landsat 7遥感影像处理与多种大气校正方法对比

1数据导入与辐射定标关于数据的下载,网络中相关资源很多,这里不再赘述。...

在 Python 中为无服务器应用设计安全租户隔离

软件即服务(SaaS)已经成为当今一种非常普遍的软件交付方式。虽然这方便了用户访问,而且消除了用户的运营开销,但这也改变了以前的模式,将实现SLA以及现代云原生组织所期望的所有安全和数据隐私要求的...

基于JFinal的后台业务框架通用模块

jcbase是基于JFinal2.x的后台业务框架通用模块,包括系统权限模块、APP版本管理、日志管理、数据字典等使用的技术要点后端使用JFinal2.x前端页面是基于acev1.3模板改造的,更方便...

PHOTOSHOP图层技巧(掌握photoshop合并图层技巧)

你会图层吗?不会?喔,那你肯定不会PHOTOSHOP。为什么那么说呢?因为图层可以说是PHOTOSHOP的核心,几乎PHOTOSHOP所有的应用都是基于图层的,很多强劲的图像处理功能也是图层所提供的,...

Cadence Allegro背钻设置详细介绍教程

CadenceAllegro背钻设置详细介绍教程...

Pt中间层显著降低PEM水电解电子传输阻抗

在质子交换膜水电解(PEMWE)中,阳极OER的Ir基催化剂成本高昂,成为制约产业化的重要瓶颈。虽然非晶态IrOx具有高OER活性,但其电导率较差、与多孔钛PTL之间接触不良,往往导致催化剂层利用率低...

GIMP 教程:制作 Duotone 双色调效果

今天我们学习如何使用GIMP这款强大的开源图像编辑器,制作流行的Duotone(双色调)效果。Duotone效果的核心原理,是将图像的色调信息映射到两种主要颜色上。通常,一种颜色用于图像的亮部...

CAD打印的时候线条没了?原来是这些设置出了错

每当我们辛辛苦苦绘制完一张图纸之后,打印出图的时候总会出现各种各样的问题,不知道大家有没有遇到这种情况:在预览的时候还一切正常,但是打印出来之后就会发现很多线条都会不见了或者部分缺失。那么到底是怎么一...

取消回复欢迎 发表评论: