我目前正在尝试在 AWS RDS 上运行的 PostgreSQL 数据库上配置 RLS。出于某种原因,我无法让它在 AWS 的 Postgres DB 上工作,但在本地它可以工作,而且一切似乎都是相同的。
这是我的设置:
PostgreSQL 版本:10.6
脚步:
SELECT * FROM pg_user;
|usename|usesysid|usecreatedb|usesuper|userepl|usebypassrls|passwd|valuntil|
|rdsadmin|10 |t| t|t| t| ******** | infinity|
|app_user|16393|t|f|f|f|********|infinity|
SELECT current_user;
> current_user
> ---------------
> app_user
CREATE TABLE rls_test (id int, name varchar(255));
INSERT INTO rls_test (1, 'test');
SELECT * FROM rls_test;
> id | name
> ----+------
> 1 | test
SELECT * FROM pg_tables where tablename='rls_test';
> schemaname | tablename | tableowner | tablespace | hasindexes | hasrules | hastriggers | rowsecurity
> ------------+-----------+------------+------------+------------+----------+-------------+-------------
> public | rls_test | app_user | | f | f | f | f
ALTER TABLE rls_test ENABLE ROW LEVEL SECURITY;
ALTER TABLE rls_test FORCE ROW LEVEL SECURITY;
SELECT * FROM pg_tables where tablename='rls_test';
> schemaname | tablename | tableowner | tablespace | hasindexes | hasrules | hastriggers | rowsecurity
> ------------+-----------+------------+------------+------------+----------+-------------+-------------
> public | rls_test | app_user | | f | f | f | t
SELECT * FROM rls_test;
> id | name
> ----+------
> 1 | test
本地运行的 Postgres DB 上的相同步骤确实有效。在新表上启用并强制 RLS 后,用户不再看到表中的条目。只有在 AWS RDS 上运行的 Postgres 上它不起作用。
有什么我可能在这里遗漏的想法吗?