Table of Contents

策略

如果您为组织管理 Tabular Editor,可以通过组策略限制其功能,并代表用户配置 AI 助手和 MCP 服务器。你可以手动在 Windows 注册表中设置这些值,也可以使用 Tabular Editor 3 随附的管理模板。

大多数策略都是常规策略,在 Tabular Editor 3 的每个版本中都可用。用于配置 AI 助手和 MCP 服务器的策略需要 Tabular Editor 3 企业版,并在下文标注为 Enterprise。

Note

此功能需要以下版本的 Tabular Editor:

  • Tabular Editor 2.17.0 或更高版本
  • 如需使用常规策略,需要 Tabular Editor 3.3.5 或更高版本
  • 如需使用下方的注册表项、计算机范围的策略以及所有 Enterprise 策略,需要 Tabular Editor 3.27 或更高版本
  • Tabular Editor CLI 0.7 或更高版本

注册表项

系统会从六个注册表项中读取策略,哪个注册表项最先定义某个值,就以哪个值为准。 HKEY_LOCAL_MACHINE 下的任何注册表项优先级都高于 HKEY_CURRENT_USER 下的任何注册表项,因此通过“计算机配置”设置的计算机范围策略不能由用户覆盖。在同一配置单元内,产品专用注册表项的优先级高于共享注册表项,而共享注册表项又高于旧版注册表项:

HKEY_LOCAL_MACHINE\Software\Policies\Tabular Editor ApS\TE3
HKEY_LOCAL_MACHINE\Software\Policies\Tabular Editor ApS
HKEY_LOCAL_MACHINE\Software\Policies\Kapacity\Tabular Editor
HKEY_CURRENT_USER\Software\Policies\Tabular Editor ApS\TE3
HKEY_CURRENT_USER\Software\Policies\Tabular Editor ApS
HKEY_CURRENT_USER\Software\Policies\Kapacity\Tabular Editor
  • Tabular Editor ApS\TE3 仅由 Tabular Editor 3 读取。 Tabular Editor CLI 则改为读取 Tabular Editor ApS\TECLI;其余四个注册表项两者相同。
  • Tabular Editor ApS 是共享注册表项,由 Tabular Editor 3 和 CLI 共同读取。
  • Kapacity\Tabular Editor 是早期版本使用的注册表项。该键仍会被读取,而且这是 Tabular Editor 2 唯一会读取的键。因此,如果策略也需要对 Tabular Editor 2 生效,也要在此处设置。

优先级会分别应用到每个值:计算机范围的 DisableTelemetry 设为 0 时,会覆盖按用户设置为 1 的 DisableTelemetry;而只按用户设置的 DisableCSharpScripts 仍然生效。值名称不区分大小写。

值类型

设置类型 注册表类型 说明
开/关策略 REG_DWORD 任何非零值都会强制执行该策略。 0 以及该值不存在,都表示不强制实施该策略。
选项 REG_SZ 选项的名称,例如 Read;这也是管理模板写入的内容。也可以使用 REG_DWORD 来存储该选项在列表中的位置。
数值 REG_DWORD 管理模板写入的内容。也可以使用 REG_SZ 来存储该数值。
列表 REG_MULTI_SZ 每行一个条目。也接受使用分号分隔各条目的 REG_SZ。
路径、地址或名称 REG_SZ

Tabular Editor 只会在启动时读取一次策略值。更改会在下次启动应用程序时生效。

常规策略

要强制执行其中一项,只需添加一个名为下述名称且数值为非零的 REG_DWORD 值。 Products 列显示哪些产品会遵循该策略:TE3 表示 Tabular Editor 3,CLI 表示 Tabular Editor CLI,TE2 表示 Tabular Editor 2,且它仅会读取旧版键。

值 产品 启用后……
DisableUpdates TE3, TE2 Tabular Editor 不会在线检查是否有新版本可用。用户也无法手动检查更新。
DisableCSharpScripts TE3、TE2 Tabular Editor 不允许用户创建或执行 C# Script。
DisableMacros TE3, TE2 Tabular Editor 不允许用户保存或运行宏。应用启动时不会加载存储在 %LocalAppData% 文件夹中的宏。
DisableBpaDownload TE3, CLI, TE2 无法从网络下载 Best Practice Analyzer 规则。保存在本地或随模型一起存放的规则仍可正常使用。
DisableWebDaxFormatter TE3、CLI、TE2 会将代码发送到 daxformatter.com 的 DAX 格式化程序已被禁用。 Tabular Editor 3 仍提供其内置格式化程序,不会通过网络发送任何数据。
DisableErrorReports TE3 用户无法向 Tabular Editor 支持团队发送错误或崩溃 Report。
DisableTelemetry TE3, CLI 不会收集匿名使用数据,也不会将其发送给 Tabular Editor 支持团队。
DisableDaxOptimizer TE3 DAX优化器集成功能不可用。
DisableDaxOptimizerUpload TE3 用户无法通过DAX优化器集成上传VertiPaq分析器文件。强制执行 DisableDaxOptimizer 时,此项也会自动生效。
RequireDaxOptimizerObfuscation TE3 用户无法通过DAX优化器集成上传明文VertiPaq分析器文件;只能上传已混淆的文件。强制执行 DisableDaxOptimizer 或 DisableDaxOptimizerUpload 时,此项也会自动生效。
DisableDax组件管理器 TE3 DAX 组件管理器不可用。
DisableAi TE3 所有 AI 功能都会关闭:AI 助手、MCP 服务器以及所有由 AI 提供支持的功能都将不可用;应用启动时不会加载任何与 AI 相关的内容;并会清除任何已存储的提供程序配置(包括 API 密钥)。
DisableAiChat TE3 AI 助手聊天面板不可用。其他 AI 功能(包括 MCP 服务器)不受影响。
DisableMcpServer TE3 MCP 服务器不可用,因此外部代理工具无法连接到 Tabular Editor 3。 AI 助手聊天不受影响。
RequireMcpAccessToken TE3 连接到 MCP 服务器的客户端必须提供 工具 > MCP 服务器... 对话框中显示的访问令牌,而且用户无法关闭这一要求。

在 TE CLI 中

在 Windows 上,Tabular Editor CLI 会遵循上文标记为 CLI 的策略,并按与 Tabular Editor 3 相同的顺序读取相同的键。它也会遵循下方企业策略中的 BlockUnsafeScripts,适用于 te script、te macro run 和 te bpa run --fix。

被拒绝的操作不会悄无声息。 te 会指出拒绝该操作的策略,并以非零代码退出,因此流水线步骤会失败,而不是看起来成功却什么也没做。

CLI 没有版本之分,因此,在桌面应用中要求使用 Tabular Editor 3 企业版的策略,CLI 都会直接应用,无论该计算机持有什么许可证。

企业策略

这些策略决定 C# Script 可以执行哪些操作,并配置 AI Assistant 和 MCP 服务器。它们都要求使用 Tabular Editor 3 企业版,并且应位于 Tabular Editor ApS\TE3 下;但 BlockUnsafeScripts 例外,Tabular Editor CLI 也会遵循它,因此它应放在共享的 Tabular Editor ApS 键中。如果只想让两者中的一个生效,请改为将其放在 TE3 或 TECLI 下。

脚本和宏

值 类型 作用
BlockUnsafeScripts 开/关 仅当 C# Script 和宏的操作限定在语义模型范围内时,才允许使用。凡是读取或写入文件、访问网络、启动其他程序、引入外部代码,或直接向服务器发送命令的脚本,都会在执行前被拒绝。

无论脚本在哪里运行,此限制都适用:脚本文档中的 运行脚本 和 运行并预览,Best Practice Analyzer 中的 应用修复,AI Assistant、MCP 服务器,以及命令行中的 te script、用于宏的 te macro run 和 te bpa run --fix。被拒绝的脚本不算脚本执行失败。模型不会受到任何影响,错误列表仍为空,并且 脚本未运行 对话框会显示对应的策略以及脚本使用了哪些功能。

超出模型范围的宏不会出现在任何菜单中,因此无法被误运行。它仍会列在 视图 > 宏 中,并且其 Blocked 列会被填充;你仍然可以打开并编辑它,这样就能把它改回允许范围内,而不必从头重写。这类宏可以保存,界面也会提示已保存,但实际上无法运行。

是否算作“保持在模型范围内”,是通过分析已编译的脚本来判断的,而不是通过搜索脚本文本。因此,任何通过间接方式到达同一位置的途径——反射、表达式树、Activator、AppDomain、XML 读取器或反序列化——同样会被拒绝。在内置的辅助方法中,SaveFile、ExecuteCommand 和 Bpa.ExportCsv 这三个会向模型外部写入,因此被视为不安全;仅执行读取的方法则不算,包括 ReadFile、ExecuteDax、EvaluateDax、ExecuteReader 和 ExportProperties。如需从脚本作者的角度了解同一规则,请参阅管理员策略。

在组策略编辑器中,此项名为 仅允许保持在模型范围内的脚本和宏。由于它写入共享注册表项,因此它直接位于 管理模板 > Tabular Editor 下,而不是 Tabular Editor 3 子文件夹中。

权限上限

其中每一项都会为 AI Assistant 和 MCP 服务器可访问的某一类资源设定上限。可接受的值为 Deny、Read 和 Write,但模型数据除外,因为对模型数据来说,Read 已是最高且有意义的设置。

上限会限制用户可授予的权限:任何高于上限的现有权限都会被下调到该上限;工具 > 偏好 > AI 功能 > 权限 下对应的选项以及 工具 > MCP Server... 对话框中的对应选项都会显示为只读;AI Assistant 也不会再请求无法授予的权限。任何授权都不能高于上限——无论是常设权限、针对单个模型授予的权限,还是在早期版本中授予的权限。用户自己在偏好中的选择不会被改动,因此如果移除此策略,该选择会恢复生效。

值 可接受的值 限制对以下内容的访问……
MaxModelMetadataAccess Deny, Read, Write 当前打开模型的元数据:表、列和度量值名称、表达式、说明、Best Practice Analyzer 结果以及 VertiPaq 统计信息。 Write 还允许助手对模型运行其自身的 C# Script。当设为 Deny 时,与当前打开模型有关的任何内容都不会发送——没有模型摘要、没有模型更改通知,也没有当前选择。
MaxModelDataAccess Deny, Read 模型中的数据值,也就是 DAX 查询的结果。
MaxBpaAccess Deny, Read, Write Best Practice Analyzer 规则。 Read 允许列出规则并运行分析;Write 还允许添加和修改规则。
MaxDocumentsAccess Deny, Read, Write 用户当前打开的文档,例如 C# Script 脚本和 DAX 查询。 Read 允许读取其内容;Write 还允许对其进行修改。
最大宏访问权限 拒绝、读取、写入 用户的宏库。
McpMaxModelMetadataAccess Deny, Read, Write 同样的五类资源,但仅适用于 MCP 服务器。
McpMaxModelDataAccess Deny, Read
McpMaxBpaAccess Deny, Read, Write
McpMaxDocumentsAccess 拒绝、读取、写入
Mcp 最大宏访问权限 Deny, Read, Write

这五个 McpMax... 值仅适用于 MCP 服务器。当其中某个值未设置时,MCP 服务器会继承对应的 Max... 限制。它们只能降低该限制,不能提高,因此无人值守代理的权限绝不会超过交互式助手。

AI 提供商

值 类型 可接受的值 用途
AiProvider 选项 None, OpenAI, Anthropic, AzureOpenAI, Custom 将 AI 助手锁定为仅使用一个提供商。 None 会关闭 AI 助手;MCP 服务器不受影响。
AiEndpoint 地址 锁定请求发送到的端点或基础 URL,例如内部 Gateway 或 Azure OpenAI 资源。
AiModel 姓名 锁定模型或 Azure OpenAI 部署名称。聊天面板中的模型选择器会被替换为一个仅作显示的指示器,因此用户无法切换模型。
AiOrganizationId 姓名 锁定 OpenAI 请求的计费组织。
AiProjectId 姓名 锁定 OpenAI 请求的计费项目。
AiAllowedProviders 列表 上述任一提供商名称 限制用户可配置的提供商。即使未在列表中,AiProvider 设置的提供商也始终允许使用,且始终提供 None——允许列表并不能阻止用户关闭助手。
AiAllowedEndpointHosts 列表 主机名 限制端点可指向的主机,例如 gateway.contoso.com 或 *.contoso.com。

锁定的设置会在 工具 > 偏好 > AI 功能 > AI 助手 下显示为只读;无论用户之前如何选择,AI 助手都会使用锁定的配置。不会向用户自己的偏好中写入任何内容,因此如果移除该策略,提供程序、终结点、模型和 API 密钥将恢复为用户原先设置的值。策略绝不会分发 API 密钥。

主机名仅与终结点 URL 的主机部分匹配。匹配时不区分大小写,也会忽略端口。前导 *. 可匹配某个域的子域,但不包括该域本身,因此如果两者都需要,请同时列出。只要设置了终结点,此列表就会对所有提供程序生效,因此无法通过 base URL 覆盖来绕过它。

策略不允许的配置会被拒绝。AI 助手不会发送请求,而是说明是哪条规则拒绝了该配置:提供程序不在允许列表中、终结点主机不在主机允许列表中、在主机允许列表生效时终结点不是有效 URL,或者已锁定的 Azure OpenAI 或 Custom 提供程序完全没有终结点。

自定义指令

值 类型 作用
AiCustomInstructionsPath 路径 指定一个“自定义说明”文件夹;除了产品随附的说明外,AI 助手还会为每个用户加载该文件夹中的内容。支持指向只读网络共享的 UNC 路径。如果组织说明与用户自己的说明使用相同的标识符,则以组织说明为准。
DisableUserCustomInstructions 开/关 AI 助手会忽略用户放在自己文件夹中的“自定义说明”,用于打开该文件夹的按钮也将被禁用。产品随附的说明以及任何组织文件夹中的说明仍会加载。

MCP 服务器

值 类型 作用
McpDisabledTools 列表 指定永远不会提供给已连接客户端的 MCP 工具名称。列出的工具不会出现在客户端的工具列表中,即使客户端按名称请求其中某个工具,也会拒绝执行。 AI 助手聊天功能不受影响。
McpPort 数值范围:1024–49151 固定 MCP 服务器侦听的端口,这样整个组织就可以共享同一份客户端配置。默认值为 42100。服务器始终只侦听回环地址。

审计日志

Tabular Editor 3 会在本地保留 AI 助手和 MCP 服务器活动记录——包括工具调用、权限决策、配置以及服务器会话。不会记录提示或响应的文本内容。

此记录功能仅在企业版中提供。在企业版、咨询版和试用版许可证下,会写入该记录;并且在 工具 > 偏好 > AI 功能 和 工具 > MCP 服务器... 对话框中会显示 打开审计文件夹。在 Desktop 版和 Business 版中,以及在许可证激活之前,不会写入任何内容,也不会创建文件夹,并且两个位置都不会显示该按钮。参见 @ai-audit-log。

值 类型 作用
AiAuditLogPath 路径 重定向审计日志,以便集中收集。支持指向网络共享的 UNC 路径。未设置该策略时,日志会写入 %LocalAppData%\TabularEditor3\AI\audit,每天生成一个 ai-audit-<date>.jsonl 文件;记录的脚本存放在 audit\scripts\<date> 下。
AiAuditLogRetentionDays 数值范围:0–3650 保留审计日志的天数;更旧的文件会被删除。 0 表示全部保留。默认值为 30 天。

没有企业版时会发生什么

企业策略绝不会被悄悄忽略。如果上面的企业版表格中设置了任何值——哪怕只设置了一个 Tabular Editor 无法解析的值——而已安装的 Tabular Editor 3 又未获得企业版许可,AI Assistant 和 MCP 服务器都会拒绝启动;AI Assistant 还会提示你的组织已配置需要 Tabular Editor 3 企业版的 AI 策略,并点名列出相关值。 Tabular Editor 3 中的其他所有功能仍可正常运行,上述通用策略也会继续生效。

当某个值无法被解释时,企业策略也会采用“默认拒绝”,即 fail closed 的方式。如果权限限制值写错了,会拒绝访问该资源,而不会被当作“无限制”;如果提供程序名称不被 Tabular Editor 识别,AI Assistant 就会不可用,而不会回退到用户自己的选择。

BlockUnsafeScripts 也会以同样的默认拒绝方式处理,而且有必要确切了解它的行为,因为它影响的不只是 AI 相关界面。如果当前安装的副本未获得企业版许可,只要存在该值,就会阻止所有脚本和宏运行,无论是否安全,并显示一条消息,说明所需的版本;宏会从菜单中消失,直到激活企业版许可证,且激活后无需重启就会恢复到菜单中。读取方无法解析的值会强制执行限制,而不是解除限制。显式的 0 不会强制实施该限制,但仍会被视为已配置,因此它同样会让 AI 相关界面只能在企业版中使用。

要在没有企业版许可证的情况下关闭所有 AI 功能,请使用通用 DisableAi 策略。

查看当前生效的策略

打开 工具 > 偏好 > Tabular Editor > 更新和反馈。当设置了任意策略时,由你的组织管理部分会列出 Tabular Editor 找到的每个值、该值本身,以及它来自哪个注册表项和注册表配置单元。 Tabular Editor 无法解释的值会标记为 (无效),这是找出看似没有效果的策略中拼写错误的最快方法。

在 偏好 的其他位置,以及 工具 > MCP Server... 对话框中,凡是被策略锁定或限制的控件都会显示为只读,并带有工具提示,说明该设置由你的组织策略控制。

使用管理模板

Tabular Editor 3.27 及更高版本会安装一对组策略管理模板,因此可在组策略编辑器中设置上述策略,而不必直接编辑注册表。你可以在安装目录下的 Policies 文件夹中找到它们,默认路径为 C:\Program Files\Tabular Editor 3\Policies:

  • TabularEditorApS.admx
  • en-US\TabularEditorApS.adml

若要在单台计算机上使用它们,请将这两个文件复制到 %SystemRoot%\PolicyDefinitions,并保留 en-US 文件夹结构:

C:\Windows\PolicyDefinitions\TabularEditorApS.admx
C:\Windows\PolicyDefinitions\en-US\TabularEditorApS.adml

若要在整个域中使用它们,请改为将它们复制到域控制器上的中央存储,并保留相同的目录结构:

\\<your-domain>\SYSVOL\<your-domain>\Policies\PolicyDefinitions\TabularEditorApS.admx
\\<your-domain>\SYSVOL\<your-domain>\Policies\PolicyDefinitions\en-US\TabularEditorApS.adml

然后打开本地组策略编辑器 (gpedit.msc) 或组策略管理编辑器,并查看以下位置:

  • 整台计算机范围的策略:计算机配置 > 管理模板 > Tabular Editor
  • 按用户生效的策略位于 用户配置 > 管理模板 > Tabular Editor 下

Tabular Editor 3 与 CLI 共用的策略直接位于 Tabular Editor 下。仅 Tabular Editor 3 会遵循的策略位于 Tabular Editor > Tabular Editor 3 下;AI 助手、MCP 服务器和 DAX优化器集成则分别位于各自的子文件夹中。

将策略设置为 已启用 会写入其注册表值。将其设置为 已禁用,或保留为 未配置,表示该策略不会被强制执行。这些模板不会写入旧版 Kapacity\Tabular Editor 键,因此如果某项策略还需要作用于 Tabular Editor 2,请手动设置该键。

对于企业版策略,已禁用 会删除注册表值,而不是写入 0。这是刻意设计的:只要存在任何企业版相关的值,AI 助手和 MCP 服务器就会受到企业版许可证检查,因此管理员刚关闭的策略不能遗留任何值。

禁用 Web 通信

如果希望确保 Tabular Editor 不会发起任何 Web 请求,请设置 DisableUpdates、DisableBpaDownload、DisableWebDaxFormatter、DisableErrorReports、DisableTelemetry、DisableDaxOptimizer、DisableDaxPackageManager 和 DisableAi 策略。

Note

即使已指定上述策略,Tabular Editor 3 仍会偶尔向 https://api.tabulareditor.com 发起请求,用于许可证验证。如果 Tabular Editor 3 无法访问此终结点(例如由于防火墙或代理),用户就必须每 30 天为该产品执行一次手动激活。

禁用自定义脚本

如果你想确保 Tabular Editor 不允许用户执行任意代码,请指定 DisableCSharpScripts 和 DisableMacros 策略。

如果贵组织希望保留脚本功能,但不希望任何脚本访问文件系统、网络或其他程序,请改用 BlockUnsafeScripts。脚本和宏仍可对模型执行操作,只有超出模型范围的部分会被拒绝。该策略需要企业版;上面两项则适用于所有版本。

禁用 AI 功能

如果希望禁用所有 AI 功能,请设置 DisableAi 策略。这会阻止任何与 AI 相关的内容在启动时加载,并清除任何已存储的 API 密钥配置。它适用于所有版本,无需企业版许可证。

从 3.27.0 起,安装程序也会从全部六个键读取该策略,并遵循相同的优先级顺序。全新安装将不包含 AI 组件,而升级会将其从已安装该组件的计算机中移除。现有安装会保留 AI 文件直到下一次升级;在设置该策略期间,Tabular Editor 3 不会加载它们。将该值设置为 1 的 REG_DWORD:安装程序将 1 视为 禁用,将任何其他已存在的值视为 未禁用;而应用程序则接受任何非零值。参见使用 DisableAi 策略强制执行该决定,了解如何将功能选择与该策略一并部署。

若要保留 AI 助手但限制其可执行的操作,请改用上述企业版策略:将权限上限设置为贵组织可接受的范围,将提供程序和终结点锁定到由贵方运营的 Gateway,并使用 McpDisabledTools 为已连接的代理禁用特定工具。