SuperAPI AI 工具集

hologres-privileges

数据与分析

查看项目

更新于 10-15 19:55

技能介绍

用途:在 Hologres 中使用标准 PostgreSQL GRANT/REVOKE 语法进行细粒度访问控制,即专家权限模型(Expert Model),适用于按表、按列、按用户的精细授权。Hologres 另有 SPM(数据库级)与 SLPM(Schema 级)两种模型,本技能只聚焦专家模型。

主要能力:创建、修改、删除用户(阿里云主账号 UID、RAM 子账号 p4_<uid>、自定义用户 BASIC$name);授予或回收 Schema 的 USAGE/CREATE、表级 SELECT/INSERT/UPDATE/DELETE、列级 SELECT、视图 SELECT;支持 WITH GRANT OPTION 转授权;转移对象 Owner;用 ALTER DEFAULT PRIVILEGES 为未来对象预设权限;提供权限诊断查询(pg_roles、has_table_privilege、information_schema.role_table_grants 等)。

使用方式:先安装并配置 hologres-cli:pip install hologres-cli,export HOLOGRES_SKILL=hologres-privileges。所有 SQL 通过 hologres sql run --write 执行。典型流程:CREATE USER "p4_1822780xxx"; GRANT USAGE ON SCHEMA public TO "p4_1822780xxx"; GRANT SELECT ON TABLE public.orders TO "p4_1822780xxx"; 再用 SELECT has_table_privilege(...) 验证。

适用场景:多用户或多团队共享 Hologres 实例时,按项目角色组(如 project_dev、project_write、project_view)规划权限,结合 GRANT ON ALL TABLES 处理存量表、ALTER DEFAULT PRIVILEGES 处理增量表。

限制与注意:GRANT 仅对已存在对象生效,未来对象需用 ALTER DEFAULT PRIVILEGES;该规则只对指定角色创建的对象触发。查询任何表前必须先授予 Schema USAGE。只有 Owner 或 Superuser 可 DROP/ALTER 表。删除用户前需用 REASSIGN OWNED BY 转移其拥有对象。V3.0+ 可启用 catalog RLS(hg_experimental_enable_catalog_rls)保护元数据可见性。常见报错包括 permission denied for table/Schema 与 must be the owner of table。更多语法与诊断见 grant-revoke-reference.md、diagnostic-queries.md、best-practices.md。