use*_*817 1 postgresql permissions view
我正在尝试创建一个限制用户只能看到某些列的视图。我已授予对这些列的访问权限。但是当我创建视图时,我遇到了权限错误。看来我还需要授予连接列权限,这是受限制的列之一。
有没有办法授予对此受限列的访问权限,创建视图并撤销权限,但撤销权限后视图仍将运行?
当我撤销基础表的权限时,视图不会运行。
任何帮助,将不胜感激。
默认情况下,只有表的所有者才能访问表。同一个所有者应该使用您想要公开的列创建视图。然后您GRANT允许其他用户SELECT反对该视图。这是在 SQL 标准下授予访问权限的标准模型。
例子:
CREATE TABLE t1 (
pk integer PRIMARY KEY,
t1_col varchar
);
CREATE TABLE t2 (
pk integer PRIMARY KEY,
fk_t1 integer NOT NULL REFERENCES t1,
t2_col varchar,
secret varchar
);
CREATE VIEW exposed_columns AS
SELECT t1_col, t2_col
FROM t1
JOIN t2 ON t2.fk_t1 = t1.pk;
Run Code Online (Sandbox Code Playgroud)
以上所有内容仅适用于创建这些对象的角色。同一所有者可以允许其他角色访问:
GRANT SELECT ON exposed_columns TO some_role, another_role;
Run Code Online (Sandbox Code Playgroud)
分配有“some_role”或“another_role”角色的用户现在可以从视图中进行选择。视图后面的表中的其他列(例如 PK、FK 和“秘密”列)只能由所有者访问。
| 归档时间: |
|
| 查看次数: |
2939 次 |
| 最近记录: |