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.<provider-type>.<provider-name>.enabled logo cloud
确定是否应启用身份验证提供程序。默认情况下,Kibana 会在您配置其任何属性后立即启用该提供程序。
xpack.security.authc.providers.<provider-type>.<provider-name>.order logo cloud
提供程序在身份验证链和登录选择器 UI 中的顺序。
xpack.security.authc.providers.<provider-type>.<provider-name>.description logo cloud
登录选择器 UI 上显示的提供程序条目的自定义描述。
xpack.security.authc.providers.<provider-type>.<provider-name>.hint logo cloud
登录选择器 UI 上显示的提供程序条目的自定义提示。
xpack.security.authc.providers.<provider-type>.<provider-name>.icon logo cloud
登录选择器 UI 上显示的提供程序条目的自定义图标。
xpack.security.authc.providers.<provider-type>.<provider-name>.showInSelector logo cloud

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

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

xpack.security.authc.providers.<provider-type>.<provider-name>.accessAgreement.message logo cloud
以 Markdown 格式表示的访问协议文本。有关更多信息,请参阅 访问协议
xpack.security.authc.providers.<provider-type>.<provider-name>.session.idleTimeout logo cloud

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

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

xpack.security.authc.providers.<provider-type>.<provider-name>.session.lifespan logo cloud

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

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

SAML 身份验证提供程序设置编辑

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

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

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

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

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

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

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

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

xpack.security.authc.providers.anonymous.<provider-name>.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.<provider-type>.<provider-name>.accessAgreement.message 指定值的提供程序的默认访问协议。有关更多信息,请参阅 访问协议

会话和 cookie 安全设置编辑

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

xpack.security.cookieName
设置用于会话的 cookie 的名称。默认值为 "sid"
xpack.security.encryptionKey
用于加密会话信息的至少 32 个字符的任意字符串。请不要将此密钥公开给 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.secureCookiestrue来通过安全连接发送 cookie。
xpack.security.session.idleTimeout logo cloud

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

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

xpack.security.session.lifespan logo cloud

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

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

xpack.security.session.cleanupInterval logo cloud

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

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

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

加密的已保存对象设置edit

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

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

审计日志记录设置edit

您可以启用审计日志记录以支持合规性、问责制和安全性。启用后,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.*配置选项,将使用它。

每 24 小时轮换一次日志文件。

在删除较旧的日志文件之前,最多保留 10 个日志文件。

xpack.security.audit.appender
可选。指定审计日志应写入的位置以及应如何格式化它们。如果未指定追加器,将使用默认追加器(见上文)。
xpack.security.audit.appender.type

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

有关追加器特定设置,请参阅文件追加器滚动文件追加器

xpack.security.audit.appender.layout.type

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

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

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

文件追加器edit

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

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

滚动文件追加器edit

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

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

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

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

xpack.security.audit.appender.strategy.type

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

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

大小限制触发策略edit

size-limit触发策略将在文件达到一定大小后对其进行轮换

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

时间间隔触发策略edit

time-interval触发策略将在给定的时间间隔内对文件进行轮换

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

数字滚动策略edit

numeric滚动策略将在滚动时使用给定模式为日志文件添加后缀,并将保留固定数量的滚动文件

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

模式布局edit

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

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

忽略过滤器edit

xpack.security.audit.ignore_filters[] logo cloud

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

例如

xpack.security.audit.ignore_filters:
- actions: [http_request] 
- categories: [database]
  types: [creation, change, deletion] 

过滤掉 HTTP 请求事件

过滤掉任何数据写入事件

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[].types[] logo cloud
列出与审计事件的 event.type 字段匹配的值。有关允许值的列表,请参阅 ECS 类型字段
xpack.security.audit.ignore_filters[].outcomes[] logo cloud
列出与审计事件的 event.outcome 字段匹配的值。有关允许值的列表,请参阅 ECS 结果字段