Создание пользователя
Yandex Managed Service for Valkey™ позволяет создавать пользователей Valkey™ и настраивать их разрешения на команды, ключи и каналы Pub/Sub кластера с помощью списков контроля доступа Valkey™ ACL
Valkey™ ACL решает две основные задачи:
- обеспечивает безопасность, разграничивая доступ к командам и ключам;
- защищает от случайных ошибок, вызванных действиями пользователя или программным сбоем.
Вместе с кластером создается пользователь по умолчанию default. Он имеет разрешения на все ключи и каналы Pub/Sub кластера, а также может выполнять все команды, кроме административных. Подробные разрешения пользователя можно получить с информацией о пользователе.
Создать пользователя
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы создать пользователя Valkey™:
-
Посмотрите описание команды CLI для создания пользователя:
yc managed-redis user create --help -
Создайте пользователя, выполнив команду (приведены не все флаги):
yc managed-redis user create <имя_пользователя> \ --cluster-id=<идентификатор_кластера> \ --password="<пароль_пользователя>" \ --disabled \ --raw="<разрешения>" \ --categories="<разрешения_на_категории_команд>" \ --commands="<разрешения_на_команды>" \ --patterns="<разрешения_на_шаблоны_ключей>" \ --pub-sub-channels="<разрешения_на_каналы>" \ --sanitize-payload=<очистка_данных>Где:
-
--cluster-id— идентификатор кластера.Идентификатор кластера можно получить со списком кластеров в каталоге.
-
--password— пароль пользователя. Длина пароля — от 8 до 128 символов. -
--disabled— отключает пользователя. По умолчанию —false. -
--raw— разрешения, в строку через пробел. Также строка должна включать настройку статуса пользователя:on— пользователь включен;off— пользователь отключен.
Пример:
on ~data:* &* +@set +@hash +get +set.Примечание
Флаг
--rawне используется с флагами отдельных разрешений и с--disabled. -
--categories— разрешения на категории команд, в строку через пробел. -
--commands— разрешения на команды, в строку через пробел. -
--patterns— разрешения на шаблоны ключей, в строку через пробел. -
--pub-sub-channels— разрешения на каналы Pub/Sub, в строку через пробел. -
--sanitize-payload— очистка данных. Возможные значения:sanitize-payload(по умолчанию) — очистка данных включена;skip-sanitize-payload— очистка данных отключена.
Примечание
Пользователю не могут быть выданы разрешения на категорию административных команд
+@adminи некоторые команды.Подробнее о списках контроля доступа читайте в документации Valkey™ ACL
. -
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Чтобы создать пользователя, добавьте ресурс
yandex_mdb_redis_user:resource "yandex_mdb_redis_user" "<локальное_имя_ресурса>" { cluster_id = <идентификатор_кластера> name = "<имя_пользователя>" passwords = ["<пароль_пользователя>"] enabled = <статус_пользователя> permissions = { categories = "<разрешения_на_категории_команд>" commands = "<разрешения_на_команды>" patterns = "<разрешения_на_шаблоны_ключей>" pub_sub_channels = "<разрешения_на_каналы>" sanitize_payload = "<очистка_данных>" } }Где:
-
cluster_id— идентификатор кластера. -
name— имя пользователя. -
passwords— пароль пользователя. Длина пароля — от 8 до 128 символов.Можно указать только один пароль.
-
enabled— статус пользователя. Возможные значения:true— пользователь включен;false— пользователь отключен.
-
permissions— настройки разрешений пользователя:-
categories— разрешения на категории команд, в строку через пробел. -
commands— разрешения на команды, в строку через пробел. -
patterns— разрешения на шаблоны ключей, в строку через пробел. -
pub_sub_channels— разрешения на каналы Pub/Sub, в строку через пробел. -
sanitize_payload— очистка данных. Возможные значения:sanitize-payload(по умолчанию) — очистка данных включена;skip-sanitize-payload— очистка данных отключена.
Примечание
Пользователю не могут быть выданы разрешения на категорию административных команд
+@adminи некоторые команды.Подробнее о списках контроля доступа читайте в документации Valkey™ ACL
. -
-
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
-
Убедитесь, что пользователь создан, выполнив команду CLI:
yc managed-redis user get <имя_пользователя> \ --cluster-id=<идентификатор_кластера>
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Yandex Managed Service for Valkey™:
- создание, в т. ч. путем восстановления из резервной копии, — 15 минут;
- изменение — 60 минут;
- удаление — 15 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts, например:
resource "yandex_mdb_redis_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ "userSpec": { "name": "<имя_пользователя>", "passwords": [ "<пароль_пользователя>" ], "permissions": { "patterns": "<разрешения_на_шаблоны_ключей>", "pubSubChannels": "<разрешения_на_каналы>", "categories": "<разрешения_на_категории_команд>", "commands": "<разрешения_на_команды>", "sanitizePayload": "<очистка_данных>" }, "enabled": <статус_пользователя> } }Где
userSpec— настройки пользователя:-
name— имя пользователя. -
passwords— пароль пользователя. Длина пароля — от 8 до 128 символов.Можно указать только один пароль.
-
permissions— настройки разрешений пользователя:-
patterns— разрешения на шаблоны ключей, в строку через пробел. -
pubSubChannels— разрешения на каналы Pub/Sub, в строку через пробел. -
categories— разрешения на категории команд, в строку через пробел. -
commands— разрешения на команды, в строку через пробел. -
sanitizePayload— очистка данных. Возможные значения:sanitize-payload(по умолчанию) — очистка данных включена;skip-sanitize-payload— очистка данных отключена.
Примечание
Пользователю не могут быть выданы разрешения на категорию административных команд
+@adminи некоторые команды.Подробнее о списках контроля доступа читайте в документации Valkey™ ACL
. -
-
enabled— статус пользователя. Возможные значения:true— пользователь включен;false— пользователь отключен.
-
-
Воспользуйтесь методом User.Create и выполните запрос, например с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-redis/v1/clusters/<идентификатор_кластера>/users' \ --data "@body.json"Идентификатор кластера можно получить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ "cluster_id": "<идентификатор_кластера>", "user_spec": { "name": "<имя_пользователя>", "passwords": [ "<пароль_пользователя>" ], "permissions": { "patterns": "<разрешения_на_шаблоны_ключей>", "pub_sub_channels": "<разрешения_на_каналы>", "categories": "<разрешения_на_категории_команд>", "commands": "<разрешения_на_команды>", "sanitize_payload": "<очистка_данных>" }, "enabled": <статус_пользователя> } }Где:
-
cluster_id— идентификатор кластера.Идентификатор кластера можно получить со списком кластеров в каталоге.
-
user_spec— настройки пользователя:-
name— имя пользователя. -
passwords— пароль пользователя. Длина пароля — от 8 до 128 символов.Можно указать только один пароль.
-
permissions— настройки разрешений пользователя:-
patterns— разрешения на шаблоны ключей, в строку через пробел. -
pub_sub_channels— разрешения на каналы Pub/Sub, в строку через пробел. -
categories— разрешения на категории команд, в строку через пробел. -
commands— разрешения на команды, в строку через пробел. -
sanitize_payload— очистка данных. Возможные значения:sanitize-payload(по умолчанию) — очистка данных включена;skip-sanitize-payload— очистка данных отключена.
Примечание
Пользователю не могут быть выданы разрешения на категорию административных команд
+@adminи некоторые команды.Подробнее о списках контроля доступа читайте в документации Valkey™ ACL
. -
-
enabled— статус пользователя. Возможные значения:true— пользователь включен;false— пользователь отключен.
-
-
-
Воспользуйтесь вызовом UserService.Create и выполните запрос, например с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/redis/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d @ \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.redis.v1.UserService.Create \ < body.json -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.