다음은 행 수준 보안과 같은 것을 구현하는 방법의 예입니다. 그것을 당신의 필요에 맞게 수정하십시오!
CREATE TABLE object(
id integer PRIMARY KEY,
name text NOT NULL,
owner name NOT NULL DEFAULT current_user
);
CREATE TABLE part(
id integer PRIMARY KEY,
parent_id integer NOT NULL REFERENCES object(id),
name text NOT NULL
);
우리는 어떤 권한을 사용자에게 부여해야합니다 :
이
GRANT SELECT, INSERT ON object TO PUBLIC;
GRANT SELECT, INSERT ON part TO PUBLIC;
이제 우리는 행 수준 보안을 사용하고 part
만 INSERT
들 수 있습니다 때 owner
object
의 일치 :
ALTER TABLE part ENABLE ROW LEVEL SECURITY;
CREATE POLICY insert_only_owned ON part
FOR INSERT TO PUBLIC
WITH CHECK (EXISTS(
SELECT 1
FROM object o
WHERE o.id = parent_id
AND owner = current_user
));
화려한 Laurenz . 그것은 작동합니다. 고맙습니다. – cgfm