在 Kibana 中配置报表

编辑

在 Kibana 中配置报表编辑

出于安全考虑,您需要授予用户访问报表功能的权限,并使用 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

      如果应用程序功能的 报表 选项不可用,并且集群许可证高于基本许可证,请联系您的管理员,或 检查 xpack.reporting.roles.enabled 是否在 kibana.yml 中设置为 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 操作系统,请安装以下软件包。

  • ipa-gothic-fonts
  • xorg-x11-fonts-100dpi
  • xorg-x11-fonts-75dpi
  • xorg-x11-utils
  • xorg-x11-fonts-cyrillic
  • xorg-x11-fonts-Type1
  • xorg-x11-fonts-misc
  • 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 服务器从机器上的任何网络接口都可以访问。确保没有防火墙规则或其他路由规则阻止本地服务访问此地址。

为了获得最可靠的 PDF/PNG 报告功能配置,请考虑使用 Docker 安装 Kibana,或使用 Elastic Cloud