治理与运维

访问控制

开通人员、编入用户组、控制他们可以运行哪些模型,并以只读方式共享数据——这些都在数据库层面强制执行,而不只是在界面上藏起来。

打开 管理 → IAM (仅超级管理员可见)。这里的一切都由数据库的行级安全策略强制执行,这也是它靠得住的原因:智能体、API 调用和界面撞上的是同一套规则,因此没有哪条路径能悄悄绕过它们。

六个页签

Tab在那里能做什么
用户邀请、创建、封禁、删除;授予 / 撤销超级管理员;管理用户组成员
用户组创建、重命名、删除用户组并管理成员
访问控制模型规则与资源授权
预算按用户组的消费上限——参见 预算
设置公开注册开关、默认模型访问策略(允许还是拒绝)、追踪保留期,以及当前的超级管理员列表
SSOSAML 身份提供商配置

角色

只有两种: 超级管理员 和其他所有人。由 ADMIN_EMAIL 指定的账号是永久的引导超级管理员——即便它的记录被删掉,角色也仍然保留,所以你不会把自己锁在外面。超级管理员可以提升或降级其他人。

注意

你会预期到的那些护栏都有:不能降级、封禁或删除最后一个超级管理员,也不能封禁或删除自己。

用户

添加人员有两种方式:

  • 邮件邀请 ——由对方自己设密码。推荐这种;任何凭据都不经你的手。
  • 手动创建并给临时密码 ——适用于没配邮件发送,或者你在批量开通的场景。记得让他们改掉。

用户可以被封禁(禁止登录,但内容保留)或删除。有人离职时先封禁——删除不可撤销。

用户组

一组命名的用户。模型规则和资源授权都挂在用户组上,于是入职变成一句「加入工程组」,而不是十几条单独授权——离职也变成一次移除。

模型规则

控制某个人可以运行哪些模型。「没有规则」意味着什么,由实例自己决定—— 设置 → 默认模型访问策略:

情形默认允许(默认设置)默认拒绝
该用户没有规则,所属用户组也没有规则不受限制——所有模型可用一个模型都不能用,除非有规则把它列入允许清单
有规则适用(自己的或用户组的)可用范围 = 这些规则的并集可用范围 = 这些规则的并集(与左侧相同)
超级管理员规则对他们与对其他人一样生效完全绕过——上锁的管理员不能被自己锁在外面
规则为 openai + *该提供商的所有模型该提供商的所有模型
规则为 openrouter + openai/*前缀匹配——仅限这些模型前缀匹配——仅限这些模型

切到「拒绝」可以分步上线

这个开关对已经有规则的人毫无影响,超级管理员也从不受影响——所以合理的顺序是:先在这个页签里写好允许清单,抽查一个非管理员账号,然后再切换。被默认策略拒绝的用户会收到明确的「不在工作区策略允许范围内」错误,而不是卡住。

为什么这样设计

取并集,不是交集。同时属于两个用户组的人,两边允许的都能用——因为用户组是能力的叠加授权;若取交集,加入一个组反而可能让访问权变少,没人会预期这种行为。

强制执行发生在服务端每次对话请求分发的那一刻,因此覆盖实验场、已保存的智能体、集群节点、API 运行——以及 公开嵌入——它们为匿名访客执行所有者保存的模型,每次请求都会按所有者的生效规则校验。选择器也会过滤到允许的模型,但那只是便利——真正起作用的检查发生在请求上。不被允许的模型会返回明确错误,而不是不知所以地失败。

资源共享

把某个资源的 只读 访问权授予某个用户或用户组,位置在 管理 → IAM → 访问控制。共有十种资源类型可授权,由数据库约束强制执行:

类型被授权者获得什么
📚 知识库他们的智能体可以检索它
🗄 SQL 数据表可查询,受行筛选与列遮蔽约束
🔑 密钥可以引用使用;取值从不显示
📊 BI 仪表板可查看,受行筛选与列遮蔽约束
🧮 语义模型它的度量与维度可以被提问
🗂 数据目录数据源它抓取到的表与画像可以浏览
🤖 大模型密钥 / ☁️ 大模型凭据调用计入所有者的密钥账单
🏢 数据库 / 数据仓库连接可查询——见下文
🔌 应用数据源可同步——见下文

接收方会看到一个 已共享 徽标;编辑和删除控件会被隐藏,而且无论如何写操作都会被数据库拦下。

由于大多数授权是由行级安全策略强制执行的,智能体工具会自动继承它们——一张被共享的表,该用户的智能体无需额外配置就能查询。

收窄授权:行筛选与列遮蔽

共享一个数据集或仪表板,不一定意味着把它全部共享出去。可以给以下两种类型的授权附加两项可选限制: SQL 数据表 或 BI 仪表板 ——它们是唯二会输出数据行的类型。这两项限制对其余八种不适用,平台在那里也拒绝保存它们。

限制项整理对被授权者的影响
行筛选一个列名和一组取值他们只能看到该列取值命中其中之一的那些行
列遮蔽一组列名这些列在服务端被移除——既不在列清单里,也不在任何数据行里

某个区域负责人被授予销售表,行筛选设为 region ∈ (EMEA) ,列遮蔽设为 salary ,那么他可以自由查询这张表,但只看得到 EMEA 的行,任何回答里都不会出现薪酬列。

两者都在服务端、在数据离开之前生效——对已保存的仪表板快照、对实时数仓查询、对智能体 SQL 工具读到的行一视同仁。不存在只对其中一条生效的路径。

授权只会叠加,永不相减

同时持有两份授权,只可能让你得到 更多,绝不会更少。两个行筛选取并集:被一个团队授予 EMEA、又被另一个团队授予 APAC 的人,两边都能看到。带 否 行筛选的授权放行所有行,带 否 列遮蔽的授权什么都不隐藏——所以一份无限制的授权会让所有受限授权失去意义。要收窄某个人的范围,就得收窄 每一次 能触达他的每一份授权。有一个刻意的例外:从接入服务同步来的文档可以带上 按数据源的访问范围 ——「仅自己」或「沿用来源权限」——它会筛选 内部 已授权知识库内部的检索。该限制属于数据源的所有者,而不属于这份授权。

被遮蔽的列同时也不可用于筛选

单纯隐藏一列还不够:如果查看者仍能对它 做筛选 ,他就能通过不断缩小取值范围、观察哪些行返回,把值反推出来。因此引用了被遮蔽列的筛选条件会在查询执行前被剔除,且响应里会说明剔除了哪些,而不是默默忽略。

无法校验的限制返回空

如果结果里没有筛选所用的那一列,这个筛选就无法对它求值——而未求值的筛选视为未满足,因此那些行会被扣下。若改成跳过它,反而会 放宽 访问范围,与设置它的人的意图正好相反。

聚合类组件对受筛选的被授权者会显示为空

这是你实际会碰到的情况。一个执行 SELECT product, sum(revenue) FROM sales GROUP BY product 的组件,输出里没有 region 这一列,所以被筛选到 region ∈ (EMEA) 的被授权者看到的是一个空组件,而不是一个无视他筛选条件的全局合计。解决办法是把筛选列投影出来——按 region, product 分组——这样行才能被校验。空组件说明限制在起作用,不是查询坏了。

共享连接以其所有者身份运行

连接是行级规则的例外,因为那些记录里带着加密的 凭据。我们刻意 否 设置任何把访问权授予接收方的行级策略——那会让被授权者用自己的令牌直接从 API 取到密文。取而代之的是,授权在服务端解析,记录以服务角色加载,因此被授权者获得的是连接的 使用权 ,而永远拿不到连接本身。 {{secret:NAME}} 引用同样按所有者身份解析,绝不会用被授权者自己的密钥库。

共享的 应用数据源 以所有者身份同步,写入所有者的数据集——所以被授权者重跑一次过期的同步,刷新的是真实数据集,而不是在自己账号下另建一份平行副本。共享数据源让人能维护它;若还要让对方读取同步出来的数据,那些数据集也要一并共享。每次调用(包括定时运行)都会重新解析授权,因此撤销在下次使用时即生效。 完整说明见「数据源」.

注册策略与 SSO

仅限邀请
关掉公开注册后,数据库本身就会拒绝那些既非受邀、也非管理员创建的新账号。这是在触发器层面强制执行的,所以 OAuth 注册也一并覆盖。
SSO
接入 SAML 身份提供商,让大家用企业目录登录。可以设为强制路径。

实操示例——为一个数据分析团队开通

  1. 1

    用户组 → 新建用户组

    命名为 analytics。用户组就是你避免逐个人授权的手段。
  2. 2

    用户 → 添加用户 → 邮件邀请

    由他们自己设密码,任何凭据都不经你的手。团队其他人重复一遍,然后在各自那一行把他们加入 analytics。
  3. 3

    访问控制 → 模型规则 → 主体:用户组 analytics

    添加 openai + gpt-4o-mini 和 openai + gpt-4o。该团队现在被限制在这两个模型内;组外的人除非另有规则适用,否则仍不受限制。
  4. 4

    访问控制 → 资源授权

    授权 analytics 读取权限,授予 revenue 数据表以及 Finance policies 知识库。他们的智能体现在无需额外配置就能查询这两者。
  5. 5

    预算 → 新建上限,作用范围为用户组 analytics

    在发放访问权之前就设好每月美元上限,而不是等第一次被账单惊到之后。
  6. 6

    设置 → 关闭公开注册

    在你把 URL 发出去之前就做这件事。邀请和管理员创建用户仍然照常可用。

一个稳妥的推进顺序

  • 以此身份登录: ADMIN_EMAIL 登录,确认你能看到 IAM 页面。
  • 按人们实际的协作方式建用户组,而不是照组织架构图。
  • 分享 URL 之前先关掉公开注册。
  • 在用户组上设模型规则——先宽松,再依据分析中心的数据收紧。
  • 把团队需要读取的数据集合共享出去,而不是复制一份给他们。
  • 把规则与 预算上限搭配使用:规则决定 能用什么,预算决定 能用多少.