# Разрешения на данные Эта страница описывает разрешения для баз данных и таблиц. ## Обзор разрешений Если у вас есть несколько групп и несколько баз данных, вы можете контролировать доступ к ним, перейдя в **Настройки администратора** > **Разрешения**. Вы увидите интерактивную таблицу, которая отображает все ваши базы данных и все ваши группы, а также уровень доступа, который имеют ваши группы для каждой базы данных. ## Установка разрешений на базу данных Вы можете регулировать различные уровни разрешений на источник данных, от доступа к выборкам данных до управления подключением к базе данных. - [Доступ к данным](#data-access) - [Нативные запросы](#native-query-editing) - [Выгрузка результатов](#download-results)\* - [Управление метаданными таблиц](#manage-table-metadata)\* - [Управление базой данных](#manage-database)\* ## Доступ к данным Уровни доступа к данным определяют, какие данные люди могут использовать, чтобы задавать _новые_ вопросы. Доступ к данным отличается от [разрешений на коллекции](./collections.md), которые определяют, какие существующие объекты пользователи могут просматривать: дашборды, вопросы или модели. GlarusBI предоставляет как грубые, так и точные инструменты для настройки прав доступа к данным, соответствующих вашим потребностям. Вы можете нажать на любую ячейку в таблице разрешений, чтобы изменить уровень доступа группы. Когда вы закончите вносить изменения, просто нажмите кнопку **Сохранить изменения** в верхнем правом углу, и вы увидите диалоговое окно подтверждения, в котором будут показаны все изменения, которые вы сделали. GlarusBI обеспечивает различные типы доступа к данным: - [Неограниченный](#unrestricted-access) (включая нативный/SQL доступ на редактирование) - [Детализированный](#granular-access) (включающий в себя доступ к песочнице) - [Не обслуживается](#no-self-service-access) - [Имперсонифицированный](#impersonation-access) - [Заблокированный](#block-access) ## Неограниченный доступ Пользователи, которые включены в группу могут создавать вопросы с использованием мастера запросов на данные из всех таблиц (во всех пространствах имен/схемах, если они используются в вашей базе данных), в том числе и на таблицы, которые могут быть добавлены в эту базу данных в будущем. Чтобы предоставить группе возможность написания вопросов на нативном, или на SQL языке, вы также должны установить настройку **Встроенное редактирование вопросов** в значение **Да**. ## Детализированные права доступа **Детализированные права доступа** позволяют администраторам явно устанавливать доступ к данным к таблицам или схемам внутри базы данных, где **доступ к данным** означает возможность создавать вопросы с использованием мастера запросов. На практике это означает: - Администраторы могут установить для групп доступ к отдельным таблицам либо как **Неограниченный**, **Без самообслуживания** или **Ограниченный**. - Если в будущем в базу данных будет добавлена новая таблица, группа не получит к ней доступ. Администратор должен будет явно разрешить доступ к этой таблице. Обратите внимание, что уровень доступа **Блокировка** недоступен для отдельных таблиц/схем. **Блокировка** - это настройка на уровне базы данных, и вы можете заблокировать только всю базу данных целиком. ## Нет доступа к самообслуживанию **Не обслуживается** запрещает доступ пользователям из групп к использованию мастера запросов для создания новых вопросов, или от доступа к самой базе данных в разделе "Просмотр данных". Группы с уровнем доступа **Не обслуживается** все еще могут видеть сохраненные вопросы, которые запрашивают эти данные, если у них есть доступ к соответствующей коллекции, и если они не являются членами группы с блокированным доступом к базе данных. ## Имперсонифицированный доступ > На данный момент имперсонифицированный доступ возможен только для PostgreSQL и Snowflake. **Имперсонифицированный доступ** позволяет связать атрибуты пользователя с определенными в базе данных ролями и их привилегиями. Запросы к GlarusBI, совершаемые людьми с установленными вами атрибутами, будут выполняться с учетом прав, предоставленных ролям базы данных. Вы можете использовать имперсонификацию, чтобы предоставить людям доступ к нативному/SQL редактору и, в то же время, ограничить их доступ к данным на основе определенной роли базы данных. И не только доступ на уровне таблиц, но и доступ на уровне строк - в зависимости от того, как вы определяете доступ для этой роли в своей базе данных. По сути, это означает, что вы можете использовать имперсонификацию для настройки доступа к вашим данным наподобие песочницы, позволяя людям использовать редактор SQL для запроса этих данных. Разница в том, что вместо настройки песочницы в GlarusBI вам необходимо настроить безопасность на уровне строк с помощью привилегий, предоставленных данной роли в вашей базе данных. Когда вы подключаете GlarusBI к базе данных, вы используете учетную запись пользователя базы данных, имеющую одну или несколько ролей базы данных. Когда вы предоставляете группе пользователей в GlarusBI неограниченный доступ к базе данных, эта группа будет иметь те же привилегии, что и учетная запись пользователя, которую вы использовали для подключения GlarusBI к этой базе данных. Если вместо этого вы хотите предоставить группе пользователей доступ через SQL к некоторым, но не ко всем схемам или таблицам в этой базе данных, вы можете создать дополнительную роль в вашей базе данных, которая включает только подмножество этих таблиц или даже определенный доступ на уровне строк, а затем использовать функцию имперсонификации GlarusBI, чтобы связать атрибут пользователя с этой ролью. По сути, GlarusBI будет брать атрибут пользователя и передавать этот атрибут в виде строки в команду `SET ROLE` или `USE ROLE` для базы данных _до того_, как GlarusBI выполнит запрос. ### Настройка подключения для имперсонификации **В вашей базе данных:** - Создайте новую роль. - Назначьте этой роли привилегии. Чтобы узнать, как именно создать новую роль в вашей базе данных и предоставить ей привилегии, вам необходимо обратиться к документации вашей базы данных. У нас также есть документация по [пользователям, ролям и привилегиям](../databases/users-roles-privileges.md), которая поможет вам начать работу. **В вашей GlarusBI:** - Создайте [новую группу](../people-and-groups/managing.md#groups) или выберите уже существующую. - Назначьте [атрибут пользователя](../people-and-groups/managing.md#adding-a-user-attribute) этой группе пользователей. Вы будете использовать этот атрибут пользователя, чтобы связать данную группу с ролью, которую вы создали в своей базе данных. Например, если вы создали в базе данных роль под названием "Продавец" с доступом к определенному подмножеству таблиц, то вы должны добавить в группу пользовательский атрибут "Продавец". Атрибут пользователя должен совпадать с названием роли в вашей базе данных. Некоторые базы данных чувствительны к регистру, поэтому вам стоит проверить, что имя атрибута и роль в точности совпадают. - Далее вам нужно будет применить имперсонифицированный доступ к этой группе. Откройте **Настройки администратора** > **Разрешения** > **Данные**. - Выберите базу данных, для которой вы хотите установить разрешения. - Найдите группу, которую вы хотите связать с созданной вами ролью базы данных. В разделе **Доступ к данным** для этой группы выберите **Имперсонификация**. - В раскрывающемся списке выберите добавленный вами атрибут пользователя, который соответствует роли, которую группа должна использовать при запросе к базе данных. - Сохраните изменения. Имейте в виду, что GlarusBI предоставляет пользователям наиболее полный доступ к данным из числа имеющихся в их группах. Таким образом, если пользователь входит в одну группу с имперсонализированным доступом, и в другую группу с неограниченным доступом, неограниченный доступ будет иметь приоритет перед имперсонализированным. ## Блокировка доступа **Блокировка** гарантирует, что пользователи в группе не смогут видеть данные из этой базы данных, независимо от их разрешений на уровне коллекции. Даже если вопрос находится в коллекции, для которой у группы есть доступ, но этот вопрос запрашивает базу данных, которая заблокирована для этой группы, пользователи в этой группе не смогут просматривать этот вопрос, _если только_ они не находятся в другой группе с выданными разрешениями. В основном, **Блокировка** делает так, что разрешения коллекций недостаточны для просмотра вопроса. Если участник этой заблокированной группы принадлежит другой группе, которая имеет соответствующий доступ к данным, то этот доступ с более высокими привилегиями будет иметь приоритет (заменяя блокировку) и они смогут просматривать этот вопрос. "Соответствующий доступ к данным" здесь определяет, был ли сохраненный вопрос создан с помощью графического редактора запросов или редактора SQL, так как требуемые разрешения для отмены блокировки зависят от того, как именно был создан вопрос. - Если вопрос был создан с помощью [графического редактора запросов](../questions/native-editor/writing-sql.md), то пользователю также нужно быть участником группы с **Неограниченным доступом к данным** или **Ограниченным доступом** к соответствующей базе данных (или таблице), чтобы просматривать этот вопрос. - Если вопрос был создан с помощью [редактора SQL](../questions/native-editor/writing-sql.md), то пользователю нужно быть участником группы с **Неограниченным доступом к данным** и **Редактированием SQL**, установленным в **Да**, чтобы просматривать этот вопрос. ## Разрешения на таблицы Если вы выберете **Детализированный доступ** для базы данных, вам предложат установить разрешения для таблиц (или схем) в этой базе данных. Здесь у вас будут несколько вариантов, которые могут отличаться в зависимости от плана GlarusBI. ### Неограниченный доступ к таблице Группы с неограниченным доступом могут использовать [графический редактор запросов](../questions/query-builder/introduction.md) для задания вопросов об этой таблице. ### Нет доступа к самообслуживанию таблиц Группы с ограниченным доступом не могут вообще получить доступ к таблице. Однако они могут просматривать вопросы, использующие данные из этой таблицы, если группа имеет доступ к коллекции вопросов и они не находятся в группе с блокированным доступом к базе данных. ### Доступ к таблице с типом "песочница" Группы доступа к таблице с типом "песочница" могут ограничить доступ к столбцам и строкам таблицы. Ознакомьтесь с разделом **доступ к данным**. ## Редактирование нативных запросов Пользователи группы с установленным редактированием нативных запросов в "Да" могут: - Создать новый запрос с помощью [редактора нативных запросов](../questions/native-editor/writing-sql.md). - Создать и редактировать [пользовательские действия](../actions/custom.md). Этот уровень доступа требует, чтобы группа дополнительно имела неограниченный доступ к данным для соответствующей базы данных, поскольку SQL-запросы могут обойти разрешения на уровне таблицы. Пользователи в группе без разрешений на редактирование нативных запросов по-прежнему смогут просматривать результаты вопросов, созданных из SQL/нативных запросов (хотя только результаты, а не сам запрос), или запускать действие, при условии, что они 1) имеют доступ к коллекции вопросов или модели и 2) он не запрашивает базу данных, которая [заблокирована](#block-access) для этой группы. ## Выгрузка результатов Вы можете установить разрешения на то, могут ли люди в группе скачивать результаты (и сколько строк) из источника данных. Возможные варианты: - Нет (они не могут скачивать результаты) - Детальный (вы хотите установить доступ для отдельных таблиц или схем) - 10 тысяч строк - 1 миллион строк ## Управление метаданными таблиц Для группы пользователей так же можно задать разрешение на редактирование [метаданных таблиц](../data-modeling/metadata-editing.md). Варианты: - Да (это означает, что они могут редактировать метаданные для этого источника данных) - Нет - Детализированный (устанавливает разрешения для каждой таблицы по отдельности) ## Управление базой данных Право доступа **Управление базой данных** дает доступ к странице настроек для определенной базы данных (**Настройки администратора** > **Базы данных** > ваша база данных). На странице настроек базы данных можно: - Редактировать любые [опции коннекта](../databases/connecting.md) к источнику данных, - [синхронизировать схемы](../databases/sync-scan.md#manually-syncing-tables-and-columns) и - [сканировать значения полей](../databases/sync-scan.md#manually-scanning-column-values). Обратите внимание, что удаление соединения с базой данных разрешено только администраторами, поэтому люди с разрешением **Управление базой данных** не увидят кнопку **Удалить базу данных**. ## Дополнительная информация - [Введение в разрешения](./introduction.md) - [Изучая разрешения. Документация Metabase](https://www.metabase.com/learn/permissions) - [Устранение неполадок с разрешениями](../troubleshooting-guide/permissions.md) - [Песочница данных: установка низкоуровневых разрешений][sandbox-rows] - [Расширенное управление песочницей данных: ограничение доступа к столбцам][sandbox-columns] - [Пользователи, роли и привилегии](../databases/users-roles-privileges.md) [collections]: ./collections.md [dashboard-subscriptions]: ../dashboards/subscriptions.md [data-sandboxing]: ./data-sandboxes.md [permissions-overview]: ./introduction.md [sandbox-columns]: https://www.metabase.com/learn/permissions/data-sandboxing-column-permissions.html [sandbox-rows]: https://www.metabase.com/learn/permissions/data-sandboxing-row-permissions.html [sql-snippet-folders]: ../questions/native-editor/sql-snippets.md