Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Зеркалирование
Управление ресурсами
Безопасность
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
YMatrix поддерживает управление правами на уровне строк и столбцов с использованием представлений (views). Создавая представления, вы можете ограничить доступ пользователей к определённым строкам и столбцам. Представление может включать только те строки и столбцы, к которым у пользователя есть разрешение, тем самым скрывая конфиденциальные данные.
В этом разделе демонстрируется управление правами на уровне строк и столбцов на основе простого примера.
Создайте тестовую таблицу и вставьте образцы данных.
drop table if exists salary cascade;
create table salary (
id int
,name varchar(100)
,amount numeric
,users varchar
) distributed by (id);
insert into salary values(1,'Zhang',5000,'mxzz1'),(2,'Li',6000,'mxzz2');
drop user mxzz1;
drop user mxzz2;
create user mxzz1 with password '123123';
create user mxzz2 with password '123123';
create or replace view user_salary as
select * from salary
where users = user::varchar(64);
grant select on table user_salary to mxzz1;
grant select on table user_salary to mxzz2;
mxzz1-- Test query
psql postgres -h 127.0.0.1 -U mxzz1
-- Returns only salary information for mxzz1
select * from user_salary;
id | name | amount | users
---|-------|--------|-------
1 | Zhang | 5000 | mxzz1
mxzz2-- Test query 2
psql postgres -h 127.0.0.1 -U mxzz2
-- Returns only salary information for mxzz2
select * from user_salary;
id | name | amount | users
---|------|--------|-------
2 | Li | 6000 | mxzz2
drop user lingdao;
drop user commonuser;
create user lingdao with password '123123';
create user commonuser with password '123123';
revoke all ON salary from public;
grant select(id,name,users) on table salary to lingdao;
grant select(id,name,amount,users) on table salary to commonuser;
lingdaopsql postgres -h 127.0.0.1 -U lingdao
-- Full table query fails
select * from salary;
ERROR: permission denied for table salary
-- Query on granted columns succeeds
select id,name,users from salary;
id | name | users
---|-------|-------
1 | Zhang | mxzz1
2 | LI | mxzz2
commonuserpsql postgres -h 127.0.0.1 -U commonuser
-- Full table query succeeds
select * from salary;
id | name | amount | users
---|-------|--------|-------
1 | Zhang | 5000 | mxzz1
2 | Li | 6000 | mxzz2