创建限制用户可以看到的内容的 Postgresql 视图
Create a Postgresql view that restricts what a user can see
我正在尝试创建一个视图,限制用户只能看到某些列。我已授予访问这些专栏的权限。但是当我创建视图时,我 运行 进入权限错误。看来我还需要授予连接列的权限,这是受限制的列之一。
有没有办法授予对这个受限列的访问权限,创建视图并撤消权限,但在撤消权限后视图仍然运行?
当我从底层 table 撤销权限时,视图不会 运行。
如有任何帮助,我们将不胜感激。
默认情况下,表仅供其所有者访问。同一所有者应该使用您要公开的列创建视图。然后您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;
以上所有内容仅对创建这些对象的角色可用。同一所有者可以允许其他角色访问:
GRANT SELECT ON exposed_columns TO some_role, another_role;
分配了 "some_role" 或 "another_role" 角色的用户现在可以 select 从视图中查看。视图后面的表中的其他列 - 例如PK、FK 和列 "secret" - 只有所有者才能访问。
我正在尝试创建一个视图,限制用户只能看到某些列。我已授予访问这些专栏的权限。但是当我创建视图时,我 运行 进入权限错误。看来我还需要授予连接列的权限,这是受限制的列之一。
有没有办法授予对这个受限列的访问权限,创建视图并撤消权限,但在撤消权限后视图仍然运行?
当我从底层 table 撤销权限时,视图不会 运行。
如有任何帮助,我们将不胜感激。
默认情况下,表仅供其所有者访问。同一所有者应该使用您要公开的列创建视图。然后您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;
以上所有内容仅对创建这些对象的角色可用。同一所有者可以允许其他角色访问:
GRANT SELECT ON exposed_columns TO some_role, another_role;
分配了 "some_role" 或 "another_role" 角色的用户现在可以 select 从视图中查看。视图后面的表中的其他列 - 例如PK、FK 和列 "secret" - 只有所有者才能访问。