PostgreSQL - используя как безопасность на уровне столбцов, так и безопасность на уровне строк - PullRequest
0 голосов
/ 11 апреля 2019

Допустим, у меня есть таблица, определенная так;

CREATE TABLE IF NOT EXISTS Users (
  name TEXT,
  email EMAIL
);

Я хотел бы разрешить всем пользователям указывать имя пользователя. Я бы хотел, чтобы только сам пользователь (прошедший проверку подлинности через JWT) мог выбирать свою электронную почту.

В идеале я хотел бы написать что-то вроде

-- Allow all selections but email
CREATE POLICY select_users ON Users FOR SELECT (name) USING (true);
-- Allow selection of email to the user itself
CREATE POLICY select_users_email ON Users FOR SELECT (email) USING
  (id = NULLIF(current_setting('jwt.claims.id', true), '')::UUID);

но это не сработает.

Как я могу объединить безопасность на уровне столбцов (разрешить кому-либо видеть имя) с безопасностью на уровне строк с помощью политики, чтобы пользователь мог только читать свою электронную почту?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...