安全设置

安全插件提供了一系列 YAML 配置文件,用于存储定义安全插件如何管理集群内用户、角色和活动的必要设置。有关安全插件配置文件的完整列表,请参阅修改 YAML 文件

以下各节介绍了 UDB-SX 中的安全相关设置udbsx.yml。您可以udbsx.yml在 UDB-SX 配置中找到这些设置<udbsx-home>/config/udbsx.yml。要了解有关静态和动态设置的更多信息,请参阅配置 UDB-SX

常用设置

安全插件支持以下常用设置:

  • plugins.security.nodes_dn(静态):指定一组表示集群中其他节点的可分辨名称(DN)。此设置支持通配符和正则表达式。这些 DN 列表还会从安全索引中读取,此外还会从 YAML 配置文件中读取(当plugins.security.nodes_dn_dynamic_config_enabledtrue时)。如果此设置配置不正确,集群将无法形成,因为节点将无法相互信任,并会导致以下错误:传输客户端认证已不再支持

  • plugins.security.nodes_dn_dynamic_config_enabled(静态):适用于“跨集群”用例,即在需要管理列出的“节点 DN”且无需每次配置新的“跨集群”远程连接时都无需重启节点的情况下。 将 nodes_dn_dynamic_config_enabled 设置为 true 可启用超级管理员可调用的 Distinguished Names API,这些 API 提供了动态更新或检索节点 DN的方法。此设置仅在 plugins.security.cert.intercluster_request_evaluator_class 未设置的情况下有效。默认值为 false

  • plugins.security.authcz.admin_dn(静态):定义了应授予管理员权限的证书的 DNs。必填项。

  • plugins.security.roles_mapping_resolution(静态):定义了后端角色与安全角色之间的映射方式。 有效的值有:

    • MAPPING_ONLY(默认值):必须在 roles_mapping.yml 文件中明确配置映射关系。

    • BACKENDROLES_ONLY:后端角色直接映射到安全角色。roles_mapping.yml 文件中的设置将不起作用。

    • BOTH:后端角色既直接映射到安全角色,也通过 roles_mapping.yml 文件进行映射。

  • plugins.security.dls.mode(静态):设置文档级安全 (DLS) 评估模式。默认值为adaptive。请参阅如何设置 DLS 评估模式

  • plugins.security.compliance.salt(静态):用于生成字段掩码哈希值的盐值。长度至少为 32 个字符。仅允许使用 ASCII 字符。可选。

  • plugins.security.compliance.immutable_indices(静态):索引中标记为不可变的文档遵循“一次写入,多次读取”的模式。在这些索引中创建的文档无法更改,因此是不可变的。

  • config.dynamic.http.anonymous_auth_enabled(静态):启用匿名身份验证。这将导致所有 HTTP 身份验证器不进行质询。默认值为false

  • http.detailed_errors.enabled(静态):为针对 UDB-SX 集群执行的 REST 调用启用详细的错误消息。若设置为true,则会同时提供root_cause和错误代码。默认值为true

REST 管理 API 设置

安全插件支持以下 REST 管理 API 设置:

  • plugins.security.restapi.roles_enabled(静态):支持基于角色的方式对列出的角色访问 REST 管理 API 提供权限。角色之间用逗号分隔。默认情况下为空列表(不允许任何角色访问 REST 管理 API)。请参阅API 的访问控制

  • plugins.security.restapi.endpoints_disabled(静态):为特定角色禁用特定端点及其对应的 HTTP 方法。此设置的值构成一个 HTTP 方法数组。例如:plugins.security.restapi.endpoints_disabled.all_access.ACTIONGROUPS: ["PUT","POST","DELETE"]。默认情况下,所有端点和方法均被允许。现有的端点包括ACTIONGROUPS, CACHE, CONFIG, ROLES, ROLESMAPPING, INTERNALUSERS, SYSTEMINFO, PERMISSIONSINFOLICENSE。请参阅API 的访问控制

  • plugins.security.restapi.password_validation_regex(静态):指定用于设置登录密码规则的正则表达式。更多信息,请参阅密码设置

  • plugins.security.restapi.password_validation_error_message(静态):指定当密码验证未通过时显示的错误消息。此设置需与以下内容配合使用:plugins.security.restapi.password_validation_regex

  • plugins.security.restapi.password_min_length(静态):设置使用基于评分的密码强度评估器时密码长度的最小字符数。默认值为 8,这也是最小值。更多信息,请参阅密码设置

  • plugins.security.restapi.password_score_based_validation_strength(静态):设定一个阈值,以确定密码是强还是弱。有效的值为 fair, good, strong, 和 very_strong。此设置与plugins.security.restapi.password_min_length配合使用。

  • allow_securityconfig_modification(静态):启用配置 API 的 PUT 和 PATCH 方法。

高级设置

安全插件支持以下高级设置:

  • plugins.security.authcz.impersonation_dn(静态):启用传输层模拟。这允许域名服务器 (DN) 模拟其他用户。请参阅用户模拟

  • plugins.security.authcz.rest_impersonation_user(静态):启用 REST 层模拟。这允许用户模拟其他用户。请参阅用户模拟

  • plugins.security.allow_default_init_securityindex(静态):若设置为true,则当索引不存在时,UDB-SX安全功能将自动使用/config目录中的文件来初始化配置索引。

    这将使用众所周知的默认密码。仅限在私有网络/环境中使用。

  • plugins.security.allow_unsafe_democertificates(静态):启用此选项后true,UDB-SX将使用演示证书启动。这些证书仅用于演示目的。

    这些证书是众所周知的,因此不适用于生产环境。仅限在私有网络/环境中使用。

  • plugins.security.system_indices.permission.enabled(静态):启用系统索引权限功能。当设置为true时,该功能将被启用,拥有修改角色权限的用户能够创建包含授予对系统索引访问权限的权限的角色。当设置为false时,该权限将被禁用,只有拥有管理员证书的管理员才能对系统索引进行更改。在新集群中,默认情况下该权限设置为false

专家级设置

专家级设置只能由完全了解该功能的管理员进行配置和部署。对功能的误解可能导致安全风险、安全插件无法正常运行或数据丢失。

安全插件支持以下专家级设置:

  • plugins.security.config_index_name(静态属性):.opendistro_security 存储其配置所使用的索引的名称。

  • plugins.security.cert.oid(静态):定义服务器节点证书的对象标识符(OID)。

  • plugins.security.cert.intercluster_request_evaluator_class(静态属性):指定用于评估跨集群请求的 org.opensearch.security.transport.InterClusterRequestEvaluator 的实现类。org.opensearch.security.transport.InterClusterRequestEvaluator 的实例必须实现一个带有单个参数(即一个 org.opensearch.common.settings.Settings 对象)的构造函数。

  • plugins.security.enable_snapshot_restore_privilege(静态设置):若将此设置值设为false,则会禁用普通用户对快照的恢复操作;在这种情况下,只有由管理员的 TLS 证书签署的快照恢复请求才会被接受。若将该设置值设为true(默认值),则普通用户若拥有cluster:admin/snapshot/restoreindices:admin/createindices:data/write/index这些权限,则可以进行快照恢复操作。

    只有当快照不包含全局状态且不恢复.opendistro_security索引时,才能恢复快照。

  • plugins.security.check_snapshot_restore_write_privileges(静态):若设置为 false,则会省略额外的索引检查。若设置为默认值 true,则会评估恢复快照时针对 indices:admin/create"indices:data/write/index" 的操作。

  • plugins.security.cache.ttl_minutes(固定值):决定认证缓存失效所需的时间长度。认证缓存有助于加快认证过程,它会暂时存储从后端返回的用户对象,从而避免安全插件需要反复向后端请求这些对象。将值设置为分钟数即可。默认值为 60。若要禁用缓存,请将值设置为 0

  • plugins.security.disabled(静态):禁用 UDB-SX 安全功能。

禁用此插件可能会将您的配置(包括密码)暴露给公众。

  • plugins.security.protected_indices.enabled(常量):若设置为true,则启用保护索引功能。保护索引的安全性高于常规索引。这些索引与任何其他传统索引一样,需要特定角色才能访问,并且还需要额外的角色才能查看。此设置与plugins.security.protected_indices.rolesplugins.security.protected_indices.indices设置配合使用。

  • plugins.security.protected_indices.roles(常量):指定用户必须隶属于的权限角色列表,只有这些角色的用户才能访问受保护的索引。

  • plugins.security.protected_indices.indices(静态):指定需标记为受保护的索引列表。这些索引仅对映射至plugins.security.protected_indices.roles中指定角色的用户可见。在满足此要求后,用户仍需被映射至用于授予该索引访问权限的传统角色。

  • plugins.security.system_indices.enabled(常量):若设置为true,则启用系统索引。系统索引与安全索引类似,不同之处在于其内容未进行加密。配置为系统索引的索引可由超级管理员或拥有包含系统索引权限角色的用户访问。有关系统索引的更多信息,请参阅系统索引

  • plugins.security.system_indices.indices(静态):一个用于作为系统索引使用的索引列表。此设置由 plugins.security.system_indices.enabled 设置控制。

  • plugins.security.allow_default_init_securityindex(静态):若设置为true,则在 UDB-SX 启动时若创建安全索引的尝试失败时,会将安全插件设置为其默认的安全设置。默认的安全设置存储在位于udbsx-project/security/config目录中的 YAML 文件中。默认值为false

  • plugins.security.cert.intercluster_request_evaluator_class(静态):用于评估跨集群通信的类。

  • plugins.security.enable_snapshot_restore_privilege(常量):启用授予快照恢复权限的功能。可选。默认值为 true

  • plugins.security.check_snapshot_restore_write_privileges(静态):在创建快照时强制执行权限评估。默认值为 true

    如果您更改以下任何密码哈希属性,则必须重新哈希所有内部密码,以确保兼容性和安全性。

  • plugins.security.password.hashing.algorithm:(静态):指定要使用的密码哈希算法。
    有效值包括:

    • BCrypt(默认)

    • PBKDF2

  • plugins.security.password.hashing.bcrypt.rounds(常量):指定使用 BCrypt 进行密码哈希时所需的运算轮数。有效的值范围为431(包括两端值)。默认值为12

  • plugins.security.password.hashing.bcrypt.minorBCrypt(静态):指定用于密码哈希的算法的次版本号。

    有效值包括:

    • A

    • B

    • Y(默认)

  • plugins.security.password.hashing.pbkdf2.function(静态):指定了应用于密码的伪随机函数。

    有效值包括:

    • SHA1

    • SHA224

    • SHA256(默认)

    • SHA384

    • SHA512

  • plugins.security.password.hashing.pbkdf2.iterations(静态):指定了对密码应用伪随机函数的次数。默认值为 600,000

  • plugins.security.password.hashing.pbkdf2.length(静态):指定最终生成的密钥所需的长度。默认值为 256

审计日志设置

安全插件支持以下审计日志设置:

  • plugins.security.audit.enable_rest(动态):启用或禁用 REST 请求日志记录。默认值为true(启用)。

  • plugins.security.audit.enable_transport(动态):启用或禁用传输层请求日志记录。默认值为false(禁用)。

  • plugins.security.audit.resolve_bulk_requests(动态):启用或禁用批量请求日志记录。启用后,批量请求中的所有子请求也将被记录。默认值为false(禁用)。

  • plugins.security.audit.config.disabled_categories(动态):禁用指定的事件类别。

  • plugins.security.audit.ignore_requests(动态):排除指定的请求不被记录。允许使用通配符和包含操作或 REST 请求路径的正则表达式。

  • plugins.security.audit.threadpool.size(静态属性):用于确定用于记录事件的线程池中的线程数量。默认值为 10。将此值设置为 0 会禁用线程池,这意味着该插件将以同步方式记录事件。

  • plugins.security.audit.threadpool.max_queue_len(静态):设置每个线程的最大队列长度。默认值为100000

  • plugins.security.audit.ignore_users(动态):用户数组。列表中用户的审计请求将不会被记录。

  • plugins.security.audit.type(静态):审计日志事件的目标位置。有效的值为 internal_opensearchexternal_opensearchdebugwebhook

  • plugins.security.audit.config.http_endpoints(静态):端点列表localhost

  • plugins.security.audit.config.index(静态):审计日志索引。默认值为 auditlog6。该索引可以是静态索引,也可以是包含日期的索引(例如 "'auditlog6-'YYYY.MM.dd"),以便按每日进行轮换。无论哪种情况,都务必妥善保护该索引。

  • plugins.security.audit.config.type(静态配置):将审计日志类型指定为auditlog

  • plugins.security.audit.config.username(常量):用于审计日志配置的用户名。

  • plugins.security.audit.config.password(静态):审计日志配置所使用的密码。

  • plugins.security.audit.config.enable_ssl(静态配置):启用或禁用用于审计日志记录的 SSL 功能。

  • plugins.security.audit.config.verify_hostnames(静态配置):启用或禁用对 SSL/TLS 证书中主机名的验证功能。默认值为 true(启用)。

  • plugins.security.audit.config.enable_ssl_client_auth(静态配置):启用或禁用 SSL/TLS 客户端认证。默认值为 false(禁用)。

  • plugins.security.audit.config.cert_alias(常量):用于访问审计日志的证书的别名。

  • plugins.security.audit.config.pemkey_filepath(固定值):用于审计日志记录的隐私增强邮件(PEM)密钥的相对文件路径(位于/config目录下)。

  • plugins.security.audit.config.pemkey_content(静态):用于审计日志记录的 PEM 密钥的 base64 编码内容。这是 ...config.pemkey_filepath 的一种替代方案。

  • plugins.security.audit.config.pemkey_password(固定值):客户端所使用的以 PEM 格式存储的私钥的密码。

  • plugins.security.audit.config.pemcert_filepath(固定值):用于审计日志记录的 PEM 证书的相对文件路径(位于/config目录下)。

  • plugins.security.audit.config.pemcert_content(固定值):用于审计日志记录的 PEM 证书的 Base64 编码内容。这是通过指定文件路径(如 ...config.pemcert_filepath)的替代方法。

  • plugins.security.audit.config.pemtrustedcas_filepath(固定值):指向受信任的根证书颁发机构的位于/config目录下的相对文件路径。

  • plugins.security.audit.config.pemtrustedcas_content(静态):根证书颁发机构的 base64 编码内容。这是 ...config.pemtrustedcas_filepath 的一种替代方案。

  • plugins.security.audit.config.webhook.url(固定值): webhook URL 。

  • plugins.security.audit.config.webhook.format(静态):用于 webhook 的格式。有效的值为 URL_PARAMETER_GETURL_PARAMETER_POSTTEXTJSONSLACK

  • plugins.security.audit.config.webhook.ssl.verify(静态设置):启用或禁用对任何与 webhook 请求一同发送的 SSL/TLS 证书的验证。默认值为 true(启用)。

  • plugins.security.audit.config.webhook.ssl.pemtrustedcas_filepath(固定值):指向用于验证 webhook 请求的受信任证书颁发机构的 /config 相对文件路径。

  • plugins.security.audit.config.webhook.ssl.pemtrustedcas_content(静态):用于验证 webhook 请求的证书颁发机构的 Base64 编码内容。这是 ...config.pemtrustedcas_filepath 的替代选项。

  • plugins.security.audit.config.log4j.logger_name(静态属性):用于 Log4j 日志记录器的自定义名称。

  • plugins.security.audit.config.log4j.level(静态属性):为 Log4j 记录器提供默认的日志级别。有效的值为OFF(关闭)、FATAL(严重错误)、ERROR(错误)、WARN(警告)、INFO(信息)、DEBUG(调试)、TRACE(跟踪)以及ALL(全部)。默认值为“INFO”。

  • opendistro_security.audit.config.disabled_rest_categories(动态):一个用于被日志记录器忽略的 REST 类别列表。有效的值为 AUTHENTICATEDGRANTED_PRIVILEGES

  • opendistro_security.audit.config.disabled_transport_categories(动态):一个用于忽略日志记录器处理的传输层类别的列表。有效的值为 AUTHENTICATEDGRANTED_PRIVILEGES

主机名验证和 DNS 查询设置

安全插件支持以下主机名验证和 DNS 查询设置:

  • plugins.security.ssl.transport.enforce_hostname_verification(常量):是否在传输层对主机名进行验证。可选。默认值为 true

  • plugins.security.ssl.transport.resolve_hostname(静态配置):是否在传输层依据 DNS 来解析主机名。可选配置。默认值为 true。仅在启用主机名验证的情况下才有效。

有关更多信息,请参阅主机名验证和 DNS 查询

客户端身份验证设置

安全插件支持以下客户端身份验证设置:

  • plugins.security.ssl.http.clientauth_mode(静态):要使用的 TLS 客户端身份验证模式。有效值为OPTIONAL(默认值)、REQUIRENONE。可选。 有关更多信息,请参阅客户端身份验证

已启用密码和协议设置

安全插件支持以下启用的加密和协议设置。每个设置必须以数组形式表示:

  • plugins.security.ssl.http.enabled_ciphers(静态):为 REST 层启用 TLS 加密套件。仅支持 Java 格式。

  • plugins.security.ssl.http.enabled_protocols(静态):已为 REST 层启用 TLS 协议。仅支持 Java 格式。

  • plugins.security.ssl.transport.enabled_ciphers(静态):已启用传输层的 TLS 密码套件。仅支持 Java 格式。

  • plugins.security.ssl.transport.enabled_protocols(静态):已启用传输层的 TLS 协议。仅支持 Java 格式。

有关更多信息,请参阅已启用的密码和协议

密钥库和信任库文件——传输层 TLS 设置

安全插件支持以下传输层 TLS 密钥库和信任库设置:

  • plugins.security.ssl.transport.keystore_type(常量):密钥库文件的类型。可选。有效的值为 JKSPKCS12/PFX。默认值为 JKS

  • plugins.security.ssl.transport.keystore_filepath(常量):密钥库文件的路径,该文件必须位于“config”目录下,使用相对路径指定。必填项。

  • plugins.security.ssl.transport.keystore_alias(常量):密钥库的别名名称。可选。默认值为第一个别名。

  • plugins.security.ssl.transport.keystore_password(常量):密钥库密码。默认值为changeit

  • plugins.security.ssl.transport.truststore_type(静态属性):信任库文件的类型。可选。有效的值为 JKSPKCS12/PFX。默认值为 JKS

  • plugins.security.ssl.transport.truststore_filepath(静态属性):信任库文件的路径,该文件必须位于“config”目录下,使用相对路径指定。必填项。

  • plugins.security.ssl.transport.truststore_alias(常量):信任库的别名名称。可选。默认值为所有证书。

  • plugins.security.ssl.transport.truststore_password(常量):信任库密码。默认值为changeit

有关密钥库和信任库文件的更多信息,请参阅传输层 TLS

密钥库和信任库文件——REST 层 TLS 设置

安全插件支持以下 REST 层 TLS 密钥库和信任库设置:

  • plugins.security.ssl.http.enabled(静态配置):是否在 REST 层启用 TLS。若启用,则仅允许使用 HTTPS。可选配置项。默认值为 false

  • plugins.security.ssl.http.keystore_type(常量):密钥库文件的类型。可选。有效的值为 JKSPKCS12/PFX。默认值为 JKS

  • plugins.security.ssl.http.keystore_filepath(静态):密钥库文件的路径,该文件必须位于config目录下,使用相对路径指定。必填项。

  • plugins.security.ssl.http.keystore_alias(常量):密钥库的别名名称。可选。默认值为第一个别名。

  • plugins.security.ssl.http.keystore_password: 密钥库密码。默认值为changeit

  • plugins.security.ssl.http.truststore_type: 信任库文件的类型。可选。有效的值为 JKSPKCS12/PFX。默认值为 JKS

  • plugins.security.ssl.http.truststore_filepath: 信任库文件的路径,该文件必须位于config目录下,使用相对路径进行指定。此字段为必填项。

  • plugins.security.ssl.http.truststore_alias(常量):信任库的别名名称。可选。默认值为所有证书。

  • plugins.security.ssl.http.truststore_password(常量):信任库密码。默认值为changeit

有关更多信息,请参阅REST层TLS

OpenSSL 设置

安全插件支持以下 OpenSSL 设置:

  • plugins.security.ssl.transport.enable_openssl_if_available(常量):若可用,则在传输层启用 OpenSSL。可选。默认值为 true

  • plugins.security.ssl.http.enable_openssl_if_available(常量):若可用,则在 REST 层启用 OpenSSL。可选。默认值为 true

更多信息请参见OpenSSL

X.509 PEM 证书和 PKCS #8 密钥——传输层 TLS 设置

安全插件支持以下与 X.509 PEM 证书和 PKCS #8 密钥相关的传输层 TLS 设置:

  • plugins.security.ssl.transport.pemkey_filepath(固定值):证书的密钥文件(PKCS #8)的路径,该文件必须位于config目录下,使用相对路径进行指定。必填项。

  • plugins.security.ssl.transport.pemkey_password(固定值):密钥密码。若密钥无密码,则无需设置此选项。可选的。

  • plugins.security.ssl.transport.pemcert_filepath(固定值):X.509 节点证书链(PEM 格式)的路径,该路径必须位于config目录下,并使用相对路径指定。必填项。

  • plugins.security.ssl.transport.pemtrustedcas_filepath(固定值):根证书颁发机构(采用 PEM 格式)的路径,该路径必须位于config目录下,并使用相对路径指定。必填项。

有关更多信息,请参阅REST 层 TLS

X.509 PEM 证书和 PKCS #8 密钥——REST 层 TLS 设置

安全插件支持以下与 X.509 PEM 证书和 PKCS #8 密钥相关的 REST 层 TLS 设置:

  • plugins.security.ssl.http.enabled(静态配置):是否在 REST 层启用 TLS。若启用,则仅允许使用 HTTPS。可选配置项。默认值为 false

  • plugins.security.ssl.http.pemkey_filepath(静态):证书的密钥文件(PKCS #8)的路径,该文件必须位于config目录下,使用相对路径进行指定。必填项。

  • plugins.security.ssl.http.pemkey_password(固定值):密钥密码。若密钥无密码,则无需设置此选项。可选的。

  • plugins.security.ssl.http.pemcert_filepath(固定值):X.509 节点证书链(PEM 格式)的路径,该路径必须位于config目录下,并使用相对路径指定。必填项。

  • plugins.security.ssl.http.pemtrustedcas_filepath:指向根证书颁发机构(采用 PEM 格式)的路径,该路径必须位于配置目录下,并使用相对路径指定。此字段为必填项。

有关更多信息,请参阅REST 层 TLS

传输层安全设置

安全插件支持以下传输层安全设置:

  • plugins.security.ssl.transport.enabled(常量):是否在 REST 层启用 TLS。

  • plugins.security.ssl.transport.client.pemkey_password(固定值):传输客户端所使用的以 PEM 格式存储的私钥的密码。

  • plugins.security.ssl.transport.keystore_keypassword(常量):密钥存储文件中密钥的密码。

  • plugins.security.ssl.transport.server.keystore_keypassword(常量):服务器密钥库中密钥的密码。

  • plugins.sercurity.ssl.transport.server.keystore_alias(常量):服务器密钥库的别名名称。

  • plugins.sercurity.ssl.transport.client.keystore_alias(常量):客户端密钥库的别名名称。

  • plugins.sercurity.ssl.transport.server.truststore_alias(常量):服务器信任库的别名名称。

  • plugins.sercurity.ssl.transport.client.truststore_alias(常量):客户端信任库的别名名称。

  • plugins.security.ssl.client.external_context_id(常量):为传输客户端提供一个用于外部 SSL 上下文的 ID。

  • plugins.secuirty.ssl.transport.principal_extractor_class(静态属性):指定一个实现了提取器的类,以便使用证书的特定部分作为主体信息。

  • plugins.security.ssl.http.crl.file_path(静态):指向证书吊销列表文件的文件路径。

  • plugins.security.ssl.http.crl.validate(静态配置):启用证书吊销列表(CRL)验证功能。默认值为 false(禁用)。

  • plugins.security.ssl.http.crl.prefer_crlfile_over_ocsp(静态):如果证书同时包含 CRL 证书条目和在线证书状态协议(OCSP)条目,则是否优先选择 CRL 证书条目而非 OCSP 条目。可选。默认值为 false

  • plugins.security.ssl.http.crl.check_only_end_entitites(静态):当设置为 true 时,仅对叶证书进行验证。默认值为 true

  • plugins.security.ssl.http.crl.disable_ocsp(固定值):禁用 OCSP。默认值为 false(即 OCSP 已启用)。

  • plugins.security.ssl.http.crl.disable_crldp(静态设置):禁用证书中的 CRL 端点。默认值为 false(即 CRL 端点处于启用状态)。

  • plugins.security.ssl.allow_client_initiated_renegotiation(静态):启用或禁用客户端重新协商功能。默认值为 false(客户端发起的重新协商功能未被允许)。

# Common configuration settings
plugins.security.nodes_dn:
  - "CN=*.example.com, OU=SSL, O=Test, L=Test, C=DE"
  - "CN=node.other.com, OU=SSL, O=Test, L=Test, C=DE"
  - "CN=node.example.com, OU=SSL\\, Inc., L=Test, C=DE" # escape additional comma with `\\`
plugins.security.authcz.admin_dn:
  - CN=kirk,OU=client,O=client,L=test, C=de
plugins.security.roles_mapping_resolution: MAPPING_ONLY
plugins.security.ssl.transport.pemcert_filepath: esnode.pem
plugins.security.ssl.transport.pemkey_filepath: esnode-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: esnode.pem
plugins.security.ssl.http.pemkey_filepath: esnode-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: root-ca.pem
plugins.security.allow_unsafe_democertificates: true
plugins.security.allow_default_init_securityindex: true
plugins.security.nodes_dn_dynamic_config_enabled: false
plugins.security.cert.intercluster_request_evaluator_class: # need example value for this.
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.cache.ttl_minutes: 60
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*"]
node.max_local_storage_nodes: 3
plugins.security.restapi.password_validation_regex: '(?=.*[A-Z])(?=.*[^a-zA-Z\d])(?=.*[0-9])(?=.*[a-z]).{8,}'
plugins.security.restapi.password_validation_error_message: "Password must be minimum 8 characters long and must contain at least one uppercase letter, one lowercase letter, one digit, and one special character."
plugins.security.allow_default_init_securityindex: true
plugins.security.cache.ttl_minutes: 60
#
# REST Management API configuration settings
plugins.security.restapi.roles_enabled: ["all_access","xyz_role"]
plugins.security.restapi.endpoints_disabled.all_access.ACTIONGROUPS: ["PUT","POST","DELETE"] # Alternative example: plugins.security.restapi.endpoints_disabled.xyz_role.LICENSE: ["DELETE"] #
# Audit log configuration settings
plugins.security.audit.enable_rest: true
plugins.security.audit.enable_transport: false
plugins.security.audit.resolve_bulk_requests: false
plugins.security.audit.config.disabled_categories: ["AUTHENTICATED","GRANTED_PRIVILEGES"]
plugins.security.audit.ignore_requests: ["indices:data/read/*","*_bulk"]
plugins.security.audit.threadpool.size: 10
plugins.security.audit.threadpool.max_queue_len: 100000
plugins.security.audit.ignore_users: ['kibanaserver','some*user','/also.*regex possible/']
plugins.security.audit.type: internal_opensearch
#
# external_opensearch settings
plugins.security.audit.config.http_endpoints: ['localhost:9200','localhost:9201','localhost:9202']
plugins.security.audit.config.index: "'auditlog6-'2023.06.15"
plugins.security.audit.config.type: auditlog
plugins.security.audit.config.username: auditloguser
plugins.security.audit.config.password: auditlogpassword
plugins.security.audit.config.enable_ssl: false
plugins.security.audit.config.verify_hostnames: false
plugins.security.audit.config.enable_ssl_client_auth: false
plugins.security.audit.config.cert_alias: mycert
plugins.security.audit.config.pemkey_filepath: key.pem
plugins.security.audit.config.pemkey_content: <...pem base 64 content>
plugins.security.audit.config.pemkey_password: secret
plugins.security.audit.config.pemcert_filepath: cert.pem
plugins.security.audit.config.pemcert_content: <...pem base 64 content>
plugins.security.audit.config.pemtrustedcas_filepath: ca.pem
plugins.security.audit.config.pemtrustedcas_content: <...pem base 64 content>
#
# Webhook settings
plugins.security.audit.config.webhook.url: "http://mywebhook/endpoint"
plugins.security.audit.config.webhook.format: JSON
plugins.security.audit.config.webhook.ssl.verify: false
plugins.security.audit.config.webhook.ssl.pemtrustedcas_filepath: ca.pem
plugins.security.audit.config.webhook.ssl.pemtrustedcas_content: <...pem base 64 content>
#
# log4j settings
plugins.security.audit.config.log4j.logger_name: auditlogger
plugins.security.audit.config.log4j.level: INFO
#
# Advanced configuration settings
plugins.security.authcz.impersonation_dn:
  "CN=spock,OU=client,O=client,L=Test,C=DE":
    - worf
  "cn=webuser,ou=IT,ou=IT,dc=company,dc=com":
    - user2
    - user1
plugins.security.authcz.rest_impersonation_user:
  "picard":
    - worf
  "john":
    - steve
    - martin
plugins.security.allow_default_init_securityindex: false
plugins.security.allow_unsafe_democertificates: false
plugins.security.cache.ttl_minutes: 60
plugins.security.restapi.password_validation_regex: '(?=.*[A-Z])(?=.*[^a-zA-Z\d])(?=.*[0-9])(?=.*[a-z]).{8,}'
plugins.security.restapi.password_validation_error_message: "A password must be at least 8 characters long and contain at least one uppercase letter, one lowercase letter, one digit, and one special character."
plugins.security.restapi.password_min_length: 8
plugins.security.restapi.password_score_based_validation_strength: very_strong
#
# Advanced SSL settings - use only if you understand SSL ins and outs
plugins.security.ssl.transport.client.pemkey_password: superSecurePassword1
plugins.security.ssl.transport.keystore_keypassword: superSecurePassword2
plugins.security.ssl.transport.server.keystore_keypassword: superSecurePassword3
plugins.security.ssl.http.keystore_keypassword: superSecurePassword4
plugins.security.ssl.http.clientauth_mode: REQUIRE
plugins.security.ssl.transport.enabled: true
plugins.security.ssl.transport.server.keystore_alias: my_alias
plugins.security.ssl.transport.client.keystore_alias: my_other_alias
plugins.security.ssl.transport.server.truststore_alias: trustore_alias_1
plugins.security.ssl.transport.client.truststore_alias: trustore_alias_2
plugins.security.ssl.client.external_context_id: my_context_id
plugins.security.ssl.transport.principal_extractor_class: org.opensearch.security.ssl.ExampleExtractor
plugins.security.ssl.http.crl.file_path: ssl/crl/revoked.crl
plugins.security.ssl.http.crl.validate: true
plugins.security.ssl.http.crl.prefer_crlfile_over_ocsp: true
plugins.security.ssl.http.crl.check_only_end_entitites: false
plugins.security.ssl.http.crl.disable_ocsp: true
plugins.security.ssl.http.crl.disable_crldp: true
plugins.security.ssl.allow_client_initiated_renegotiation: true
#
# Expert settings - use only if you understand their use completely: accidental values can potentially cause security risks or failures to OpenSearch Security.
plugins.security.config_index_name: .opendistro_security
plugins.security.cert.oid: '1.2.3.4.5.5'
plugins.security.cert.intercluster_request_evaluator_class: org.opensearch.security.transport.DefaultInterClusterRequestEvaluator
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.cache.ttl_minutes: 60
plugins.security.disabled: false
plugins.security.protected_indices.enabled: true
plugins.security.protected_indices.roles: ['all_access']
plugins.security.protected_indices.indices: []
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: ['.opendistro-alerting-config', '.opendistro-ism-*', '.opendistro-reports-*', '.opensearch-notifications-*', '.opensearch-notebooks', '.opensearch-observability', '.opendistro-asynchronous-search-response*', '.replication-metadata-store']