[Документация Yandex Cloud](../../index.md) > [Yandex MPP Analytics for PostgreSQL](../index.md) > [Концепции](overview.md) > Пользователи и роли

# Пользователи и роли в Yandex MPP Analytics for PostgreSQL

Yandex MPP Analytics for PostgreSQL управляет правами доступа к базе данных с помощью ролей. Роли могут владеть объектами базы данных (например, таблицами) и иметь [атрибуты](#attributes) и [привилегии](#privileges). От имени одной роли можно назначать привилегии другим ролям.

Пользователь в Yandex MPP Analytics for PostgreSQL — это роль, которая может авторизоваться в базе данных. Для этого ей предоставляется [атрибут](#attributes) `LOGIN`.

Наибольшими привилегиями среди всех пользователей обладает пользователь-администратор с ролью [mdb_admin](#mdb_admin).

## Атрибуты {#attributes}

У роли есть атрибуты, определяющие, какие задачи она может выполнять в базе данных.

| Атрибуты                                | Описание                                                                                                                                                                                                                                                                                                                    |
| :-------------------------------------- |:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `SUPERUSER` или `NOSUPERUSER`           | Является ли роль суперпользователем. В Yandex MPP Analytics for PostgreSQL атрибут `SUPERUSER` назначен служебным ролям `gpadmin` и `monitor` и недоступен пользователям сервиса.                                                                                                                                                                |
| `CREATEDB` или `NOCREATEDB`             | Разрешение или запрет на создание базы данных. По умолчанию — `NOCREATEDB`.                                                                                                                                                                                                                                                 |
| `CREATEROLE` или `NOCREATEROLE`         | Разрешение или запрет на создание других ролей и управление ими. По умолчанию — `NOCREATEROLE`.                                                                                                                                                                                                                             |
| `INHERIT` или `NOINHERIT`               | Наследует ли роль привилегии ролей, в [составе которых](#group-roles) она находится. По умолчанию — `INHERIT`.                                                                                                                                                                                                              |
| `LOGIN` или `NOLOGIN`                   | Может ли роль авторизоваться в системе, т. е. является ли роль пользователем. По умолчанию — `NOLOGIN`.                                                                                                                                                                                                                     |
| `CONNECTION LIMIT <значение>`           | Количество одновременных подключений для роли с атрибутом `LOGIN`. Значение по умолчанию — `-1` (количество не ограничено).                                                                                                                                                                                                 |
| `CREATEEXTTABLE` или `NOCREATEEXTTABLE` | Разрешение или запрет на создание внешних таблиц. По умолчанию — `NOCREATEEXTTABLE`.                                                                                                                                                                                                                                        |
| `PASSWORD '<пароль>'`                   | Задание пароля для роли. Если аутентификация для роли не требуется, этот атрибут можно не указывать.                                                                                                                                                                                                                        |
| `ENCRYPTED` или `UNENCRYPTED`           | Сохранение пароля в виде хеш-строки или в открытом текстовом виде. По умолчанию — `ENCRYPTED`. Подробнее о защите паролей для входа читайте в [документации Greenplum®](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-greenplum/7/greenplum-database/admin_guide-roles_privs.html#protecting-passwords-in-greenplum-database).                                       |

## Групповые роли {#group-roles}

Одни роли могут входить в состав других ролей и наследовать их привилегии. При изменении привилегий родительской роли меняются и привилегии всех ролей, входящих в ее состав. Подробнее о групповых ролях читайте в [документации Greenplum®](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-greenplum/7/greenplum-database/admin_guide-roles_privs.html#role-membership).

## Привилегии {#privileges}

Привилегии определяют доступные для роли действия с объектами базы данных.

Не используйте роль `mdb_admin` для выполнения повседневных задач, т. к. ошибочная команда, отправленная от ее имени, может привести к неработоспособности кластера. Для таких задач создайте отдельные роли с минимально необходимым набором привилегий:

#|
||**Тип объекта**
|**Привилегии**||
||Таблицы, внешние таблицы, представления
|`SELECT`
`INSERT`
`UPDATE`
`DELETE`
`REFERENCES`
`TRIGGER`
`TRUNCATE`
`ALL`||
||Столбцы
|`SELECT`
`INSERT`
`UPDATE`
`REFERENCES`
`ALL`||
||Последовательности
|`USAGE`
`SELECT`
`UPDATE`
`ALL`||
||Базы данных
|`CREATE`
`CONNECT`
`TEMPORARY`
`TEMP`
`ALL`||
||Домены
|`USAGE`
`ALL`||
||Внешние оболочки данных
|`USAGE`
`ALL`||
||Внешние серверы
|`USAGE`
`ALL`||
||Функции
|`EXECUTE`
`ALL`||
||Процедурные языки
|`USAGE`
`ALL`||
||Схемы
|`CREATE`
`USAGE`
`ALL`||
||Табличные пространства
|`CREATE`
`ALL`||
||Типы
|
`USAGE`
`ALL`||
||Протоколы
|`SELECT`
`INSERT`
`ALL`||
|#

Подробнее о привилегиях и управлении ими читайте в [документации Greenplum®](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-greenplum/7/greenplum-database/admin_guide-roles_privs.html#managing-object-privileges).

## Роль mdb_admin вместо суперпользователя {#mdb_admin}

В кластере Yandex MPP Analytics for PostgreSQL не предоставляются права суперпользователя. Вместо него для работы с базами данных используйте пользователя-администратора с ролью `mdb_admin`. Такой пользователь создается вместе с кластером и позволяет выполнять следующие операции:

* [Управлять ролями и пользователями](../operations/roles-and-users.md).
* [Управлять ресурсными группами](../operations/resource-groups.md).
* [Управлять клиентскими процессами и сессиями пользователей](../operations/cluster-process.md), так как пользователь с ролью `mdb_admin` может обращаться к объектам `mdb_toolkit`.
* Обращаться к представлению [pg_stat_activity](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW) и получать информацию из него.
* Управлять объектами БД других пользователей, например таблицами. Пользователь с ролью `mdb_admin` является владельцем объектов всех пользователей.
* Использовать зарезервированный для `mdb_admin` слот для подключения.

   Если установлено слишком много подключений к БД, при еще одном подключении может возникнуть ошибка. Пользователь с ролью `mdb_admin` этого избегает, так как для него зарезервирован слот для подключения.

* Создавать БД.
* [Работать с протоколом PXF](../operations/external-tables.md):

   * Создавать внешние источники данных.
   * Создавать внешние таблицы.
   * Обращаться к учетным данным пользователей. Эти данные передаются по PXF в открытом виде.

* [Расширять кластер](../operations/cluster-expand.md): добавлять хосты-сегменты в него и перераспределять данные между ними с помощью утилиты `gp_expand`.

Имя пользователя-администратора и его пароль задаются при [создании кластера](../operations/cluster-create.md#create-cluster).

Если вы хотите предоставить привилегии пользователя-администратора другому пользователю, назначьте ему роль `mdb_admin`:

```sql
GRANT mdb_admin TO <имя_пользователя>;
```

_Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками Broadcom Inc в США и/или других странах._