Управление ролями и пользователями
С помощью интерфейсов Yandex Cloud и команд SQL вы можете добавлять и удалять пользователей и роли, а также изменять их настройки.
SQL предоставляет дополнительные возможности, недоступные в интерфейсах Yandex Cloud:
- объединять роли в группы и изменять состав групп;
- назначать и отзывать привилегии ролей;
- задавать настройки СУБД на уровне роли.
Подробнее о командах SQL читайте в документации Greenplum®
Подробнее о пользователях и ролях читайте в разделе Пользователи и роли в Yandex MPP Analytics for PostgreSQL.
Получить список пользователей и ролей
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
Чтобы получить список пользователей и ролей кластера, выполните команду:
yc managed-greenplum users list --cluster-id <идентификатор_кластера>
Вместо параметра --cluster-id можно использовать параметр --cluster-name, указав в нем имя кластера. Идентификатор и имя кластера можно получить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом User.List и выполните запрос, например, с помощью cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.yandexcloud.kz/managed-greenplum/v1/clusters/<идентификатор_кластера>/users'Идентификатор кластера можно получить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом UserService.List и выполните запрос ListUsersRequest, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/greenplum/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>" }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.greenplum.v1.UserService.ListИдентификатор кластера можно получить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Для выполнения операций с помощью SQL подключитесь к базе данных от имени пользователя с ролью mdb_admin.
Запросы к pg_roles возвращают пользователей и остальные роли внутри базы данных.
Выполните команду:
SELECT rolname FROM pg_roles;
Чтобы посмотреть список ролей с их привилегиями, выполните команду:
SELECT
rolname,
rolsuper,
rolcreatedb,
rolcreaterole,
rolinherit,
rolcanlogin,
rolconnlimit,
rolcreaterextgpfd
FROM pg_roles;
Результат:
rolname | rolsuper | rolcreatedb | rolcreaterole | rolinherit | rolcanlogin | rolconnlimit | rolcreaterextgpfd
----------------+----------+-------------+---------------+------------+-------------+--------------+-------------------
mdb_admin | f | f | f | t | f | -1 | f
gpadmin | t | t | t | t | t | -1 | t
monitor | t | f | f | t | t | -1 | f
user1 | f | t | t | t | t | -1 | t
Где:
- t — наличие привилегии.
- f — отсутствие привилегии.
Создать пользователя или роль
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
Чтобы создать пользователя или роль кластера, выполните команду:
yc managed-greenplum users create <имя_пользователя> \
--cluster-id <идентификатор_кластера> \
--password <пароль> \
--login=<разрешение_на_вход> \
--resource-group <имя_ресурсной_группы> \
--pool-mode <режим_пула> \
--pool-size <количество_серверных_соединений> \
--pool-client-idle-timeout <время_ожидания_клиента> \
--pool-idle-in-transaction-timeout <время_ожидания_клиента_в_транзакции>
Где:
--password— пароль пользователя.--login— разрешение на вход в базу данных:trueилиfalse. Значение по умолчанию —true. При значенииfalseсоздается роль без возможности авторизации.--resource-group— ресурсная группа, к которой относятся запросы пользователя.--pool-mode— режим пула соединений Odyssey:sessionилиtransaction.--pool-size— количество серверных соединений в пуле Odyssey.--pool-client-idle-timeout— время неактивности клиентского соединения в секундах, после которого соединение разрывается.--pool-idle-in-transaction-timeout— время неактивности клиентского соединения с открытой транзакцией в секундах, после которого соединение разрывается.
Настройки пулера соединений Odyssey, заданные на уровне пользователя, применяются только к этому пользователю. Если отдельная настройка не задана, используется соответствующая настройка уровня кластера.
Пользовательские настройки применяются к подключениям только при наличии подходящего правила аутентификации, в котором значение поля user совпадает с именем пользователя.
Вместо параметра --cluster-id можно использовать параметр --cluster-name, указав в нем имя кластера. Идентификатор и имя кластера можно получить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом User.Create и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-greenplum/v1/clusters/<идентификатор_кластера>/users' \ --data '{ "user": { "name": "<имя_пользователя>", "password": "<пароль>", "login": <разрешение_на_вход>, "resourceGroup": "<имя_ресурсной_группы>", "settings": { "poolMode": "<режим_пула>", "poolSize": "<количество_серверных_соединений>", "poolClientIdleTimeout": "<время_ожидания_клиента>", "poolIdleInTransactionTimeout": "<время_ожидания_клиента_в_транзакции>" } } }'Где:
password— пароль пользователя.login— разрешение на вход в базу данных:trueилиfalse. Значение по умолчанию —true. При значенииfalseсоздается роль без возможности авторизации.resourceGroup— ресурсная группа, к которой относятся запросы пользователя.settings.poolMode— режим пула соединений Odyssey:SESSIONилиTRANSACTION.settings.poolSize— количество серверных соединений в пуле Odyssey.settings.poolClientIdleTimeout— время неактивности клиентского соединения в секундах, после которого соединение разрывается.settings.poolIdleInTransactionTimeout— время неактивности клиентского соединения с открытой транзакцией в секундах, после которого соединение разрывается.
Настройки пулера соединений Odyssey, заданные на уровне пользователя, применяются только к этому пользователю. Если отдельная настройка не задана, используется соответствующая настройка уровня кластера.
Пользовательские настройки применяются к подключениям только при наличии подходящего правила аутентификации, в котором значение поля
userсовпадает с именем пользователя.Идентификатор кластера можно получить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом UserService.Create и выполните запрос CreateUserRequest, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/greenplum/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "user": { "name": "<имя_пользователя>", "password": "<пароль>", "login": <разрешение_на_вход>, "resource_group": "<имя_ресурсной_группы>", "settings": { "pool_mode": "<режим_пула>", "pool_size": "<количество_серверных_соединений>", "pool_client_idle_timeout": "<время_ожидания_клиента>", "pool_idle_in_transaction_timeout": "<время_ожидания_клиента_в_транзакции>" } } }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.greenplum.v1.UserService.CreateГде:
password— пароль пользователя.login— разрешение на вход в базу данных:trueилиfalse. Значение по умолчанию —true. При значенииfalseсоздается роль без возможности авторизации.resource_group— ресурсная группа, к которой относятся запросы пользователя.settings.pool_mode— режим пула соединений Odyssey:SESSIONилиTRANSACTION.settings.pool_size— количество серверных соединений в пуле Odyssey.settings.pool_client_idle_timeout— время неактивности клиентского соединения в секундах, после которого соединение разрывается.settings.pool_idle_in_transaction_timeout— время неактивности клиентского соединения с открытой транзакцией в секундах, после которого соединение разрывается.
Настройки пулера соединений Odyssey, заданные на уровне пользователя, применяются только к этому пользователю. Если отдельная настройка не задана, используется соответствующая настройка уровня кластера.
Пользовательские настройки применяются к подключениям только при наличии подходящего правила аутентификации, в котором значение поля
userсовпадает с именем пользователя.Идентификатор кластера можно получить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Для выполнения операций с помощью SQL подключитесь к базе данных от имени пользователя с ролью mdb_admin.
Выполните команду:
CREATE ROLE <имя_роли> <список_атрибутов>;
Чтобы создать пользователя, добавьте роли атрибут LOGIN.
Доступные атрибуты читайте в разделе Атрибуты.
Изменить пароль
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
Чтобы изменить пароль пользователя, выполните команду:
yc managed-greenplum users update <имя_пользователя> \
--cluster-id <идентификатор_кластера> \
--password <новый_пароль>
Вместо параметра --cluster-id можно использовать параметр --cluster-name, указав в нем имя кластера. Идентификатор и имя кластера можно получить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом User.Update и выполните запрос, например с помощью cURL
:curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-greenplum/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>' \ --data '{ "updateMask": "password", "user": { "name": "<имя_пользователя>", "password": "<новый_пароль>" } }'Идентификатор кластера можно получить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом UserService.Update и выполните запрос UpdateUserRequest, например с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/greenplum/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": [ "password" ] }, "user": { "name": "<имя_пользователя>", "password": "<новый_пароль>" } }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.greenplum.v1.UserService.UpdateИдентификатор кластера можно получить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Для выполнения операций с помощью SQL подключитесь к базе данных от имени пользователя с ролью mdb_admin.
Чтобы изменить пароль пользователя, выполните команду:
ALTER ROLE <имя_пользователя> PASSWORD '<новый_пароль>';
Изменить настройки пользователя или роли
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
Чтобы изменить настройки пользователя или роли, выполните команду:
yc managed-greenplum users update <имя_пользователя> \
--cluster-id <идентификатор_кластера> \
--login=<разрешение_на_вход> \
--resource-group <имя_ресурсной_группы> \
--pool-mode <режим_пула> \
--pool-size <количество_серверных_соединений> \
--pool-client-idle-timeout <время_ожидания_клиента> \
--pool-idle-in-transaction-timeout <время_ожидания_клиента_в_транзакции>
Укажите только параметры, значения которых нужно изменить.
Где:
--login— разрешение на вход в базу данных:trueилиfalse.--resource-group— ресурсная группа, к которой относятся запросы пользователя.--pool-mode— режим пула соединений Odyssey:sessionилиtransaction.--pool-size— количество серверных соединений в пуле Odyssey.--pool-client-idle-timeout— время неактивности клиентского соединения в секундах, после которого соединение разрывается.--pool-idle-in-transaction-timeout— время неактивности клиентского соединения с открытой транзакцией в секундах, после которого соединение разрывается.
Чтобы сбросить настройку Odyssey и использовать значение уровня кластера, передайте соответствующий параметр без значения.
Вместо параметра --cluster-id можно использовать параметр --cluster-name, указав в нем имя кластера. Идентификатор и имя кластера можно получить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом User.Update и выполните запрос, например с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-greenplum/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>' \ --data '{ "updateMask": "login,resourceGroup,settings.poolMode,settings.poolSize,settings.poolClientIdleTimeout,settings.poolIdleInTransactionTimeout", "user": { "name": "<имя_пользователя>", "login": <разрешение_на_вход>, "resourceGroup": "<имя_ресурсной_группы>", "settings": { "poolMode": "<режим_пула>", "poolSize": "<количество_серверных_соединений>", "poolClientIdleTimeout": "<время_ожидания_клиента>", "poolIdleInTransactionTimeout": "<время_ожидания_клиента_в_транзакции>" } } }'Где:
-
updateMask— перечень изменяемых полей в одну строку через запятую. -
login— разрешение на вход в базу данных:trueилиfalse. -
resourceGroup— ресурсная группа, к которой относятся запросы пользователя. -
settings— настройки Odyssey на уровне пользователя:poolMode— режим пула соединений:SESSIONилиTRANSACTION;poolSize— количество серверных соединений в пуле;poolClientIdleTimeout— время неактивности клиентского соединения в секундах, после которого соединение разрывается;poolIdleInTransactionTimeout— время неактивности клиентского соединения с открытой транзакцией в секундах, после которого соединение разрывается.
Чтобы сбросить настройку Odyssey и использовать значение уровня кластера, укажите соответствующее поле в
updateMask, но не передавайте его значение в объектеsettings.Идентификатор кластера можно получить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом UserService.Update и выполните запрос UpdateUserRequest, например с помощью gRPCurl
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask(в виде массива строкpaths[]).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/greenplum/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": [ "login", "resource_group", "settings.pool_mode", "settings.pool_size", "settings.pool_client_idle_timeout", "settings.pool_idle_in_transaction_timeout" ] }, "user": { "name": "<имя_пользователя>", "login": <разрешение_на_вход>, "resource_group": "<имя_ресурсной_группы>", "settings": { "pool_mode": "<режим_пула>", "pool_size": "<количество_серверных_соединений>", "pool_client_idle_timeout": "<время_ожидания_клиента>", "pool_idle_in_transaction_timeout": "<время_ожидания_клиента_в_транзакции>" } } }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.greenplum.v1.UserService.UpdateГде:
-
update_mask— перечень изменяемых полей в виде массива строкpaths[]. -
login— разрешение на вход в базу данных:trueилиfalse. -
resource_group— ресурсная группа, к которой относятся запросы пользователя. -
settings— настройки Odyssey на уровне пользователя:pool_mode— режим пула соединений:SESSIONилиTRANSACTION;pool_size— количество серверных соединений в пуле;pool_client_idle_timeout— время неактивности клиентского соединения в секундах, после которого соединение разрывается;pool_idle_in_transaction_timeout— время неактивности клиентского соединения с открытой транзакцией в секундах, после которого соединение разрывается.
Чтобы сбросить настройку Odyssey и использовать значение уровня кластера, укажите соответствующее поле в
update_mask.paths, но не передавайте его значение в объектеsettings.Идентификатор кластера можно получить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
С помощью SQL можно изменить атрибуты роли и задать для нее настройки СУБД.
Для выполнения операций с помощью SQL подключитесь к базе данных от имени пользователя с ролью mdb_admin.
Чтобы изменить атрибуты роли, выполните команду:
ALTER ROLE <имя_роли> <список_атрибутов>;
Доступные атрибуты читайте в разделе Атрибуты.
Изменить состав групповой роли
Для выполнения операций с помощью SQL подключитесь к базе данных от имени пользователя с ролью mdb_admin.
Чтобы добавить роль в состав групповой роли, выполните команду:
GRANT <имя_групповой_роли> TO <список_ролей_через_запятую>;
Имена пользователей и ролей можно получить со списком пользователей и ролей в кластере.
Атрибуты LOGIN, SUPERUSER, CREATEDB, CREATEROLE, CREATEEXTTABLE и RESOURCE QUEUE не наследуются. Чтобы воспользоваться всеми атрибутами групповой роли, от имени роли, входящей в ее состав, выполните команду:
SET ROLE <имя_групповой_роли>;
Чтобы удалить роль из состава групповой роли, выполните команду:
REVOKE <имя_групповой_роли> FROM <список_ролей_через_запятую>;
Настроить привилегии роли
Для выполнения операций с помощью SQL подключитесь к базе данных от имени пользователя с ролью mdb_admin.
Чтобы выдать привилегии роли, выполните команду:
GRANT <список_привилегий_через_запятую> ON <имя_объекта> TO <имя_роли>;
Доступные привилегии читайте в разделе Привилегии.
Чтобы отозвать привилегии у роли, выполните команду:
REVOKE <список_привилегий_через_запятую> ON <имя_объекта> FROM <имя_роли>;
Вместо перечисления всех привилегий объекта используйте ALL PRIVILEGES.
Чтобы отозвать все привилегии всех объектов роли, выполните команду:
DROP OWNED BY <имя_роли>;
Удалить пользователя или роль
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
Чтобы удалить пользователя кластера, выполните команду:
yc managed-greenplum users delete <имя_пользователя> \
--cluster-id <идентификатор_кластера>
Вместо параметра --cluster-id можно использовать параметр --cluster-name, указав в нем имя кластера. Идентификатор и имя кластера можно получить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом User.Delete и выполните запрос, например с помощью cURL
:curl \ --request DELETE \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.yandexcloud.kz/managed-greenplum/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>'Идентификатор кластера можно получить со списком кластеров в каталоге, а имя пользователя — со списком пользователей кластера.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом UserService.Delete и выполните запрос DeleteUserRequest, например с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/greenplum/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "user_name": "<имя_пользователя>" }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.greenplum.v1.UserService.DeleteИдентификатор кластера можно получить со списком кластеров в каталоге, а имя пользователя — со списком пользователей кластера.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Для выполнения операций с помощью SQL подключитесь к базе данных от имени пользователя с ролью mdb_admin.
Перед удалением роли удалите все объекты, которыми она владеет, или переназначьте их права собственности и отзовите все привилегии для других объектов.
Выполните команду:
DROP ROLE <имя_роли>;
Примеры
Создание роли
Создайте роль с тестовыми характеристиками:
- С именем
greenplum_user. - С атрибутами
CREATEDBиCREATEROLE. - С возможностью авторизации в системе с защищенным паролем
password123.
Выполните команду:
CREATE ROLE greenplum_user CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'password123';
Проверьте, что новая роль с заданными атрибутами появилась в списке:
SELECT
rolname,
rolsuper,
rolcreatedb,
rolcreaterole,
rolinherit,
rolcanlogin,
rolconnlimit,
rolcreaterextgpfd
FROM pg_roles;
Применение настроек Odyssey для пользователя
Допустим, в кластере mygp есть база данных db1. Нужно создать пользователя pool_user с паролем SecretPassword, задать для него транзакционный режим пула размером 20 соединений и разрешить подключения с IP-адреса 172.20.143.89.
-
Создайте пользователя:
yc managed-greenplum users create pool_user \ --cluster-name mygp \ --password "SecretPassword" \ --pool-mode transaction \ --pool-size 20 -
Добавьте правило аутентификации, указав в параметре
--userимя пользователя:yc managed-greenplum hba-rules create 1 \ --cluster-name mygp \ --conn-type hostssl \ --database db1 \ --user pool_user \ --address 172.20.143.89/32 \ --auth-method md5
В обеих командах указано имя pool_user, поэтому настройки Odyssey применяются к подключениям этого пользователя.
Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками Broadcom Inc в США и/или других странах.