В этом руководстве показано, как настроить пользователей только для чтения в PostgreSQL для Redash. Первое, что вы увидите в нашей документации, — это советы по настройке источников данных для пользователей с правами только на чтение.
Мы рекомендуем это, потому что мы имели в виду Redash для визуализации данных.
Оно не построено на действии.
ВСТАВЛЯТЬ , ОБНОВЛЯТЬ или УДАЛИТЬ .
Поскольку Redash поддерживает более 40 источников данных и неограниченное количество API на основе JSON, приложение не может напрямую запрещать пользователям выполнять запросы, кроме SELECT. Благодаря этому вы можете защитить себя от того, чтобы пользователи Redash могли запускать вредоносные операторы DDL, установив для пользователей доступ только для чтения на уровне базы данных.
PostgreSQL — один из наших самых популярных источников данных.
В этой статье приведен пример настройки доступа только для чтения к любому источнику данных Postgres, включая Amazon Redshift и RDS. ?Эта статья во многом основана на превосходных почта Сообщение в блоге Amazon AWS о разрешениях Postgres.
Обзор
Прежде чем начать, я создал новую схему базы данных под названием мое приложение , принадлежащий пользователю с именем администратор приложения .Эта схема включает таблицы для Сотрудники , Вакансии И Клиенты , наполненный вымышленными данными.
Я выполнил следующие шаги:
- Создал новую роль с именем myapp-только для чтения .
- Дал ей разрешение ВЫБИРАТЬ для столов Сотрудники И Вакансии .
Предоставил ему привилегии ВЫБИРАТЬ в таблице клиенты сохранять конфиденциальность клиента.
- Создал пользователя с именем перечеркнуть и добавил его на роль myapp-только для чтения .
- Добавлен источник данных в Redash с новым именем пользователя и паролем.
перечеркнуть .
Всем пользователям и ролям, которые должны иметь возможность подключаться к базе данных или создавать объекты в общедоступной схеме, необходимо явно предоставить разрешения, прежде чем отзывать какие-либо разрешения у общественный роли в производственной среде.
Для простоты я здесь этого не делаю.
На следующих шагах мы можем убедиться, что роль myapp-только для чтения должным образом ограничены.
Но в вашей среде могут быть и другие роли с более переменными разрешениями.
Я рекомендую вам полностью проверить права доступа к вашей базе данных (независимо от того, используете ли вы Redash или нет).
Шаг 1. Создайте роль, доступную только для чтения.
Эти шаги взяты непосредственно из примера Amazon. Оператор ИСПОЛЬЗОВАНИЕ ГРАНТА важен, потому что без него другие разрешения не работают. Из документации PostgreSQL: [ИСПОЛЬЗОВАНИЕ] разрешает доступ к объектам, содержащимся в указанной схеме (при условии, что требования к собственным привилегиям объектов также соблюдены).CREATE ROLE myapp_readonly; GRANT CONNECT ON DATABASE defaultdb TO myapp_readonly; GRANT USAGE ON SCHEMA myapp TO myapp_readonly;
По сути, это позволяет грантополучателю «искать» объекты в схеме.
Шаг 2. Предоставьте разрешения новой роли
GRANT SELECT ON TABLE "myapp".
"employees" TO myapp_readonly;
GRANT SELECT ON TABLE "myapp".
"jobs" TO myapp_readonly;
GRANT SELECT (id, name) ON TABLE myapp.customers TO myapp_readonly;
Первый оператор дает полное разрешение на чтение таблиц.
сотрудник и рабочие места.
Второй оператор разрешает роль myapp_readonly просматривать только идентификаторы и имена клиентов.
Все остальные поля таблицы скрыты.
Сюда входят поля для номеров кредитных карт и контактной информации.
Эти данные должны быть доступны только администраторам, а не пользователям Redash. Это правило гарантирует, что мои пользователи Redash не увидят эти данные намеренно или нет. Если пользователь пытается сделать * ВЫБИРАТЬ ОТ клиентов** база данных выдаст ошибку разрешений.
И в браузере схемы появятся только поля идентификатора и имени.
Шаг 3. Создайте пользователя Redash и назначьте ему роль только для чтения.
CREATE USER redash WITH PASSWORD 'secret';
GRANT myapp_readonly TO redash;
Пользователь перечеркнуть это то, что мы подключим к экрану настройки источника данных в Redash. Вы должны заменить секрет надежный пароль.
Шаг 4. Подключитесь к Postgres с новым пользователем только для чтения.
Подключить Redash легко.
Просто укажите имя хоста, порт и пользовательский патч базы данных, который я только что создал.
Теперь давайте выполним несколько запросов, чтобы увидеть, насколько хорошо работают разрешения.
SELECT * FROM myapp.employees
Возвращает данные, как ожидалось.
INSERT INTO myapp.employees (name) VALUES ('Hal')
Вызывает ошибку разрешений для базы данных.
Роль myapp_readonly не позволяет ВСТАВКИ .
И Redash в любом случае не предназначен для выполнения операторов.
ВСТАВЛЯТЬ ! Наконец, выбрав из таблицы клиенты : SELECT * FROM myapp.customers;
Возвращает ошибку разрешений, поскольку роль только для чтения может обращаться только к определенным столбцам.
SELECT id, name FROM myapp.customers;
Возвращает полный список клиентов, поскольку мы запрашивали только те столбцы, к которым у пользователя есть доступ только для чтения.
Заключение
Данные — один из наиболее важных активов вашего бизнеса.Redash рекомендует использовать меры безопасности для вашей базы данных, чтобы защитить ее.
Подобные шаги гарантируют, что ваши внутренние пользователи смогут предоставлять полезную информацию, сохраняя при этом конфиденциальную информацию в безопасности от ошибок соответствия или любопытных глаз.
Теги: #Системное администрирование #Администрирование сервера #Администрирование баз данных #postgresql
-
Карачаево-Балкарская Равнина
19 Oct, 24 -
Verisign Предлагает Переехать В Штаты
19 Oct, 24 -
Хранение Информации
19 Oct, 24