配置SSL/TSL以及ca证书的生成
x-pack安装
1.elasticsearch没给节点都需要安装x-pack
elasticsearch-plugin install x-pack
2.启动elasticsearch
3.自定义设置密码
./bin/x-pack/setup-passwords interactive
三个内置账号根据提示为其设置密码
也可以自动生产密码
./bin/x-pack/setup-passwords auto
三个内置账号
username | role | 权限 |
---|---|---|
elastic | superuser | 内置的超级用户 |
kibana | kibana_system | 用户kibana用来连接elasticsearch并与之通信。Kibana服务器以该用户身份提交请求以访问集群监视API和 .kibana索引。不能访问index。 |
logstash_system | logstash_system | 用户Logstash在Elasticsearch中存储监控信息时使用 |
也可以在kibana通过DSL语句设置密码
eg:
POST _xpack/security/user/kibana/_password
{
"password": "elastic"
}
4.kibana安装x-pack
kibana-plugin install x-pack
5.在kibana.yml中添加两行
elasticsearch.username: "username"
elasticsearch.password: "password"
7.启动kibana
Security模块的使用:
方式一:界面操作
kibana-> management -> security模块
方式二:DSL语句基于角色的访问控制
eg:
POST /_xpack/security/role/rolename
{
"run_as": [ "clicks_watcher_1" ]
"cluster": [ "monitor" ],
"indices": [
{
"names": [ "events-*" ],
"privileges": [ "read" ],
"field_security" : {
"grant" : [ "category", "@timestamp", "message" ]
},
"query": "{\"match\": {\"category\": \"click\"}}"
}
]
}
角色管理API:
https://www.elastic.co/guide/en/elasticsearch/reference/6.0/security-api-roles.html
用户管理API:
https://www.elastic.co/guide/en/elasticsearch/reference/6.0/security-api-users.html
将用户和组映射到角色API:
https://www.elastic.co/guide/en/x-pack/6.0/mapping-roles.html#ldap-role-mapping
设置字段和文档级别的安全性:
https://www.elastic.co/guide/en/x-pack/6.0/field-and-document-access-control.html
安全特权
https://www.elastic.co/guide/en/x-pack/6.0/security-privileges.html#privileges-list-cluster
x-pack内置角色
https://www.elastic.co/guide/en/x-pack/6.0/built-in-roles.html
eg:
ingest_admin #授予访问权限以管理所有索引模板和所有摄取管道配置。这个角色不能提供创建索引的能力; 这些特权必须在一个单独的角色中定义。
kibana_dashboard_only_user #授予对Kibana仪表板的访问权限以及对.kibana索引的只读权限。 这个角色无法访问Kibana中的编辑工具。
kibana_system #授予Kibana系统用户读取和写入Kibana索引所需的访问权限,管理索引模板并检查Elasticsearch集群的可用性。 此角色授予对.monitoring- 索引的读取访问权限以及对.reporting- 索引的读取和写入访问权限。
kibana_user #授予Kibana用户所需的最低权限。 此角色授予访问集群的Kibana索引和授予监视权限。
logstash_admin #授予访问用于管理配置的.logstash *索引的权限。
logstash_system #授予Logstash系统用户所需的访问权限,以将系统级别的数据(如监视)发送给Elasticsearch。不应将此角色分配给用户,因为授予的权限可能会在不同版本之间发生变化。此角色不提供对logstash索引的访问权限,不适合在Logstash管道中使用。
machine_learning_admin #授予manage_ml群集权限并读取.ml- *索引的访问权限。
machine_learning_user #授予查看X-Pack机器学习配置,状态和结果所需的最低权限。此角色授予monitor_ml集群特权,并可以读取.ml-notifications和.ml-anomalies *索引,以存储机器学习结果。
monitoring_user #授予除使用Kibana所需的X-Pack监视用户以外的任何用户所需的最低权限。 这个角色允许访问监控指标。 监控用户也应该分配kibana_user角色。
remote_monitoring_agent #授予远程监视代理程序将数据写入此群集所需的最低权限。
reporting_user #授予使用Kibana所需的X-Pack报告用户所需的特定权限。 这个角色允许访问报告指数。 还应该为报告用户分配kibana_user角色和一个授予他们访问将用于生成报告的数据的角色。
superuser #授予对群集的完全访问权限,包括所有索引和数据。 具有超级用户角色的用户还可以管理用户和角色,并模拟系统中的任何其他用户。 由于此角色的宽容性质,在将其分配给用户时要格外小心。
transport_client #通过Java传输客户端授予访问集群所需的权限。 Java传输客户端使用节点活性API和群集状态API(当启用嗅探时)获取有关群集中节点的信息。 如果他们使用传输客户端,请为您的用户分配此角色。使用传输客户端有效地意味着用户被授予访问群集状态的权限。这意味着用户可以查看所有索引,索引模板,映射,节点以及集群基本所有内容的元数据。但是,此角色不授予查看所有索引中的数据的权限。
watcher_admin #授予对.watches索引的写入权限,读取对监视历史记录的访问权限和触发的监视索引,并允许执行所有监视器操作。
watcher_user #授予读取.watches索引,获取观看动作和观察者统计信息的权限。
可以分配给角色的权限
cluster权限
权限 | 详情 |
---|---|
all | 所有集群管理操作,如快照,节点关闭/重新启动,设置更新,重新路由或管理用户和角色。 |
monitor | 所有集群只读操作,如集群运行状况,热线程,节点信息,节点和集群统计信息,快照/恢复状态,等待集群任务 |
monitor_ml | 所有只读机器学习操作,例如获取有关数据传输,作业,模型快照或结果的信息。 |
monitor_watcher | 所有只读操作,例如获取watch和watcher统计信息。 |
manage | 构建monitor并添加更改集群中值的集群操作。这包括快照,更新设置和重新路由。此特权不包括管理安全性的能力。 |
manage_index_templates | 索引模板上的所有操作。 |
manage_ml | 所有机器学习操作,例如创建和删除数据传输,作业和模型快照。数据处理以具有提升特权的系统用户身份运行,包括读取所有索引的权限。 |
manage_pipeline | 摄取管道的所有操作。 |
manage_security | 所有与安全相关的操作,例如对用户和角色的CRUD操作以及缓存清除。 |
manage_watcher | 所有观察者操作,例如放置watches,执行,激活或确认。Watches作为具有提升特权的系统用户运行,包括读取和写入所有索引的权限。Watches作为具有提升特权的系统用户运行,包括读取和写入所有索引的权限。 |
transport_client | 传输客户端连接所需的所有权限。远程群集需要启用跨级群搜索。 |
indices权限
权限 | 详情 |
---|---|
all | 索引上的任何操作 |
monitor | 监控所需的所有操作(恢复,细分信息,索引统计信息和状态)。 |
manage | 所有monitor特权加索引管理(别名,分析,缓存清除,关闭,删除,存在,刷新,映射,打开,强制合并,刷新,设置,搜索分片,模板,验证)。 |
view_index_metadata | 对索引元数据(别名,别名存在,获取索引,存在,字段映射,映射,搜索分片,类型存在,验证,warmers,设置)进行只读访问。此特权主要供Kibana用户使用。 |
read | 只读操作(计数,解释,获取,mget,获取索引脚本,更多像这样,多渗透/搜索/ termvector,渗透,滚动,clear_scroll,搜索,建议,tv)。 |
read_cross_cluster | 只读访问来自远程集群的搜索操作。 |
index | 索引和更新文件。还授予对更新映射操作的访问权限。 |
create | 索引文件。还授予对更新映射操作的访问权限。 |
delete | 删除文件。 |
write | 对文档执行所有写入操作的权限,包括索引,更新和删除文档以及执行批量操作的权限。还授予对更新映射操作的访问权限。 |
delete_index | 删除索引。 |
create_index | 创建索引。创建索引请求可能包含在创建索引时添加到索引的别名。在这种情况下,该请求最好有manage权限,同时设置索引和别名。 |