mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
ALTER TABLE .. FORCE ROW LEVEL SECURITY
To allow users to force RLS to always be applied, even for table owners, add ALTER TABLE .. FORCE ROW LEVEL SECURITY. row_security=off overrides FORCE ROW LEVEL SECURITY, to ensure pg_dump output is complete (by default). Also add SECURITY_NOFORCE_RLS context to avoid data corruption when ALTER TABLE .. FORCE ROW SECURITY is being used. The SECURITY_NOFORCE_RLS security context is used only during referential integrity checks and is only considered in check_enable_rls() after we have already checked that the current user is the owner of the relation (which should always be the case during referential integrity checks). Back-patch to 9.5 where RLS was added.
This commit is contained in:
@ -1971,6 +1971,16 @@
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><structfield>relforcerowsecurity</structfield></entry>
|
||||
<entry><type>bool</type></entry>
|
||||
<entry></entry>
|
||||
<entry>
|
||||
True if row level security (when enabled) will also apply to table owner; see
|
||||
<link linkend="catalog-pg-policy"><structname>pg_policy</structname></link> catalog
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><structfield>relispopulated</structfield></entry>
|
||||
<entry><type>bool</type></entry>
|
||||
|
@ -61,6 +61,8 @@ ALTER TABLE ALL IN TABLESPACE <replaceable class="PARAMETER">name</replaceable>
|
||||
ENABLE ALWAYS RULE <replaceable class="PARAMETER">rewrite_rule_name</replaceable>
|
||||
DISABLE ROW LEVEL SECURITY
|
||||
ENABLE ROW LEVEL SECURITY
|
||||
FORCE ROW LEVEL SECURITY
|
||||
NO FORCE ROW LEVEL SECURITY
|
||||
CLUSTER ON <replaceable class="PARAMETER">index_name</replaceable>
|
||||
SET WITHOUT CLUSTER
|
||||
SET WITH OIDS
|
||||
@ -431,6 +433,21 @@ ALTER TABLE ALL IN TABLESPACE <replaceable class="PARAMETER">name</replaceable>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>NO FORCE</literal>/<literal>FORCE ROW LEVEL SECURITY</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
These forms control the application of row security policies belonging
|
||||
to the table when the user is the table owner. If enabled, row level
|
||||
security policies will be applied when the user is the table owner. If
|
||||
disabled (the default) then row level security will not be applied when
|
||||
the user is the table owner.
|
||||
See also
|
||||
<xref linkend="SQL-CREATEPOLICY">.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>CLUSTER ON</literal></term>
|
||||
<listitem>
|
||||
|
Reference in New Issue
Block a user