OpenSearch
opensearch安装
OpenSearch
1. OpenSearch插件
OpenSearch插件的前身就是Open Distro。这些插件是默认安装的。他们被安装在OPENSEARCH_HOME/plugins
目录下面。这些插件很大程度上丰富了整个系统的功能,但是到目前位置,社区上的很多插件还是适配ES的,而不是OpenSearch。如果我们强行把ES上的插件搬到OpenSearch用,大概率会起不来。
2. OpenSearch集群
2.1 节点的类型
节点类型 | 作用 | 机器配置 |
---|---|---|
master | 索引的创建或删除 跟踪哪些节点是集群的一部分 决定哪些分片分配给相关的节点 | CPU 内存 消耗一般 |
Master-eligible | 参与集群选举 | CPU 内存 消耗一般 |
data | 存储索引数据 对文档进行增删改查,聚合操作 | 资源大户,主要消耗磁盘,内存 |
Ingest | Ingest节点和集群中的其他节点一样,但是它能够创建多个处理器管道,用以修改传入文档。类似 最常用的Logstash过滤器已被实现为处理器。 Ingest节点 可用于执行常见的数据转换和丰富。 处理器配置为形成管道。 在写入时,Ingest Node有20个内置处理器,例如grok,date,gsub,小写/大写,删除和重命名 在批量请求或索引操作之前,Ingest节点拦截请求,并对文档进行处理。 | CPU 内存 消耗一般 |
Coordinating | 协调节点,是一种角色,而不是真实的Elasticsearch的节点,你没有办法通过配置项来配置哪个节点为协调节点。集群中的任何节点,都可以充当协调节点的角色。当一个节点A收到用户的查询请求后,会把查询子句分发到其它的节点,然后合并各个节点返回的查询结果,最后返回一个完整的数据集给用户。在这个过程中,节点A扮演的就是协调节点的角色。 | 资源大户,主要消耗磁盘,内存 |
2.2 常见的部署方式
常见的集群部署方式可以归为两大类,一类是使用SaaS服务,比如AWS的OpenSearch服务,一类是自己搭建。而自己搭建的集群也有两种大类,一个是部署在虚拟机或者实例上,一个是在k8s集群中部署。
在实例上部署:
在k8s上部署
3. 安装集群
我们这里使用二进制包的方式来部属,让大家更容易理解架构
3.1 准备安装
3.1.1 下载安装包
进入下载界面,下载最新版OpenSearch和OpenSearch-Dashboard,如果要下载历史版本,就要去github去下载了。
wget https://artifacts.opensearch.org/releases/bundle/opensearch/1.3.2/opensearch-1.3.2-linux-x64.tar.gz
wget https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/1.3.2/opensearch-dashboards-1.3.2-linux-x64.tar.gz
3.1.2 初始化操作系统
-
文件系统:创建三个文件架来分别存放OpenSearch数据(data)、日志(logs)、快照(snapshots)
# 二进制包的大小基本不会变 # 日志是有rotation机制的,大小也基本不会变 # 数据盘比较重要,为了保证性能,在有条件的情况下,建议使用SSD硬盘 mkdir -p /data/opensearch/{data,logs,snapshot} mkdir -p /data/opensearch-dashboards/{data,logs,snapshot}
-
解压二进制包到/data目录下
tar xf opensearch-1.3.2-linux-x64.tar.gz -C /data/opensearch ln -sf /data/opensearch/opensearch-1.3.2 /data/opensearch/opensearch tar xf opensearch-dashboards-1.3.2-linux-x64.tar.gz -C /data/opensearch-dashboards ln -sf /data/opensearch-dashboards/opensearch-dashboards-1.3.2 /data/opensearch-dashboards/opensearch-dashboards
-
配置Linux内核参数,修改/etc/sysctl.conf
vm.max_map_count=262144
执行
sudo sysctl -p
重新加载内核 -
设置 Java 堆的大小(我们推荐系统 RAM 的一半),官方建议修改环境变量
OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m
,我这里修改了/data/opensearch/opensearch/config/jvm.options。-Xms32g -Xmx32g
-
修改打开文件数,
nofile 65536
,我们这里使用的是RHEL7,修改/etc/security/limits.d/20-nproc.conf
,增加下面一行opensearch soft nproc 65536
-
创建opensearch用户,整个opensearch和opensearch-dashboard都需要使用opensearch用户来运行
useradd -r opensearch -s /usr/sbin/nologin chown -R opensearch:opensearch /data/opensearch*
-
创建OpenSearch启动Unit
cat >/lib/systemd/system/opensearch.service <<-\EOF [Unit] Description=OpenSearch Documentation=https://opensearch.org Wants=network-online.target After=network-online.target [Service] Type=simple RuntimeDirectory=opensearch PrivateTmp=true User=opensearch Group=opensearch Environment=OPENSEARCH_HOME=/data/opensearch/opensearch Environment=OPENSEARCH_PATH_CONF=/data/opensearch/opensearch/config #Environment=OPENSEARCH_JAVA_HOME=/usr/lib/jvm/java-11-amazon-corretto #Environment=OPENSEARCH_JAVA_OPTS= #Environment=RESTART_ON_UPGRADE=true Environment=OPENSEARCH_STARTUP_SLEEP_TIME=5 Environment=OPENSEARCH_SD_NOTIFY=true Environment=PID_DIR=/run/opensearch WorkingDirectory=/data/opensearch/opensearch ExecStart=/data/opensearch/opensearch/bin/opensearch -p ${PID_DIR}/opensearch.pid --quiet StandardOutput=journal StandardError=inherit # Specifies the maximum file descriptor number that can be opened by this process LimitNOFILE=65535 # Specifies the maximum number of processes LimitNPROC=4096 # Specifies the maximum size of virtual memory LimitAS=infinity LimitMEMLOCK=infinity # Specifies the maximum file size LimitFSIZE=infinity # Disable timeout logic and wait until process is stopped TimeoutStopSec=0 # SIGTERM signal is used to stop the Java process KillSignal=SIGTERM # Send the signal only to the JVM rather than its control group KillMode=process # Java process is never killed SendSIGKILL=no # When a JVM receives a SIGTERM signal it exits with code 143 SuccessExitStatus=143 # Allow a slow startup before the systemd notifier module kicks in to extend the timeout TimeoutStartSec=75 [Install] WantedBy=multi-user.target EOF systemctl daemon-reload
-
创建OpenSearch Dashboard启动Unit
cat > /lib/systemd/system/opensearch-dashboards.service <<-\EOF [Unit] Description=OpenSearch Dashboards Wants=network-online.target After=network-online.target [Service] Type=simple User=opensearch Group=opensearch Environment=KILL_ON_STOP_TIMEOUT=0 Environment=OSD_PATH_CONF="/data/opensearch-dashboards/opensearch-dashboards/config" WorkingDirectory=/data/opensearch-dashboards/opensearch-dashboards ExecStart=/data/opensearch-dashboards/opensearch-dashboards/bin/opensearch-dashboards Restart=always RestartSec=3 [Install] WantedBy=multi-user.target EOF systemctl daemon-reload
-
创建OpenSearch performance-analyzer启动Unit
cat > /lib/systemd/system/opensearch-performance-analyzer.service <<-\EOF [Unit] Description=OpenSearch Performance Analyzer [Service] Type=simple nvironment=OPENSEARCH_HOME=/data/opensearch/opensearch Environment=OPENSEARCH_PATH_CONF=/data/opensearch/opensearch/config Environment=PID_DIR=/run/opensearch #Environment=OPENSEARCH_JAVA_HOME=/usr/lib/jvm/java-11-amazon-corretto #Environment=OPENSEARCH_JAVA_OPTS= #Environment=RESTART_ON_UPGRADE=true Environment=OPENSEARCH_STARTUP_SLEEP_TIME=5 Environment=OPENSEARCH_SD_NOTIFY=true ExecStart=/data/opensearch/opensearch/bin/opensearch-performance-analyzer/performance-analyzer-agent-cli Restart=on-failure User=opensearch Group=opensearch WorkingDirectory=/data/opensearch/opensearch [Install] WantedBy=multi-user.target EOF systemctl daemon-reload
3.2 证书
证书是安全插件所提供的功能,包放在/data/opensearch/opensearch/plugins/opensearch-security
下面,配置证书的位置是在主配置文件opensearch.yml里面配置。证书文件必须在config
目录下,使用相对路径指定。
单机启动的时候会创建一些证书,我们可以把这些证书拷贝到其他节点上直接使用。但是在生产系统中,我们可能要使用管理员提供的证书。
如果您无权访问您的组织的证书颁发机构 (CA),并且希望将 OpenSearch 用于非演示目的,您可以使用OpenSSL生成您自己的自签名证书。
您可能可以在您的操作系统的包管理器中找到 OpenSSL。
在 CentOS 上,使用 Yum:
sudo yum install openssl
在 macOS 上,使用Homebrew:
brew install openssl
在Debian/Ubuntu上,使用apt:
apt install openssl
官方提供了一个页面专门说自建证书。我们把主要步骤列在下面,需要注意的是,每个节点都需要创建自己的证书,然后使用公司的私钥去签一下。如果我们要使用公司的证书,需要把每台node的私钥生成的证书发给CA管理员去签署,而不是把域名丢给管理员,让管理员去签域名的证书。
证书一共有三组:
- admin证书: 是用来做授权的时候数据加密的
- node证书:是用来做数据同步时候数据加密的
- client证书:是用来做做客户端和服务端数据加密的
3.2.1 生成CA证书
生成CA私钥
openssl genrsa -out root-ca-key.pem 2048
生成CA证书
openssl req -new -x509 -sha256 -key root-ca-key.pem -out root-ca.pem -days 3650 -subj "/C=CN/ST=Beijing/L=Beijing/O=公司名称/OU=业务线/CN=ROOT"
3.2.2 生成管理员证书
要生成管理员证书,首先创建一个新密钥:
openssl genrsa -out admin-key-temp.pem 2048
然后使用与 PKCS#12 兼容的算法 (3DES) 将该密钥转换为 PKCS#8 格式以便在 Java 中使用:
openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out admin-key.pem
接下来,创建证书签名请求 (CSR)。此文件充当 CA 的签名证书应用程序:
openssl req -new -key admin-key.pem -out admin.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=公司名称/OU=业务线/CN=ADMIN"
按照提示填写详细信息。您无需指定质询密码。如OpenSSL Cookbook中所述,“拥有质询密码不会以任何方式提高 CSR 的安全性。”
最后,生成证书本身:
openssl x509 -req -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem -days 3650
就像根证书一样,使用-days
选项指定超过 30 天的到期日期。
3.2.3 生成节点和客户端证书(可选)
按照生成管理员证书中的步骤为每个节点生成新证书,并根据需要生成尽可能多的客户端证书。例如,您可以为 OpenSearch Dashboards 生成一个客户端证书,为 Python 客户端生成另一个。每个证书都应使用自己的私钥。
如果您生成节点证书并plugins.security.ssl.transport.enforce_hostname_verification
设置为true
(默认),请确保为证书指定与预期节点的主机名匹配的公用名 (CN)。如果要在所有节点上使用相同的节点证书(不推荐),请将主机名验证设置为false
. 有关详细信息,请参阅配置 TLS 证书。
3.2.3.1 生成节点证书
-
opensearch-node1
openssl genrsa -out opensearch-node1-key-temp.pem 2048 openssl pkcs8 -inform PEM -outform PEM -in opensearch-node1-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out opensearch-node1-key.pem openssl req -new -key opensearch-node1-key.pem -subj "/C=CN/ST=Beijing/L=Beijing/O=公司名称/OU=业务线/CN=主机名" -out opensearch-node1.csr openssl x509 -req -in opensearch-node1.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out opensearch-node1.pem -days 3650
-
opensearch-node2
openssl genrsa -out opensearch-node2-key-temp.pem 2048 openssl pkcs8 -inform PEM -outform PEM -in opensearch-node2-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out opensearch-node2-key.pem openssl req -new -key opensearch-node2-key.pem -subj "/C=CN/ST=Beijing/L=Beijing/O=公司名称/OU=业务线/CN=主机名" -out opensearch-node2.csr openssl x509 -req -in opensearch-node2.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out opensearch-node2.pem -days 3650
-
opensearch-node3
openssl genrsa -out opensearch-node3-key-temp.pem 2048 openssl pkcs8 -inform PEM -outform PEM -in opensearch-node3-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out opensearch-node3-key.pem openssl req -new -key opensearch-node3-key.pem -subj "/C=CN/ST=Beijing/L=Beijing/O=公司名称/OU=业务线/CN=主机名" -out opensearch-node3.csr openssl x509 -req -in opensearch-node3.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out opensearch-node3.pem -days 3650
3.2.3.2 生成客户端证书
略……
3.2.3.3 清理不使用的文件
find ./ -type f -name "*.csr" -o -name "*temp*"|xargs rm -f
3.2.4 示例脚本
如果您已经知道证书详细信息并且不想以交互方式指定它们,请在您的和 CSR 命令中使用该-subj
选项。root-ca.pem
此脚本创建一个根证书、管理员证书、两个节点证书和一个客户端证书,所有证书的有效期均为两年(730 天):
#!/bin/sh
# Root CA
openssl genrsa -out root-ca-key.pem 2048
openssl req -new -x509 -sha256 -key root-ca-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=ROOT" -out root-ca.pem -days 730
# Admin cert
openssl genrsa -out admin-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out admin-key.pem
openssl req -new -key admin-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=ADMIN" -out admin.csr
openssl x509 -req -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem -days 730
# Node cert 1
openssl genrsa -out node1-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in node1-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out node1-key.pem
openssl req -new -key node1-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=node1.example.com" -out node1.csr
openssl x509 -req -in node1.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node1.pem -days 730
# Node cert 2
openssl genrsa -out node2-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in node2-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out node2-key.pem
openssl req -new -key node2-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=node2.example.com" -out node2.csr
openssl x509 -req -in node2.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node2.pem -days 730
# Client cert
openssl genrsa -out client-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in client-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out client-key.pem
openssl req -new -key client-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=CLIENT" -out client.csr
openssl x509 -req -in client.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out client.pem -days 730
# Cleanup
rm admin-key-temp.pem
rm admin.csr
rm node1-key-temp.pem
rm node1.csr
rm node2-key-temp.pem
rm node2.csr
rm client-key-temp.pem
rm client.csr
3.2.5 配置TLS证书
TLS 配置在opensearch.yml
. 有两个主要的配置部分:传输层和 REST 层。TLS 对于 REST 层是可选的,对于传输层是强制性的。
您可以在GitHub上找到包含所有选项的示例配置模板。
3.2.5.1 配置X.509 PEM证书
传输层TLS
plugins.security.ssl.transport.pemcert_filepath: certs/opensearch-node1.pem
plugins.security.ssl.transport.pemkey_filepath: certs/opensearch-node1-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: certs/root-ca.pem
- plugins.security.ssl.transport.pemcert_filepath: X.509 节点证书链(PEM 格式)的路径,必须在
config
目录下,使用相对路径指定。- plugins.security.ssl.transport.pemkey_filepath: 证书密钥文件 (PKCS #8) 的路径,该文件必须在
config
目录下,使用相对路径指定。- plugins.security.ssl.transport.pemtrustedcas_filepath: 根 CA(PEM 格式)的路径,必须在
config
目录下,使用相对路径指定。
REST层TLS
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: certs/opensearch-node1.pem
plugins.security.ssl.http.pemkey_filepath: certs/opensearch-node1-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: certs/root-ca.pem
- plugins.security.ssl.http.enabled: 是否在 REST 层启用 TLS。如果启用,则仅允许使用 HTTPS。
- plugins.security.ssl.http.pemcert_filepath: X.509 节点证书链(PEM 格式)的路径,必须在
config
目录下,使用相对路径指定。- plugins.security.ssl.http.pemkey_filepath: 证书密钥文件 (PKCS #8) 的路径,该文件必须在
config
目录下,使用相对路径指定。- plugins.security.ssl.http.pemtrustedcas_filepath: 根 CA(PEM 格式)的路径,必须在
config
目录下,使用相对路径指定。
3.2.5.1 配置节点证书
安全插件需要识别集群间请求(即节点之间的请求)。配置节点证书的最简单方法是在opensearch.yml
,所有 DN必须包含在所有节点上的opensearch.yml
中 。安全插件支持通配符和正则表达式:
使用如下命令获取正确的subject
openssl x509 -subject -nameopt RFC2253 -noout -in opensearch-node1.pem
然后将输出复制并粘贴到opensearch.yml
.
plugins.security.nodes_dn:
- 'CN=opensearch-node*,OU=业务线,O=公司名称,L=Beijing,ST=Beijing,C=CN'
示例:
plugins.security.nodes_dn: - 'CN=node.other.com,OU=SSL,O=Test,L=Test,C=DE' - 'CN=*.example.com,OU=SSL,O=Test,L=Test,C=DE' - 'CN=elk-devcluster*' - '/CN=.*regex/'
3.2.5.2 配置管理员证书
管理员证书是具有执行管理任务的提升权限的常规客户端证书。 您需要管理员证书才能使用 plugins/opensearch-security/tools/securityadmin.sh 或 REST API 更改安全插件配置。 管理员证书在 opensearch.yml 中通过说明其 DN 进行配置:
plugins.security.authcz.admin_dn:
- 'CN=ADMIN,OU=业务线,O=公司名称,L=Beijing,ST=Beijing,C=CN'
3.2.5.3 主机名验证和DNS查找
除了根据根 CA 和/或中间 CA 验证 TLS 证书之外,安全插件还可以在传输层上应用额外的检查。
enforce_hostname_verification
启用后,安全插件会验证通信伙伴的主机名是否与证书中的主机名匹配。主机名取自证书的subject
或SAN
条目。例如,如果您的节点的主机名是node-0.example.com
,那么 TLS 证书中的主机名也必须设置node-0.example.com
为 。否则,将引发错误:
[ERROR][c.a.o.s.s.t.opensearchSecuritySSLNettyTransport] [WX6omJY] SSL Problem No name matching <hostname> found
[ERROR][c.a.o.s.s.t.opensearchSecuritySSLNettyTransport] [WX6omJY] SSL Problem Received fatal alert: certificate_unknown
此外,resolve_hostnames
启用后,安全插件会根据您的 DNS 解析(已验证的)主机名。如果主机名未解析,则会引发错误:
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.transport.resolve_hostname: false
3.3 配置
3.3.1 OpenSearch
配置文件位置在/data/opensearch/opensearch/config
下面
├── jvm.options # 和Java的参数有关
├── jvm.options.d
├── log4j2.properties # 和log4j相关的配置
├── opensearch.keystore # 系统默认的密码文件
├── opensearch-observability # 和这个插件相关的配置
├── opensearch-reports-scheduler # 和这个插件相关的配置
├── opensearch.yml # opensearch的主配置文件
本次配置的每个节点具备了node,master和coordinate所有的功能,配置文件中的选项配置如下。如果我们要针对节点做分工,给他们不同的职责,请参考这里
cluster.name: stg-opensearch-cluster
node.name: opensearch-node1
#node.attr.rack: r1
#node.roles [ master, data, ingest ]
path.data: /data/opensearch/data
path.logs: /data/opensearch/logs
path.repo: ["/data/opensearch/snapshot"]
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["10.0.0.3", "10.0.0.4","10.0.0.5"]
cluster.initial_master_nodes: ["10.0.0.3", "10.0.0.4", "10.0.0.5"]
gateway.recover_after_nodes: 3
action.destructive_requires_name: true
node.max_local_storage_nodes: 3
- cluster.name: 集群名称
- node.name: 节点名称
- #node.attr.rack: 向节点添加自定义属性
- #node.roles: 设置节点属性
- path.data: 存储数据的目录路径(用逗号分隔多个位置)
- path.logs: 日志文件路径
- path.repo: 快照存储路径
- bootstrap.memory_lock: 启动时锁定内存
- network.host: 将绑定地址设置为特定 IP(IPv4 或 IPv6)
- http.port: 为 HTTP 设置自定义端口
- discovery.seed_hosts: 在此节点启动时传递一个初始主机列表以执行发现
- cluster.initial_master_nodes: 使用一组初始的符合主节点的节点引导集群:
- gateway.recover_after_nodes: 在完整集群重启后阻止初始恢复,直到启动 N 个节点
- action.destructive_requires_name: 删除索引时需要明确的名称
- node.max_local_storage_nodes:
一个node上完整的配置如下,例子中以opensearch-node1为例,其他节点请修改节点相应信息。
cluster.name: stg-opensearch-cluster
node.name: opensearch-node1
path.data: /data/opensearch/data
path.logs: /data/opensearch/logs
path.repo: ["/data/opensearch/snapshot"]
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["10.0.0.3", "10.0.0.4","10.0.0.5"]
cluster.initial_master_nodes: ["10.0.0.3", "10.0.0.4","10.0.0.5"]
gateway.recover_after_nodes: 3
action.destructive_requires_name: true
node.max_local_storage_nodes: 3
plugins.security.ssl.transport.pemcert_filepath: certs/opensearch-node1.pem
plugins.security.ssl.transport.pemkey_filepath: certs/opensearch-node1-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: certs/root-ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.transport.resolve_hostname: false
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: certs/opensearch-node1.pem
plugins.security.ssl.http.pemkey_filepath: certs/opensearch-node1-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: certs/root-ca.pem
plugins.security.allow_default_init_securityindex: true
plugins.security.authcz.admin_dn:
- 'CN=ADMIN,OU=业务线,O=公司名称,L=Beijing,ST=Beijing,C=CN'
plugins.security.nodes_dn:
- 'CN=opensearch-node*,OU=业务线,O=公司名称,L=Beijing,ST=Beijing,C=CN'
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [".opendistro-alerting-config", ".opendistro-alerting-alert*", ".opendistro-anomaly-results*", ".opendistro-anomaly-detector*", ".opendistro-anomaly-checkpoints", ".opendistro-anomaly-detection-state", ".opendistro-reports-*", ".opendistro-notifications-*", ".opendistro-notebooks", ".opendistro-asynchronous-search-response*", ".replication-metadata-store"]
- plugins.security.allow_default_init_securityindex: 如果设置为 true,则 OpenSearch Security 将使用 config 目录中的文件自动初始化配置索引(如果索引不存在); 警告:这将使用众所周知的默认密码。仅在专用网络/环境中使用。
- plugins.security.audit.type: 审计日志事件的目的地
- plugins.security.enable_snapshot_restore_privilege: 默认情况下,普通用户可以恢复快照,如果他们有’cluster:admin/snapshot/restore’, ‘indices:admin/create’, 和’indices:data/write/index’的权限来恢复索引。为了禁止普通用户的快照恢复,设置’plugins.security.enable_snapshot_restore_privilege: false’。这使得只有由管理员 TLS 证书签署的快照恢复请求才被接受。只有当快照不包含全局状态并且不恢复’.opendistro_security’索引时,才能恢复快照。
- plugins.security.check_snapshot_restore_write_privileges: 如果设置了“plugins.security.check_snapshot_restore_write_privileges: false”,则省略额外的索引检查
- plugins.security.restapi.roles_enabled: 启用或禁用基于角色的对REST管