Kibana 中的安全设置

编辑

Kibana 中的安全设置

编辑

您无需配置任何其他设置即可使用 Kibana 中的安全功能。这些功能默认启用。

在高可用性部署中,请确保对 Kibana 的所有实例使用相同的安全设置。此外,请考虑将敏感的安全设置(如加密和解密密钥)安全地存储在 Kibana 密钥库中,而不是以明文形式保存在 kibana.yml 文件中。

身份验证安全设置

编辑

您可以在 kibana.yml 中的 xpack.security.authc 命名空间中配置身份验证设置。

例如:

xpack.security.authc:
    providers:
      basic.basic1: 
          order: 0 
          ...

      saml.saml1: 
          order: 1
          ...

      saml.saml2: 
          order: 2
          ...

      pki.realm3:
          order: 3
          ...
    ...

指定身份验证提供程序的类型(例如,basictokensamloidckerberospki)和提供程序名称。此设置为必填项。

指定提供程序在身份验证链和登录选择器 UI 中的顺序。此设置为必填项。

指定名称为 saml1 的 SAML 身份验证提供程序的设置。

指定名称为 saml2 的 SAML 身份验证提供程序的设置。

所有身份验证提供程序的有效设置

编辑

xpack.security.authc.providers 命名空间中的有效设置因身份验证提供程序类型而异。有关详细信息,请参阅身份验证

xpack.security.authc.providers.<提供程序类型>.<提供程序名称>.enabled logo cloud
确定是否应启用身份验证提供程序。默认情况下,只要您配置了提供程序的任何属性,Kibana 就会启用该提供程序。
xpack.security.authc.providers.<提供程序类型>.<提供程序名称>.order logo cloud
提供程序在身份验证链和登录选择器 UI 中的顺序。
xpack.security.authc.providers.<提供程序类型>.<提供程序名称>.description logo cloud
登录选择器 UI 上显示的提供程序条目的自定义描述。
xpack.security.authc.providers.<提供程序类型>.<提供程序名称>.hint logo cloud
登录选择器 UI 上显示的提供程序条目的自定义提示。
xpack.security.authc.providers.<提供程序类型>.<提供程序名称>.icon logo cloud
登录选择器 UI 上显示的提供程序条目的自定义图标。
xpack.security.authc.providers.<提供程序类型>.<提供程序名称>.showInSelector logo cloud

指示提供程序是否应在登录选择器 UI 上具有条目的标志。 将此项设置为 false 不会从身份验证链中删除提供程序。

您无法将 basictoken 身份验证提供程序的此设置设置为 false

xpack.security.authc.providers.<提供程序类型>.<提供程序名称>.accessAgreement.message logo cloud
Markdown 格式的访问协议文本。 有关详细信息,请参阅访问协议
xpack.security.authc.providers.<提供程序类型>.<提供程序名称>.session.idleTimeout logo cloud

确保用户会话在一段时间不活动后过期。 将此项设置为 0 将阻止会话由于不活动而过期。 默认情况下,此设置等于 xpack.security.session.idleTimeout

使用 <计数>[ms|s|m|h|d|w|M|Y] 字符串(例如,20m24h7d1w)。

xpack.security.authc.providers.<提供程序类型>.<提供程序名称>.session.lifespan logo cloud

确保用户会话在定义的期限后过期。此行为也称为“绝对超时”。如果将其设置为 0,则用户会话可能会无限期保持活动状态。默认情况下,此设置等于 xpack.security.session.lifespan

使用 <计数>[ms|s|m|h|d|w|M|Y] 字符串(例如,20m24h7d1w)。

SAML 身份验证提供程序设置

编辑

除了对所有提供程序都有效的设置之外,您还可以指定以下设置

xpack.security.authc.providers.saml.<提供程序名称>.realm logo cloud
提供程序应使用的 Elasticsearch 中的 SAML 领域。
xpack.security.authc.providers.saml.<提供程序名称>.useRelayStateDeepLink logo cloud
确定提供程序是否应在身份提供程序发起的登录期间将 RelayState 参数视为 Kibana 中的深层链接。默认情况下,此设置设置为 falseRelayState 中指定的链接应为相对的、URL 编码的 Kibana URL。 例如,RelayState 参数中的 /app/dashboards#/list 链接应如下所示:RelayState=%2Fapp%2Fdashboards%23%2Flist

OpenID Connect 身份验证提供程序设置

编辑

除了对所有提供程序都有效的设置之外,您还可以指定以下设置

xpack.security.authc.providers.oidc.<提供程序名称>.realm logo cloud
提供程序应使用的 Elasticsearch 中的 OpenID Connect 领域。

匿名身份验证提供程序设置

编辑

除了对所有提供程序都有效的设置之外,您还可以指定以下设置

每个 Kibana 实例只能配置一个匿名提供程序。

xpack.security.authc.providers.anonymous.<提供程序名称>.credentials logo cloud

Kibana 应在内部使用以向 Elasticsearch 验证匿名请求的凭据。

例如:

xpack.security.authc.providers.anonymous.anonymous1:
  credentials:
    username: "anonymous_service_account"
    password: "anonymous_service_account_password"

有关详细信息,请参阅匿名身份验证

HTTP 身份验证设置

编辑

在极少数情况下,您可能需要更改这些设置。 有关详细信息,请参阅HTTP 身份验证

xpack.security.authc.http.enabled
确定是否应启用 HTTP 身份验证。默认情况下,此设置设置为 true
xpack.security.authc.http.autoSchemesEnabled
确定在 HTTP 身份验证期间是否应自动支持已启用的身份验证提供程序使用的 HTTP 身份验证方案。默认情况下,此设置设置为 true
xpack.security.authc.http.schemes[]
Kibana HTTP 身份验证应支持的 HTTP 身份验证方案列表。默认情况下,此设置设置为 ['apikey', 'bearer'],以支持使用 ApiKeyBearer 方案进行 HTTP 身份验证。

登录用户界面设置

编辑

您可以在 kibana.yml 文件中配置以下设置。

xpack.security.loginAssistanceMessage logo cloud
向登录 UI 添加消息。 对于显示有关维护窗口、指向公司注册页面的链接等信息非常有用。
xpack.security.loginHelp logo cloud
在登录 UI 上添加一条消息,其中包含有关登录过程的其他帮助信息。
xpack.security.authc.selector.enabled logo cloud
确定是否应启用登录选择器 UI。 默认情况下,如果配置了多个身份验证提供程序,则此设置设置为 true

配置默认访问协议

编辑

您可以在 kibana.yml 文件中配置以下设置。

xpack.security.accessAgreement.message logo cloud
此设置以 Markdown 格式指定访问协议文本,该文本将用作所有未指定 xpack.security.authc.providers.<提供程序类型>.<提供程序名称>.accessAgreement.message 值的提供程序的默认访问协议。 有关详细信息,请参阅访问协议

会话和 Cookie 安全设置

编辑

您可以在 kibana.yml 文件中配置以下设置。

xpack.security.cookieName
设置用于会话的 Cookie 的名称。默认值为 "sid"
xpack.security.encryptionKey
一个任意的、长度为 32 个字符或更长的字符串,用于加密会话信息。 不要 将此密钥暴露给 Kibana 的用户。默认情况下,会在内存中自动生成一个值。如果使用该默认行为,则在 Kibana 重启时所有会话都将失效。此外,如果 Kibana 的高可用性部署中此设置对于所有 Kibana 实例都不相同,则会导致 Kibana 出现意外行为。
xpack.security.secureCookies
设置会话 Cookie 的 secure 标志。默认值为 false。如果 server.ssl.enabled 设置为 true,则会自动设置为 true。如果 SSL 在 Kibana 外部配置(例如,您正在通过负载均衡器或代理路由请求),请将其设置为 true
xpack.security.sameSiteCookies logo cloud
设置会话 Cookie 的 SameSite 属性。这允许您声明您的 Cookie 应限制为第一方或同站点上下文。有效值为 StrictLaxNone。默认情况下,此值未设置,现代浏览器会将其视为 Lax。如果您在现代浏览器的 iframe 中嵌入了 Kibana,则可能需要将其设置为 None。将此值设置为 None 需要通过设置 xpack.security.secureCookies: true,通过安全连接发送 Cookie。
xpack.security.session.idleTimeout logo cloud

确保用户会话在不活动一段时间后过期。强烈建议同时使用此设置和 xpack.security.session.lifespan。您还可以为每个提供程序单独指定此设置。如果将其设置为 0,则会话永远不会因不活动而过期。默认情况下,此值为 3 天。

使用 <计数>[ms|s|m|h|d|w|M|Y] 字符串(例如,20m24h7d1w)。

xpack.security.session.lifespan logo cloud

确保用户会话在定义的时间段后过期。此行为也称为“绝对超时”。如果将其设置为 0,则用户会话可能会无限期地保持活动状态。强烈建议同时使用此设置和 xpack.security.session.idleTimeout。您还可以为每个提供程序单独指定此设置。默认情况下,本地安装的此值为 30 天,Elastic Cloud 安装的此值为 24 小时。

使用 <计数>[ms|s|m|h|d|w|M|Y] 字符串(例如,20m24h7d1w)。

xpack.security.session.cleanupInterval logo cloud

设置 Kibana 尝试从会话索引中删除过期和无效会话的时间间隔。默认情况下,此值为 1 小时。最小值为 10 秒。

使用 <计数>[ms|s|m|h|d|w|M|Y] 字符串(例如,20m24h7d1w)。

xpack.security.session.concurrentSessions.maxSessions logo cloud
设置每个用户在任何给定时间允许激活的最大会话数。默认情况下,不应用限制。如果设置,此选项的值应为 11000 之间的整数。当超出限制时,最早的会话将自动失效。

加密的已保存对象设置

编辑

这些设置控制包含敏感数据的已保存对象的加密。有关更多详细信息,请参阅保护已保存的对象

xpack.encryptedSavedObjects.encryptionKey
一个至少 32 个字符的任意字符串,用于加密已保存对象的敏感属性,然后再将它们存储在 Elasticsearch 中。如果未设置,Kibana 将在启动时生成一个随机密钥,但在您显式设置加密密钥之前,某些功能将不可用。
xpack.encryptedSavedObjects.keyRotation.decryptionOnlyKeys
先前使用的加密密钥的可选列表。与 xpack.encryptedSavedObjects.encryptionKey 一样,这些密钥的长度必须至少为 32 个字符。Kibana 不使用这些密钥进行加密,但可能仍然需要它们来解密某些现有的已保存对象。如果您希望更改加密密钥,但不希望失去对先前使用不同密钥加密的已保存对象的访问权限,请使用此设置。

审计日志记录设置

编辑

您可以启用审计日志记录以支持合规性、责任性和安全性。启用后,Kibana 将捕获

  • 谁执行了操作
  • 执行了什么操作
  • 操作何时发生

有关更多详细信息和审计事件的参考,请参阅审计日志

xpack.security.audit.enabled logo cloud

设置为 true 以启用审计日志记录。 默认值: false

例如:

xpack.security.audit.enabled: true
xpack.security.audit.appender: 
  type: rolling-file
  fileName: ./logs/audit.log
  policy:
    type: time-interval
    interval: 24h 
  strategy:
    type: numeric
    max: 10 
  layout:
    type: json

如果未指定 appender.* 配置选项,则将使用此 appender 作为默认值。

每 24 小时轮换日志文件。

最多保留 10 个日志文件,然后删除较旧的文件。

xpack.security.audit.appender
可选。指定应将审计日志写入何处以及应如何格式化。如果未指定 appender,则将使用默认 appender(请参见上文)。
xpack.security.audit.appender.type

必需。指定应将审计日志写入何处。允许的值为 consolefilerolling-file

有关 appender 的特定设置,请参阅文件 appender滚动文件 appender

xpack.security.audit.appender.layout.type

必需。指定应如何格式化审计日志。允许的值为 jsonpattern

有关布局的特定设置,请参阅模式布局

我们建议使用 json 格式,以便使用 Filebeat 将 Kibana 审计日志提取到 Elasticsearch 中。

文件 appender

编辑

file appender 写入文件,可以使用以下设置进行配置

xpack.security.audit.appender.fileName
必需。应将日志文件写入的完整文件路径。

滚动文件 appender

编辑

rolling-file appender 写入文件,并在触发特定策略时使用滚动策略对其进行轮换

xpack.security.audit.appender.fileName
必需。应将日志文件写入的完整文件路径。
xpack.security.audit.appender.policy.type

指定何时应发生滚动。允许的值为 size-limittime-interval默认值: time-interval

有关策略的特定设置,请参阅大小限制策略时间间隔策略

xpack.security.audit.appender.strategy.type

指定应如何发生滚动。当前允许的唯一值是 numeric默认值: numeric

有关策略的特定设置,请参阅数字滚动策略

大小限制触发策略

编辑

当文件达到一定大小时,size-limit 触发策略将轮换文件

xpack.security.audit.appender.policy.size
在执行滚动之前,日志文件应达到的最大大小。默认值: 100mb

时间间隔触发策略

编辑

time-interval 触发策略将按照给定的时间间隔轮换文件

xpack.security.audit.appender.policy.interval
应多久执行一次滚动。默认值: 24h
xpack.security.audit.appender.policy.modulate
是否应调整间隔以使下一次滚动发生在间隔边界上。默认值: true

数字滚动策略

编辑

numeric 滚动策略将在滚动时将给定的模式附加到日志文件,并将保留固定数量的滚动文件

xpack.security.audit.appender.strategy.pattern
在滚动时附加到文件名的后缀。必须包括 %i默认值: -%i
xpack.security.audit.appender.strategy.max
要保留的最大文件数。达到此数量后,将删除最旧的文件。默认值: 7

模式布局

编辑

pattern 布局输出一个字符串,该字符串使用带有特殊占位符的模式进行格式化,这些占位符将替换为实际日志消息中的数据

xpack.security.audit.appender.layout.pattern
可选。指定应如何格式化日志行。默认值: [%date][%level][%logger]%meta %message
xpack.security.audit.appender.layout.highlight
可选。设置为 true 以启用使用颜色突出显示日志消息。

忽略过滤器

编辑
xpack.security.audit.ignore_filters[] logo cloud

确定应从审计日志中排除哪些事件的过滤器列表。如果至少有一个提供的过滤器匹配,则将过滤掉事件。

例如:

xpack.security.audit.ignore_filters:
- actions: [http_request] 
- categories: [database]
  types: [creation, change, deletion] 
- spaces: [default] 
- users: [elastic, kibana_system] 

过滤掉 HTTP 请求事件

过滤掉任何数据写入事件

过滤掉来自 default 空间的事件

过滤掉来自 elastickibana_system 用户的事件

xpack.security.audit.ignore_filters[].actions[] logo cloud
与审计事件的 event.action 字段匹配的值列表。有关可用事件的列表,请参阅审计日志
xpack.security.audit.ignore_filters[].categories[] logo cloud
与审计事件的 event.category 字段匹配的值列表。有关允许的值,请参阅ECS 分类字段
xpack.security.audit.ignore_filters[].outcomes[] logo cloud
与审计事件的 event.outcome 字段匹配的值的列表。有关允许的值,请参阅 ECS 结果字段
xpack.security.audit.ignore_filters[].spaces[] logo cloud
与审计事件的 kibana.space_id 字段匹配的值的列表。这表示事件发生的空间 ID。
xpack.security.audit.ignore_filters[].types[] logo cloud
与审计事件的 event.type 字段匹配的值的列表。有关允许的值,请参阅 ECS 类型字段
xpack.security.audit.ignore_filters[].users[] logo cloud
与审计事件的 user.name 字段匹配的值的列表。这表示与审计事件关联的 username