用途:为 Kibana 所有 API 路由(含内部路由)配置强制授权检查,规范权限声明与分支逻辑。
主要能力:
- 路由安全配置:在 KibanaRouteOptions 的 security.authz 中声明 requiredPrivileges;可选 extendedPrivileges 仅检查并反映在 request.authzResult,不强制拦截。
- 权限命名:遵循 <operation>_<subject> 约定,仅用下划线,如 read_entity_a、manage_entity。
- 基于 authzResult 分支:处理器按权限返回不同数据或功能时,必须使用 request.authzResult,不得用 capabilities.resolveCapabilities() 等做授权分支。
- 可选扩展权限:门禁权限放 requiredPrivileges,扩展权限放 extendedPrivileges;后者为扁平字符串列表,不支持 anyRequired/allRequired,且启用 authz 时 requiredPrivileges 必填。
- 互斥权限分支:多个权限任一可访问时用 anyRequired,并在处理器中按 authzResult 分支。
- 退出授权:使用 @kbn/core-security-server 的 AuthzDisabled 或 AuthzOptOutReason 枚举;自定义原因仅在无预定义原因时使用,避免过于笼统的说明。
使用方式:在 router.get 等路由定义中设置 security.authz,处理器内读取 request.authzResult 判断权限。
适用场景:Kibana 路由安全配置、权限分支、可选权限扩展与授权退出。
限制:extendedPrivileges 不支持权限集合;退出授权需合理理由;资料未提供安装命令、收费或平台信息。