Управление пользователями MongoDB
Вы можете добавлять и удалять пользователей, а также управлять их индивидуальными настройками и правами доступа к базам данных.
Получить список пользователей
- Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. - Нажмите на имя нужного кластера, затем выберите вкладку
Пользователи.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список пользователей кластера, выполните команду:
yc managed-mongodb user list \
--cluster-name <имя_кластера>
Имя кластера можно запросить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом User.List и выполните запрос, например, с помощью cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>/users'
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом UserService.List и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.UserService.List
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Создать пользователя
-
Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. -
Нажмите на имя нужного кластера и выберите вкладку
Пользователи. -
Нажмите кнопку Создать пользователя.
-
Введите имя пользователя БД и пароль.
Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы, цифры или подчеркивания.
Длина пароля от 8 до 128 символов.
-
Настройте роли пользователя:
- Нажмите кнопку Добавить базу данных и выберите БД, в которой вы хотите выдать роль.
- Добавьте роли с помощью кнопки
.
Вы можете выдать пользователю несколько ролей в разных базах данных.
-
Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать пользователя в кластере:
-
Посмотрите описание команды CLI для создания пользователя:
yc managed-mongodb user create --help
-
Укажите свойства пользователя в команде создания:
yc managed-mongodb user create <имя_пользователя> \ --cluster-name <имя_кластера> \ --password <пароль_для_пользователя> \ --permission database=<имя_БД>,role=<роль>,role=<другая_роль>,... \ --permission database=<имя_другой_БД>,role=<роль>,...
Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы, цифры или подчеркивания.
Длина пароля от 8 до 128 символов.
Имя кластера можно запросить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Добавьте ресурс
yandex_mdb_mongodb_user
:resource "yandex_mdb_mongodb_user" "<имя_пользователя>" { cluster_id = <идентификатор_кластера> name = "<имя_пользователя>" password = "<пароль>" permission { database_name = "<имя_БД>" roles = [ "<список_ролей_пользователя>" ] } }
Где
database_name
— имя БД, к которой предоставляется доступ.Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы, цифры или подчеркивания.
Длина пароля от 8 до 128 символов.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
-
Получите 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.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>/users' \ --data '{ "userSpec": { "name": "<имя_пользователя>", "password": "<пароль_пользователя>", "permissions": [ { "databaseName": "<имя_БД>", "roles": [ "<роль_1>", "<роль_2>", ..., "<роль_N>" ] } ] } }'
Где
userSpec
— настройки нового пользователя БД:-
name
— имя пользователя. -
password
— пароль пользователя.Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы, цифры или подчеркивания.
Длина пароля от 8 до 128 символов.
-
permissions
— настройки разрешений пользователя:databaseName
— имя базы данных, к которой пользователь получает доступ.roles
— массив ролей пользователя. Каждая роль представлена в виде отдельной строки в массиве. Список доступных значений см. в разделе Пользователи и роли.
Для каждой базы данных добавьте отдельный элемент с настройками разрешений в массив
permissions
.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом UserService.Create и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "user_spec": { "name": "<имя_пользователя>", "password": "<пароль_пользователя>", "permissions": [ { "database_name": "<имя_БД>", "roles": [ "<роль_1>", "<роль_2>", ..., "<роль_N>" ] } ] } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.UserService.Create
Где
user_spec
— настройки нового пользователя БД:-
name
— имя пользователя. -
password
— пароль пользователя.Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы, цифры или подчеркивания.
Длина пароля от 8 до 128 символов.
-
permissions
— настройки разрешений пользователя:database_name
— имя базы данных, к которой пользователь получает доступ.roles
— массив ролей пользователя. Каждая роль представлена в виде отдельной строки в массиве. Список доступных значений см. в разделе Пользователи и роли.
Для каждой базы данных добавьте отдельный элемент с настройками разрешений в массив
permissions
.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Изменить пользователя
-
Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. -
Нажмите на имя нужного кластера и выберите вкладку
Пользователи. -
Чтобы изменить пароль пользователя, нажмите значок
в строке нужного пользователя и выберите пункт Изменить пароль.Примечание
Длина пароля от 8 до 128 символов.
-
Чтобы изменить роли пользователя:
- Нажмите значок
в строке нужного пользователя и выберите пункт Настроить. - Чтобы добавить роль, нажмите
напротив нужной БД и выберите роль. - Чтобы удалить роль, нажмите на значок
возле названия роли.
- Нажмите значок
-
Нажмите Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы изменить пароль или список ролей пользователя:
-
Посмотрите описание команды CLI для изменения пользователя:
yc managed-mongodb user update --help
-
Укажите свойства пользователя в команде изменения:
yc managed-mongodb user update <имя_пользователя> \ --cluster-name <имя_кластера> \ --password <пароль_для_пользователя> \ --permission database=<имя_БД>,role=<роль>,role=<другая_роль>,... \ --permission database=<имя_другой_БД>,role=<роль>,...
Примечание
Длина пароля от 8 до 128 символов.
Чтобы добавить пользователю доступ к базе данных с определенным набором ролей:
-
Посмотрите описание команды CLI для выдачи прав пользователю:
yc managed-mongodb user grant-permission --help
-
Укажите свойства пользователя в команде выдачи прав:
yc managed-mongodb user grant-permission <имя_пользователя> \ --cluster-name <имя_кластера> \ --database <имя_БД> \ --role <набор_ролей_через_запятую>
Чтобы отозвать доступ у пользователя к базе данных:
-
Посмотрите описание команды CLI для отзыва прав пользователя:
yc managed-mongodb user revoke-permission --help
-
Укажите свойства пользователя в команде отзыва прав:
yc managed-mongodb user revoke-permission <имя_пользователя> \ --cluster-name <имя_кластера> \ --database <имя_БД>
Эта команда полностью закрывает пользователю доступ к указанной базе данных.
Имя кластера можно запросить со списком кластеров в каталоге, имя базы данных — со списком баз данных в кластере, имя пользователя — со списком пользователей в кластере.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Найдите ресурс
yandex_mdb_mongodb_user
. -
Измените значение поля
password
и значения полей в блокеpermission
:resource "yandex_mdb_mongodb_user" "<имя_пользователя>" { cluster_id = <идентификатор_кластера> name = "<имя_пользователя>" password = "<новый_пароль>" permission { database_name = "<имя_БД>" roles = [ "<новый_список_ролей_пользователя>" ] } }
Примечание
Длина пароля от 8 до 128 символов.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
-
Получите 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.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>' \ --data '{ "updateMask": "password,permissions.databaseName,permissions.roles", "password": "<пароль_пользователя>", "permissions": [ { "databaseName": "<имя_БД>", "roles": [ "<роль_1>", "<роль_2>", ..., "<роль_N>" ] } ] }'
Где:
-
updateMask
— перечень изменяемых параметров в одну строку через запятую. -
password
— пароль пользователя.Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы, цифры или подчеркивания.
Длина пароля от 8 до 128 символов.
-
permissions
— настройки разрешений пользователя:database_name
— имя базы данных, к которой пользователь получает доступ.roles
— массив ролей пользователя. Каждая роль представлена в виде отдельной строки в массиве. Список доступных значений см. в разделе Пользователи и роли.
Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя пользователя — со списком пользователей в кластере.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом UserService.Update и выполните запрос, например, с помощью 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/mongodb/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "user_name": "<имя_пользователя>", "update_mask": { "paths": [ "password", "permissions.database_name", "permissions.roles" ] }, "password": "<пароль_пользователя>", "permissions": [ { "database_name": "<имя_БД>", "roles": [ "<роль_1>", "<роль_2>", ..., "<роль_N>" ] } ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.UserService.Update
Где:
-
update_mask
— перечень изменяемых параметров в одну строку через запятую. -
password
— пароль пользователя.Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы, цифры или подчеркивания.
Длина пароля от 8 до 128 символов.
-
permissions
— настройки разрешений пользователя:database_name
— имя базы данных, к которой пользователь получает доступ.roles
— массив ролей пользователя. Каждая роль представлена в виде отдельной строки в массиве. Список доступных значений см. в разделе Пользователи и роли.
Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя пользователя — со списком пользователей в кластере.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Удалить пользователя
- Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. - Нажмите на имя нужного кластера и выберите вкладку
Пользователи. - Нажмите значок
в строке нужного пользователя и выберите пункт Удалить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы удалить пользователя, выполните команду:
yc managed-mongodb user delete <имя_пользователя> \
--cluster-name <имя_кластера>
Имя кластера можно запросить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Удалите ресурс
yandex_mdb_mongodb_user
с описанием нужного пользователя. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом User.Delete и выполните запрос, например, с помощью cURL
:curl \ --request DELETE \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>'
Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя пользователя — со списком пользователей в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом UserService.Delete и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "user_name": "<имя_пользователя>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.UserService.Delete
Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя пользователя — со списком пользователей в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Примеры
Добавить пользователя с правами только на чтение
Чтобы добавить в существующий кластер нового пользователя user2
с доступом только на чтение к базе данных db1
:
- Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. - Нажмите на имя нужного кластера и выберите вкладку
Пользователи. - Нажмите кнопку Создать пользователя.
- Введите имя пользователя
user2
и пароль (от 8 до 128 символов). - Выберите базу данных
db1
из выпадающего списка Добавить базу данных. - Выберите роль
read
из выпадающего списка напротив базы данныхdb1
. - Нажмите кнопку Создать.
Выполните следующую команду:
yc managed-mongodb user create user2 \
--cluster-name <имя_кластера> \
--password <пароль_пользователя> \
--permission database=db1,role=read
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Добавьте ресурс
yandex_mdb_mongodb_user
.resource "yandex_mdb_mongodb_user" "user2" { cluster_id = <идентификатор_кластера> name = "user2" password = "<пароль>" permission { database_name = "db1" roles = [ "read" ] } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Изменить права пользователя
Чтобы добавить существующему пользователю user1
кластера cluster1
доступ только на чтение к базе данных db2
:
- Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. - Нажмите на имя кластера
cluster1
и выберите вкладку Пользователи. - Нажмите значок
в строке пользователяuser1
и выберите пункт Настроить. - Нажмите кнопку Добавить базу данных и выберите базу данных
db2
. - Нажмите
и выберите рольread
из выпадающего списка напротив базы данныхdb2
. - Нажмите кнопку Сохранить.
Выполните следующую команду:
yc managed-mongodb user grant-permission user1 \
--cluster-name cluster1 \
--database db2 \
--role read
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Найдите ресурс
yandex_mdb_mongodb_user
. -
Добавьте блок
permission
:resource "yandex_mdb_mongodb_user" "user1" { cluster_id = <идентификатор_кластера> name = "user1" password = "<пароль>" permission { database_name = "db2" roles = [ "read" ] } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform