Elasticsearch-安全特性(Security)

Elasticsearch安全特性,介绍加密通讯的基本原理、开启安全特性的操作步骤、如何生成节点证书、用户认证和相关概念等。
基于7.11版本。

安全特性

Elastic Stack安全功能使您可以轻松保护集群。

Elasticsearch集群保护方式:

  • 通过密码保护,基于角色的访问控制和IP过滤防止未经授权的访问。
  • 使用SSL/TLS加密保留数据的完整性。
  • 维护审计跟踪,知道谁在对集群进行操作

Elasticsearch配置安全的简易步骤:

  1. 集群内每个节点设置为xpack.security.enabled: true
  2. 为节点间通信配置TLS/SSL【#加密通讯】
  3. 启动Elasticsearch
  4. 设置内置用户和密码(命令:elasticsearch-setup-passwords auto
  5. 设置角色和用户,控制对Elasticsearch的访问
  6. (可选)启用审计功能xpack.security.audit.enabled: true,并重启集群

1 加密通讯

未启用加密的群集将以纯文本格式(包括密码)发送所有数据。如果启用了Elasticsearch安全功能,除非您具有试用许可证,否则必须配置SSL/TLS进行节点间通信。

  • Elasticsearch集群节点间通信使用SSL/TLS加密,保护节点安全有助于降低基于网络的攻击的风险
  • 要求节点使用SSL证书添加到集群时进行身份验证,新节点的身份验证有助于防止流氓节点加入群集并通过复制接收数据

Elasticsearch集群配置STL

  1. 为每个Elasticsearch节点生成一个私钥和X.509证书【#生成节点证书】
  2. 在集群中配置每个节点,以使用其签名证书标识自己,并在传输层上启用TLS。还可以选择在HTTP层上启用TLS
  3. 配置Kibana以加密浏览器和Kibana服务器之间的通信,并通过HTTPS连接到Elasticsearch
  4. 配置其他Elastic产品使用加密通信

1.1 加密集群中节点之间的通信

  1. 生成节点证书【#1.2 生成节点证书】
  2. 启用TLS并制定访问节点证书所需要的信息
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
  1. (可选)如果你用密码保护节点的证书,将密码添加到 Elasticsearch 密钥存储库
  2. 重启Elasticsearch

1.2 加密HTTP客户端通信

  1. 生成HTTP证书【#1.3 生成节点证书】
  2. 启用TLS并制定访问节点证书所需要的信息
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: "http.p12"
  1. (可选)如果你用密码保护节点的证书,将密码添加到 Elasticsearch 密钥存储库
  2. 重启Elasticsearch

1.3 生成节点证书

  1. (可选)为 Elasticsearch 集群创建一个证书颁发机构。

./bin/elasticsearch-certutil ca
输出文件是一个PKCS#12密钥存储库,其中包含证书颁发机构的公共证书和用于签署节点证书的私钥。

  1. 为集群中的每个节点生成证书和私钥
    交互形式:
    ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
    命令形式:
    ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --dns localhost --ip 127.0.0.1,::1 --out config/certs/node-1.p12
    输出是一个包含节点证书、节点密钥和CA证书的PKCS#12密钥存储库。

  2. (可选)生成专门用于加密 HTTP 客户端通信的附加证书。

./bin/elasticsearch-certutil http
命令步骤如下:

## Do you wish to generate a Certificate Signing Request (CSR)? - 是否生成证书签名请求(CSR)?
Generate a CSR? [y/N]N

## Do you have an existing Certificate Authority (CA) key-pair that you wish to use to sign your certificate? -是否有一个现有的证书颁发机构(CA)密钥对,您希望使用它来签署证书?
Use an existing CA? [y/N]y

## What is the path to your CA? - 你的CA路径在哪里?
CA Path: /data/elk/elasticsearch-7.10.2/elastic-stack-ca.p12

## How long should your certificates be valid? - 您的证书应该多长时间有效?
For how long should your certificate be valid? [5y] 3Y

## Do you wish to generate one certificate per node? - 是否希望每个节点生成一个证书?
Generate a certificate per node? [y/N]N

## Which hostnames will be used to connect to your nodes? - 哪些主机名将用于连接到您的节点?
Is this correct [Y/n]Y

## Which IP addresses will be used to connect to your nodes? - 哪些IP地址将用于连接到您的节点?
Is this correct [Y/n]Y

## Other certificate options - 其他证书选项
Do you wish to change any of these options? [y/N]N
输出是一个.zip 文件,包含 Elasticsearch 和 Kibana 各自的一个目录

输出文件elasticsearch-ssl-http.zip

/elasticsearch
|_ README.txt
|_ http.p12
|_ sample-elasticsearch.yml

/kibana
|_ README.txt
|_ elasticsearch-ca.pem
|_ sample-kibana.yml
  1. 将节点证书复制到适当的位置
  • 在每个Elasticsearch节点上的配置目录中创建文件夹certs。如:/home/es/config/certs。
  • 在每个节点上,将创建的证书复制到certs目录(通常是一个.p12文件)
  • 如果生成了HTTP证书,复制http.p12到certs目录
  • 配置其他Elastic产品,将证书复制到相关目录

2 用户认证

安全功能提供了基于角色的访问控制(RBAC)机制,该机制使您可以通过为角色分配特权并将角色分配给用户或组来授权用户。
安全功能还提供了基于属性的访问控制(ABAC)机制,使您可以使用属性来限制对搜索查询和聚合中文档的访问。

role-based access control (RBAC)

  • Secured Resource(访问受限的资源):索引,别名,文档,字段,用户和Elasticsearch群集本身都是受保护对象。
  • Privilege(特权):对受保护的资源执行的一个或多个动作的命名组,如read是索引特权,代表所有启用读取已索引/存储的数据的操作。
  • Permissions(权限):针对受保护资源的一组一个或多个特权,权限可以很容易地用语言来描述。
  • Role(角色):一组命名的权限
  • User(用户):经过身份验证的用户
  • Group(用户组):用户所属的一个或多个组

内置用户

  • 这些内置用户存储在指定的.security索引中,由Elasticsearch管理。
  • elasticsearch-setup-passwords工具是首次设置内置用户密码的最简单方法

基于令牌的身份验证

  • token-service:访问令牌(根据OAuth2规范生成访问令牌和刷新令牌)是短期令牌,默认情况下20分钟后过期。(Authorization: Bearer xxx)
  • api-key-service:API秘钥,默认情况下API密钥不会过期,创建时,可以指定到期时间和权限。(Authorization: ApiKey xxx)

3 相关概念

  • SSL(Secure Socket Layer)/TLS(Transport Layer Security)
  • 数字证书:互联网通讯中标志通讯各方身份信息的一系列数据
  • X.509:是一种数字证书(Public Key Certificates)的格式标准,主要定义了证书中应该包含哪些内容。
    • HTTPS依赖的TLS/SSL证书使用的就是使用的X.509格式。一个X.509 Certificate包含一个Public Key和一个身份信息(a hostname, or an organization, or an individual),它要么是被CA签发的要么是自签发的。
  • CA(Certificate Authority):颁发数字证书的权威机构,承担公钥体系中公钥的合法性检验的责任。
  • 编码格式:用来存储和发送公钥/私钥、证书和其他数据的文件格式;分为DER和PEM
    • DER(Distinguished Encoding Rules):二进制不可读,常用于Windows系统
    • PEM(Privacy-Enhanced Mail):内容是BASE64编码,常用于*NIX系统
  • PKCS(Public Key Cryptography Standards):公钥密码学标准
    • PKCS#12:描述个人信息交换语法标准,通常用来存储Private Keys和Public Key Certificates(例如前面提到的X.509)的文件格式,使用基于密码的对称密钥进行保护。

4 参考文档

安全集群
加密通讯

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容