在 Kibana 中配置报告

编辑

在 Kibana 中配置报告

编辑

Kibana PNG/PDF 报告使用无头 Chromium 的自定义二进制文件,支持附带特殊注意事项

  • 该功能需要特殊的操作系统依赖项,这些依赖项可能不适用于所有 Linux 发行版和配置。
  • 它受限于系统资源配置,例如文件描述符数量、允许的进程以及进程类型。
  • 不支持处于生命周期结束阶段的 Linux 版本。
  • 不支持使用 SELinux 或 fapolicyd 的 Linux 系统。

在生产环境中升级 Kibana 之前,我们建议您在预生产环境中测试屏幕截图用例,以确保您的主机支持我们最新的 Chromium 构建版本。为了获得最可靠的 PDF/PNG 报告功能配置,请考虑使用 Docker 安装 Kibana,或者使用 Elastic Cloud

为了安全起见,您需要授予用户访问报告功能的权限,并使用 TLS/SSL 加密保护报告端点。此外,您可以在操作系统中安装图形包,以使 Kibana 服务器具有屏幕截图功能。

授予用户访问报告的权限

编辑

启用安全性后,您可以使用 Kibana 应用程序权限 授予用户访问报告功能的权限,这允许您创建自定义角色来控制用户生成报告的空间和应用程序。

  1. 在报告中启用应用程序权限。要启用,请在 kibana.yml 中关闭默认的用户访问控制功能

    xpack.reporting.roles.enabled: false

    如果您使用默认设置,仍然可以创建授予报告权限的自定义角色。默认角色是 reporting_user。此行为正在被弃用,并且不允许对报告功能进行应用程序级别的访问控制,也不允许 API 密钥或身份验证令牌授权报告生成。有关已弃用访问控制功能的信息和注意事项,请参阅报告安全设置

  2. 创建报告角色。

    1. 使用导航菜单或 全局搜索字段,转到角色管理页面。
    2. 单击创建角色
  3. 指定角色设置。

    1. 输入角色名称。例如,custom_reporting_user
    2. 指定索引权限

      对数据的访问是索引级别的权限。对于每个包含要包含在报告中的数据的索引,添加一行,然后为每个索引赋予 readview_index_metadata 权限。

      如果您使用索引别名,则还必须向底层索引授予 readview_index_metadata 权限才能生成 CSV 报告。

      有关更多信息,请参阅 安全权限

  4. 添加 Kibana 权限。

    1. 单击添加 Kibana 权限
    2. 选择一个或多个空间
    3. 单击自定义,然后单击分析
    4. 对于每个应用程序,选择全部,或者要自定义权限,选择读取自定义子功能权限

      如果您拥有基本许可证,则子功能权限不可用。有关详细信息,请查看使用基本许可证授予用户访问权限

      Kibana privileges with Reporting options, Gold or higher license

      如果应用程序功能的报告选项不可用,并且集群许可证高于基本许可证,请联系您的管理员,或检查 kibana.yml 中是否将 xpack.reporting.roles.enabled 设置为 false

    5. 单击添加 Kibana 权限
  5. 单击创建角色
  6. 将报告角色分配给用户。

    1. 使用导航菜单或全局搜索字段,转到用户管理页面。
    2. 选择要分配报告角色的用户。
    3. 角色下拉列表中,选择custom_reporting_user
    4. 单击更新用户

授予生成报告的权限还会授予用户在堆栈管理 > 报告中查看其报告的权限。用户只能访问他们自己的报告。

使用角色 API 授予访问权限

编辑

在报告中启用 Kibana 应用程序权限后,您还可以使用 角色 API 来授予对报告功能的访问权限,使用全部权限或子功能权限。

此 API 请求需要针对 Kibana API 端点运行。

PUT <kibana host>:<port>/api/security/role/custom_reporting_user
{
	"elasticsearch": {
		"cluster": [],
		"indices": [],
		"run_as": []
	},
	"kibana": [{
		"spaces": ["*"],
		"base": [],
		"feature": {
			"dashboard": ["generate_report",  
      "download_csv_report"], 
      "discover": ["generate_report"], 
			"canvas": ["generate_report"], 
			"visualize": ["generate_report"] 
		}
	}]
}

授予在仪表板中生成 PNG 和 PDF 报告的权限。

授予从仪表板中保存的搜索面板生成 CSV 报告的权限。

授予从发现中保存的搜索生成 CSV 报告的权限。

授予在画布中生成 PDF 报告的权限。

授予在可视化库中生成 PNG 和 PDF 报告的权限。

使用基本许可证授予用户访问权限

编辑

使用基本许可证,您可以使用自定义角色授予用户通过 Kibana 应用程序权限访问报告功能的权限。但是,使用基本许可证时,子功能权限不可用。创建角色,然后为用户可以创建报告的应用程序选择 全部 权限。

Kibana privileges with Reporting options, Basic license

使用基本许可证,子功能应用程序权限不可用,但是您可以使用 角色 API 来授予对 CSV 报告功能的访问权限

PUT localhost:5601/api/security/role/custom_reporting_user
{
  "elasticsearch": { "cluster": [], "indices": [], "run_as": [] },
  "kibana": [
    {
      "base": [],
      "feature": {
        "dashboard": [ "all" ], 
        "discover": [ "all" ], 
      },
      "spaces": [ "*" ]
    }
  ],
  "metadata": {} // optional
}

授予从发现中保存的搜索生成 CSV 报告的权限。

授予从仪表板中保存的搜索面板生成 CSV 报告的权限。

使用外部提供程序授予访问权限

编辑

如果您使用的是外部身份提供程序(例如 LDAP 或 Active Directory),则可以将角色分配给单个用户或用户组。角色映射在 config/role_mapping.yml 中配置。

例如,将 kibana_adminreporting_user 角色分配给 Bill Murray 用户

kibana_admin:
  - "cn=Bill Murray,dc=example,dc=com"
reporting_user:
  - "cn=Bill Murray,dc=example,dc=com"

保护报告端点

编辑

要使用 Watcher 自动生成报告,您必须配置 Watcher 以信任 Kibana 服务器证书。

  1. 在您的 Elasticsearch 集群上启用 Elastic Stack 安全功能。有关更多信息,请参阅 安全入门
  2. 为 Kibana 服务器配置 TLS/SSL 加密。有关更多信息,请参阅 在 Kibana 中加密 TLS 通信
  3. elasticsearch.yml 中指定 Kibana 服务器 CA 证书链

    如果您使用自己的 CA 签署 Kibana 服务器证书,则需要在 Elasticsearch 中指定 CA 证书链,以便在 Watcher 和 Kibana 之间的 TLS 连接中正确建立信任。如果您的 CA 证书链包含在 PKCS #12 信任存储中,请按如下方式指定它

    xpack.http.ssl.truststore.path: "/path/to/your/truststore.p12"
    xpack.http.ssl.truststore.type: "PKCS12"
    xpack.http.ssl.truststore.password: "optional decryption password"

    否则,如果您的 CA 证书链采用 PEM 格式,请按如下方式指定它

    xpack.http.ssl.certificate_authorities: ["/path/to/your/cacert1.pem", "/path/to/your/cacert2.pem"]

    有关更多信息,请参阅 Watcher HTTP TLS/SSL 设置

  4. 添加一个或多个有权访问报告功能的用户。

    一旦您为 Kibana 启用了 SSL,所有对报告端点的请求都必须包含有效的凭据。

有关共享报告、直接链接等更多信息,请参阅报告和共享

安装无头浏览器的依赖项

编辑

如果使用 PNG/PDF 报告功能,请确保 Kibana 服务器操作系统已为该发行版安装了适当的软件包。

如果您使用 RHEL 操作系统,请安装以下软件包

  • xorg-x11-fonts-100dpi
  • xorg-x11-fonts-75dpi
  • xorg-x11-utils
  • xorg-x11-fonts-cyrillic
  • xorg-x11-fonts-Type1
  • xorg-x11-fonts-misc
  • vlgothic-fonts
  • fontconfig
  • freetype

如果您使用的是 Ubuntu/Debian 系统,请安装以下软件包

  • fonts-liberation
  • libfontconfig1
  • libnss3

用于 {reporting-features} 的屏幕截图插件具有内置实用程序来检查常见问题,例如缺少依赖项。有关更多信息,请参阅报告诊断

为无头浏览器设置 server.host

编辑

如果在生产环境中使用 PNG/PDF 报告功能,建议在 kibana.yml 配置文件中使用 server.host: 0.0.0.0 的设置。这样可以允许用于 PDF/PNG 报告的无头浏览器通过本地接口访问 Kibana,同时也可以允许 Kibana 服务器监听面向外的网络接口,因为它使得 Kibana 服务器可以从机器上的任何网络接口访问。请确保没有防火墙规则或其他路由规则阻止本地服务访问此地址。