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

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

yuyutoo 2024-10-16 15:45 5 浏览 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. 登录

相关推荐

Mysql和Oracle实现序列自增(oracle创建序列的sql)

Mysql和Oracle实现序列自增/*ORACLE设置自增序列oracle本身不支持如mysql的AUTO_INCREMENT自增方式,我们可以用序列加触发器的形式实现,假如有一个表T_WORKM...

关于Oracle数据库12c 新特性总结(oracle数据库19c与12c)

概述今天主要简单介绍一下Oracle12c的一些新特性,仅供参考。参考:http://docs.oracle.com/database/121/NEWFT/chapter12102.htm#NEWFT...

MySQL CREATE TABLE 简单设计模板交流

推荐用MySQL8.0(2018/4/19发布,开发者说同比5.7快2倍)或同类型以上版本....

mysql学习9:创建数据库(mysql5.5创建数据库)

前言:我也是在学习过程中,不对的地方请谅解showdatabases;#查看数据库表createdatabasename...

MySQL面试题-CREATE TABLE AS 与CREATE TABLE LIKE的区别

执行"CREATETABLE新表ASSELECT*FROM原表;"后,新表与原表的字段一致,但主键、索引不会复制到新表,会把原表的表记录复制到新表。...

Nike Dunk High Volt 和 Bright Spruce 预计将于 12 月推出

在街上看到的PandaDunk的超载可能让一些球鞋迷们望而却步,但Dunk的浪潮仍然强劲,看不到尽头。我们看到的很多版本都是为女性和儿童制作的,这种新配色为后者引入了一种令人耳目一新的新选择,而...

美国多功能舰载雷达及美国海军舰载多功能雷达系统技术介绍

多功能雷达AN/SPY-1的特性和技术能力,该雷达已经在美国海军服役了30多年,其修改-AN/SPY-1A、AN/SPY-1B(V)、AN/SPY-1D、AN/SPY-1D(V),以及雷神...

汽车音响怎么玩,安装技术知识(汽车音响怎么玩,安装技术知识视频)

全面分析汽车音响使用或安装技术常识一:主机是大多数人最熟习的音响器材,有关主机的各种性能及规格,也是耳熟能详的事,以下是一些在使用或安装时,比较需要注意的事项:LOUDNESS:几年前的主机,此按...

【推荐】ProAc Response系列扬声器逐个看

有考牌(公认好声音)扬声器之称ProAcTablette小音箱,相信不少音响发烧友都曾经,或者现在依然持有,正当大家逐渐掌握Tablette的摆位设定与器材配搭之后,下一步就会考虑升级至表现更全...

#本站首晒# 漂洋过海来看你 — BLACK&amp;DECKER 百得 BDH2000L无绳吸尘器 开箱

作者:初吻给了烟sco混迹张大妈时日不短了,手没少剁。家里有了汪星人,吸尘器使用频率相当高,偶尔零星打扫用卧式的实在麻烦(汪星人:你这分明是找借口,我掉毛是满屋子都有,铲屎君都是用卧式满屋子吸的,你...

专题|一个品牌一件产品(英国篇)之Quested(罗杰之声)

Quested(罗杰之声)代表产品:Q212FS品牌介绍Quested(罗杰之声)是录音监听领域的传奇品牌,由英国录音师RogerQuested于1985年创立。在成立Quested之前,Roger...

常用半导体中英对照表(建议收藏)(半导体英文术语)

作为一个源自国外的技术,半导体产业涉及许多英文术语。加之从业者很多都有海外经历或习惯于用英文表达相关技术和工艺节点,这就导致许多英文术语翻译成中文后,仍有不少人照应不上或不知如何翻译。为此,我们整理了...

Fyne Audio F502SP 2.5音路低音反射式落地音箱评测

FyneAudio的F500系列,有新成员了!不过,新成员不是新的款式,却是根据原有款式提出特别版。特别版产品在原有型号后标注了SP字样,意思是SpecialProduction。Fyne一共推出...

有哪些免费的内存数据库(In-Memory Database)

以下是一些常见的免费的内存数据库:1.Redis:Redis是一个开源的内存数据库,它支持多种数据结构,如字符串、哈希表、列表、集合和有序集合。Redis提供了快速的读写操作,并且支持持久化数据到磁...

RazorSQL Mac版(SQL数据库查询工具)

RazorSQLMac特别版是一款看似简单实则功能非常出色的SQL数据库查询、编辑、浏览和管理工具。RazorSQLformac特别版可以帮你管理多个数据库,支持主流的30多种数据库,包括Ca...

取消回复欢迎 发表评论: