[Документация Yandex Cloud](../../index.md) > [Yandex Managed Service for Valkey™](../index.md) > [Пошаговые инструкции](index.md) > Пользователи > Изменение настроек пользователя

# Изменение настроек пользователя

После создания пользователя Valkey™ вы можете:

* [изменить пароль](#change-password);
* [изменить статус пользователя](#change-status);
* [настроить очистку данных](#change-sanitize-payload);
* [назначить разрешения пользователю](#change-permissions).

## Изменить пароль пользователя {#change-password}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в каталог, в котором находится нужный кластер.
  1. [Перейдите](../../console/operations/select-service.md#select-service) в сервис **Yandex Managed Service for&nbsp;Valkey™**.
  1. Нажмите на имя нужного кластера и выберите вкладку ![image](../../_assets/console-icons/persons.svg) **Пользователи**.
  1. Нажмите на значок ![image](../../_assets/console-icons/ellipsis.svg) в строке нужного пользователя и выберите пункт **Изменить пароль**.
  
    
  1. Введите новый пароль. Длина пароля — от 8 до 128 символов.


  1. Нажмите кнопку **Сохранить**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы изменить пароль пользователя Valkey™:

  1. Посмотрите описание команды CLI для изменения настроек пользователя:

      ```bash
      yc managed-redis user update --help
      ```

  1. Измените пароль, выполнив команду:

      ```bash
      yc managed-redis user update <имя_пользователя> \
        --cluster-id=<идентификатор_кластера> \
        --password="<пароль_пользователя>" 
      ```

      Где:

      * `--cluster-id` — идентификатор кластера.

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

      * `--password` — пароль пользователя. Длина пароля — от 8 до 128 символов.

      Имя пользователя можно получить со [списком пользователей](user-list.md#list) в кластере.

- Terraform {#tf}

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

      Как создать такой файл, описано в разделе [Создание кластера](cluster-create.md).

  1. Измените в описании ресурса `yandex_mdb_redis_user` параметр `passwords`:

      ```hcl
      resource "yandex_mdb_redis_user" "<локальное_имя_ресурса>" {
        ...
        passwords = [ "<пароль_пользователя>" ]
      }
      ```

      Где `passwords` — пароль пользователя. Длина пароля — от 8 до 128 символов.

      Можно указать только один пароль.

  1. Проверьте корректность настроек.

      1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
      1. Выполните команду:
      
         ```bash
         terraform validate
         ```
      
         Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  1. Подтвердите изменение ресурсов.

      1. Выполните команду для просмотра планируемых изменений:
      
         ```bash
         terraform plan
         ```
      
         Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
      
      1. Если вас устраивают планируемые изменения, внесите их:
         1. Выполните команду:
      
            ```bash
            terraform apply
            ```
      
         1. Подтвердите изменение ресурсов.
         1. Дождитесь завершения операции.

  {% note warning "Ограничения по времени" %}
  
  Провайдер Terraform ограничивает время на выполнение операций с кластером Yandex Managed Service for Valkey™:
  
  * создание, в т. ч. путем восстановления из резервной копии, — 15 минут;
  * изменение — 60 минут;
  * удаление — 15 минут.
  
  Операции, длящиеся дольше указанного времени, прерываются.
  
  {% cut "Как изменить эти ограничения?" %}
  
  Добавьте к описанию кластера блок `timeouts`, например:
  
  ```hcl
  resource "yandex_mdb_redis_cluster_v2" "<имя_кластера>" {
    ...
    timeouts = {
      create = "1h30m" # Полтора часа
      update = "2h"    # 2 часа
      delete = "30m"   # 30 минут
    }
  }
  ```
  
  {% endcut %}
  
  {% endnote %}

- REST API {#api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Создайте файл `body.json` и добавьте в него следующее содержимое:

      ```json
      {
        "updateMask": "passwords",
        "passwords": [
          "<пароль_пользователя>"
        ]
      }
      ```

      Где:

      * `updateMask` — перечень изменяемых параметров в строку через запятую.

        {% note warning %}
        
        При изменении пользователя все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask`.
        
        {% endnote %}

      * `passwords` — пароль пользователя. Длина пароля — от 8 до 128 символов.

        Можно указать только один пароль.

  1. Воспользуйтесь методом [User.Update](../api-ref/User/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

      ```bash
      curl \
        --request PATCH \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.yandexcloud.kz/managed-redis/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>' \
        --data "@body.json"
      ```

      Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

      Имя пользователя можно получить со [списком пользователей](user-list.md#list) в кластере.

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/User/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
     
     ```bash
     cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
     ```
     
     Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

  1. Создайте файл `body.json` и добавьте в него следующее содержимое:

      ```json
      {
        "cluster_id": "<идентификатор_кластера>",
        "user_name": "<имя_пользователя>",
        "update_mask": {
          "paths": [
            "passwords"
          ]
        },
        "passwords": [
          "<пароль_пользователя>"
        ]
      }
      ```

      Где:

      * `cluster_id` — идентификатор кластера.

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

      * `user_name` — имя пользователя.

        Имя пользователя можно получить со [списком пользователей](user-list.md#list) в кластере.

      * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.

        {% cut "Формат перечисления настроек" %}

          ```yaml
          "update_mask": {
            "paths": [
              "<настройка_1>",
              "<настройка_2>",
              ...
              "<настройка_N>"
            ]
          }
          ```

        {% endcut %}

        {% note warning %}
        
        При изменении пользователя все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask`.
        
        {% endnote %}

      * `passwords` — пароль пользователя. Длина пароля — от 8 до 128 символов.

        Можно указать только один пароль.  

  1. Воспользуйтесь вызовом [UserService.Update](../api-ref/grpc/User/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

      ```bash
      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.Update \
        < body.json
        ```

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/User/update.md#yandex.cloud.operation.Operation).

{% endlist %}

## Изменить статус пользователя {#change-status}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в каталог, в котором находится нужный кластер.
  1. [Перейдите](../../console/operations/select-service.md#select-service) в сервис **Yandex Managed Service for&nbsp;Valkey™**.
  1. Нажмите на имя нужного кластера и выберите вкладку ![image](../../_assets/console-icons/persons.svg) **Пользователи**.
  1. Нажмите на значок ![image](../../_assets/console-icons/ellipsis.svg) в строке нужного пользователя и выберите пункт **Настроить**.
  1. Измените статус пользователя с помощью опции **Включить пользователя**:
      
      * Чтобы разрешить пользователю подключаться к кластеру и выполнять команды, включите опцию.
      * Чтобы запретить пользователю подключаться к кластеру, отключите опцию.

  1. Нажмите кнопку **Сохранить**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы изменить статус пользователя Valkey™:

  1. Посмотрите описание команды CLI для изменения настроек пользователя:

      ```bash
      yc managed-redis user update --help
      ```

  1. Измените статус пользователя, выполнив команду:

      ```bash
      yc managed-redis user update <имя_пользователя> \
        --cluster-id=<идентификатор_кластера> \
        <статус_пользователя> 
      ```

      Где:

      * `--cluster-id` — идентификатор кластера.

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

      * Укажите один из флагов, определяющих статус пользователя:

        * `--disabled` — пользователь отключен;
        * `--enabled` — пользователь включен.

      Имя пользователя можно получить со [списком пользователей](user-list.md#list) в кластере.

- Terraform {#tf}

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

      Как создать такой файл, описано в разделе [Создание кластера](cluster-create.md).

  1. Измените в описании ресурса `yandex_mdb_redis_user` параметр `enabled`:

      ```hcl
      resource "yandex_mdb_redis_user" "<локальное_имя_ресурса>" {
        ...
        enabled = <статус_пользователя>
      }
      ```

      Где `enabled` — статус пользователя. Возможные значения:

      * `true` — пользователь включен;
      * `false` — пользователь отключен.

  1. Проверьте корректность настроек.

      1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
      1. Выполните команду:
      
         ```bash
         terraform validate
         ```
      
         Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  1. Подтвердите изменение ресурсов.

      1. Выполните команду для просмотра планируемых изменений:
      
         ```bash
         terraform plan
         ```
      
         Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
      
      1. Если вас устраивают планируемые изменения, внесите их:
         1. Выполните команду:
      
            ```bash
            terraform apply
            ```
      
         1. Подтвердите изменение ресурсов.
         1. Дождитесь завершения операции.

  {% note warning "Ограничения по времени" %}
  
  Провайдер Terraform ограничивает время на выполнение операций с кластером Yandex Managed Service for Valkey™:
  
  * создание, в т. ч. путем восстановления из резервной копии, — 15 минут;
  * изменение — 60 минут;
  * удаление — 15 минут.
  
  Операции, длящиеся дольше указанного времени, прерываются.
  
  {% cut "Как изменить эти ограничения?" %}
  
  Добавьте к описанию кластера блок `timeouts`, например:
  
  ```hcl
  resource "yandex_mdb_redis_cluster_v2" "<имя_кластера>" {
    ...
    timeouts = {
      create = "1h30m" # Полтора часа
      update = "2h"    # 2 часа
      delete = "30m"   # 30 минут
    }
  }
  ```
  
  {% endcut %}
  
  {% endnote %}

- REST API {#api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Создайте файл `body.json` и добавьте в него следующее содержимое:

      ```json
      {
        "updateMask": "enabled",
        "enabled": <статус_пользователя>
      }
      ```

      Где:

      * `updateMask` — перечень изменяемых параметров в строку через запятую.

        {% note warning %}
        
        При изменении пользователя все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask`.
        
        {% endnote %}

      * `enabled` — статус пользователя. Возможные значения:

        * `true` — пользователь включен;
        * `false` — пользователь отключен.

  1. Воспользуйтесь методом [User.Update](../api-ref/User/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

      ```bash
      curl \
        --request PATCH \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.yandexcloud.kz/managed-redis/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>' \
        --data "@body.json"
      ```

      Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

      Имя пользователя можно получить со [списком пользователей](user-list.md#list) в кластере.

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/User/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
     
     ```bash
     cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
     ```
     
     Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

  1. Создайте файл `body.json` и добавьте в него следующее содержимое:

      ```json
      {
        "cluster_id": "<идентификатор_кластера>",
        "user_name": "<имя_пользователя>",
        "update_mask": {
          "paths": [
            "enabled"
          ]
        },
        "enabled": <статус_пользователя>
      }
      ```

      Где:

      * `cluster_id` — идентификатор кластера.

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

      * `user_name` — имя пользователя.

        Имя пользователя можно получить со [списком пользователей](user-list.md#list) в кластере.

      * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.

        {% cut "Формат перечисления настроек" %}

          ```yaml
          "update_mask": {
            "paths": [
              "<настройка_1>",
              "<настройка_2>",
              ...
              "<настройка_N>"
            ]
          }
          ```

        {% endcut %}

        {% note warning %}
        
        При изменении пользователя все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask`.
        
        {% endnote %}

      * `enabled` — статус пользователя. Возможные значения:

          * `true` — пользователь включен;
          * `false` — пользователь отключен.

  1. Воспользуйтесь вызовом [UserService.Update](../api-ref/grpc/User/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

      ```bash
      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.Update \
        < body.json
        ```

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/User/update.md#yandex.cloud.operation.Operation).

{% endlist %}

## Настроить очистку данных {#change-sanitize-payload}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в каталог, в котором находится нужный кластер.
  1. [Перейдите](../../console/operations/select-service.md#select-service) в сервис **Yandex Managed Service for&nbsp;Valkey™**.
  1. Нажмите на имя нужного кластера и выберите вкладку ![image](../../_assets/console-icons/persons.svg) **Пользователи**.
  1. Нажмите на значок ![image](../../_assets/console-icons/ellipsis.svg) в строке нужного пользователя и выберите пункт **Настроить**.
  1. В блоке `Permissions` в поле `Sanitize Payload` введите разрешение пользователя на очистку данных. Возможные значения:
        
      * `sanitize-payload` (по умолчанию) — очистка данных включена;
      * `skip-sanitize-payload` — очистка данных отключена.
  
  1. Нажмите кнопку **Сохранить**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы настроить очистку данных:

  1. Посмотрите описание команды CLI для изменения настроек пользователя:

      ```bash
      yc managed-redis user update --help
      ```

  1. Настройте очистку данных, выполнив команду:

      ```bash
      yc managed-redis user update <имя_пользователя> \
        --cluster-id=<идентификатор_кластера> \
        --sanitize-payload=<очистка_данных> 
      ```

      Где:

      * `--cluster-id` — идентификатор кластера.

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

      * `--sanitize-payload` — очистка данных. Возможные значения:

        * `sanitize-payload` (по умолчанию) — очистка данных включена;
        * `skip-sanitize-payload` — очистка данных отключена.

      Имя пользователя можно получить со [списком пользователей](user-list.md#list) в кластере.

- Terraform {#tf}

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

      Как создать такой файл, описано в разделе [Создание кластера](cluster-create.md).

  1. Измените в описании ресурса `yandex_mdb_redis_user` параметр `sanitize_payload`:

      ```hcl
      resource "yandex_mdb_redis_user" "<локальное_имя_ресурса>" {
        ...
        sanitize_payload = "<очистка_данных>"
      }
      ```

      Где `sanitize_payload` — очистка данных. Возможные значения:

      * `sanitize-payload` (по умолчанию) — очистка данных включена;
      * `skip-sanitize-payload` — очистка данных отключена.

  1. Проверьте корректность настроек.

      1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
      1. Выполните команду:
      
         ```bash
         terraform validate
         ```
      
         Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  1. Подтвердите изменение ресурсов.

      1. Выполните команду для просмотра планируемых изменений:
      
         ```bash
         terraform plan
         ```
      
         Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
      
      1. Если вас устраивают планируемые изменения, внесите их:
         1. Выполните команду:
      
            ```bash
            terraform apply
            ```
      
         1. Подтвердите изменение ресурсов.
         1. Дождитесь завершения операции.

  {% note warning "Ограничения по времени" %}
  
  Провайдер Terraform ограничивает время на выполнение операций с кластером Yandex Managed Service for Valkey™:
  
  * создание, в т. ч. путем восстановления из резервной копии, — 15 минут;
  * изменение — 60 минут;
  * удаление — 15 минут.
  
  Операции, длящиеся дольше указанного времени, прерываются.
  
  {% cut "Как изменить эти ограничения?" %}
  
  Добавьте к описанию кластера блок `timeouts`, например:
  
  ```hcl
  resource "yandex_mdb_redis_cluster_v2" "<имя_кластера>" {
    ...
    timeouts = {
      create = "1h30m" # Полтора часа
      update = "2h"    # 2 часа
      delete = "30m"   # 30 минут
    }
  }
  ```
  
  {% endcut %}
  
  {% endnote %}

- REST API {#api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Создайте файл `body.json` и добавьте в него следующее содержимое:

      ```json
      {
        "updateMask": "permissions.sanitizePayload",
        "permissions": {
          "sanitizePayload": "<очистка_данных>"
        }
      }
      ```

      Где:

      * `updateMask` — перечень изменяемых параметров в строку через запятую.

        {% note warning %}
        
        При изменении пользователя все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask`.
        
        {% endnote %}

      * `permissions.sanitizePayload` — очистка данных. Возможные значения:

        * `sanitize-payload` (по умолчанию) — очистка данных включена;
        * `skip-sanitize-payload` — очистка данных отключена.

  1. Воспользуйтесь методом [User.Update](../api-ref/User/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

      ```bash
      curl \
        --request PATCH \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.yandexcloud.kz/managed-redis/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>' \
        --data "@body.json"
      ```

      Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

      Имя пользователя можно получить со [списком пользователей](user-list.md#list) в кластере.

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/User/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
     
     ```bash
     cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
     ```
     
     Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

  1. Создайте файл `body.json` и добавьте в него следующее содержимое:

      ```json
      {
        "cluster_id": "<идентификатор_кластера>",
        "user_name": "<имя_пользователя>",
        "update_mask": {
          "paths": [
            "permissions.sanitize_payload"
          ]
        },
        "permissions": {
          "sanitize_payload": "<очистка_данных>"
        }
      }
      ```

      Где:

      * `cluster_id` — идентификатор кластера.

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

      * `user_name` — имя пользователя.

        Имя пользователя можно получить со [списком пользователей](user-list.md#list) в кластере.

      * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.

        {% cut "Формат перечисления настроек" %}

          ```yaml
          "update_mask": {
            "paths": [
              "<настройка_1>",
              "<настройка_2>",
              ...
              "<настройка_N>"
            ]
          }
          ```

        {% endcut %}

        {% note warning %}
        
        При изменении пользователя все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask`.
        
        {% endnote %}

      * `permissions.sanitize_payload` — очистка данных. Возможные значения:

        * `sanitize-payload` (по умолчанию) — очистка данных включена;
        * `skip-sanitize-payload` — очистка данных отключена.

  1. Воспользуйтесь вызовом [UserService.Update](../api-ref/grpc/User/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

      ```bash
      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.Update \
        < body.json
        ```

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/User/update.md#yandex.cloud.operation.Operation).

{% endlist %}

## Назначить разрешения пользователю {#change-permissions}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в каталог, в котором находится нужный кластер.
  1. [Перейдите](../../console/operations/select-service.md#select-service) в сервис **Yandex Managed Service for&nbsp;Valkey™**.
  1. Нажмите на имя нужного кластера и выберите вкладку ![image](../../_assets/console-icons/persons.svg) **Пользователи**.
  1. Нажмите на значок ![image](../../_assets/console-icons/ellipsis.svg) в строке нужного пользователя и выберите пункт **Настроить**.
  1. В блоке `Permissions` задайте разрешения пользователя:

      * `Patterns` — разрешения на шаблоны ключей.
      * `Pub Sub Channels` — разрешения на каналы Pub/Sub.
      * `Categories` — разрешения на категории команд.
      * `Commands` — разрешения на команды.
        
      {% note info %}
      
      Пользователю не могут быть выданы разрешения на категорию административных команд `+@admin` и [некоторые команды](../concepts/supported-features.md).
      
      {% endnote %}

      Подробнее о списках контроля доступа читайте в [документации Valkey™ ACL](https://valkey.io/topics/acl).
  
  1. Нажмите кнопку **Сохранить**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы назначить разрешения пользователю Valkey™:

  1. Посмотрите описание команды CLI для изменения настроек пользователя:

      ```bash
      yc managed-redis user update --help
      ```

  1. Назначьте разрешения пользователю, выполнив команду:

      ```bash
      yc managed-redis user update <имя_пользователя> \
        --cluster-id=<идентификатор_кластера> \
        --raw="<разрешения>" \
        --categories="<разрешения_на_категории_команд>" \
        --commands="<разрешения_на_команды>" \
        --patterns="<разрешения_на_шаблоны_ключей>" \
        --pub-sub-channels="<разрешения_на_каналы>"
      ```

      Где:

      * `--cluster-id` — идентификатор кластера.

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

      * `--raw` — разрешения, в строку через пробел. Также строка должна включать настройку статуса пользователя:

        * `on` — пользователь включен;
        * `off` — пользователь отключен.

        Пример: `on ~data:* &* +@set +@hash +get +set`.

        {% note info %}

        Флаг `--raw` не используется с флагами отдельных разрешений и с флагами `--disabled` и `--enabled`.

        {% endnote %}

      * `--categories` — разрешения на категории команд, в строку через пробел.

      * `--commands` — разрешения на команды, в строку через пробел.

      * `--patterns` — разрешения на шаблоны ключей, в строку через пробел.

      * `--pub-sub-channels` — разрешения на каналы Pub/Sub, в строку через пробел.

      {% note info %}
      
      Пользователю не могут быть выданы разрешения на категорию административных команд `+@admin` и [некоторые команды](../concepts/supported-features.md).
      
      {% endnote %}

      Подробнее о списках контроля доступа читайте в [документации Valkey™ ACL](https://valkey.io/topics/acl).

      Имя пользователя можно получить со [списком пользователей](user-list.md#list) в кластере.

- Terraform {#tf}

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

      Как создать такой файл, описано в разделе [Создание кластера](cluster-create.md).

  1. Измените в описании ресурса `yandex_mdb_redis_user` параметры в блоке `permissions`:

      ```hcl
      resource "yandex_mdb_redis_user" "<локальное_имя_ресурса>" {
        ...
        permissions = {
          categories       = "<разрешения_на_категории_команд>"
          commands         = "<разрешения_на_команды>"
          patterns         = "<разрешения_на_шаблоны_ключей>"
          pub_sub_channels = "<разрешения_на_каналы>"
          ...
        }
        ...
      }
      ```

      Где `permissions` — настройки разрешений пользователя:

      * `categories` — разрешения на категории команд, в строку через пробел.

      * `commands` — разрешения на команды, в строку через пробел.

      * `patterns` — разрешения на шаблоны ключей, в строку через пробел.

      * `pub_sub_channels` — разрешения на каналы Pub/Sub, в строку через пробел.

      {% note info %}
      
      Пользователю не могут быть выданы разрешения на категорию административных команд `+@admin` и [некоторые команды](../concepts/supported-features.md).
      
      {% endnote %}

      Подробнее о списках контроля доступа читайте в [документации Valkey™ ACL](https://valkey.io/topics/acl).

  1. Проверьте корректность настроек.

      1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
      1. Выполните команду:
      
         ```bash
         terraform validate
         ```
      
         Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  1. Подтвердите изменение ресурсов.

      1. Выполните команду для просмотра планируемых изменений:
      
         ```bash
         terraform plan
         ```
      
         Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
      
      1. Если вас устраивают планируемые изменения, внесите их:
         1. Выполните команду:
      
            ```bash
            terraform apply
            ```
      
         1. Подтвердите изменение ресурсов.
         1. Дождитесь завершения операции.

  {% note warning "Ограничения по времени" %}
  
  Провайдер Terraform ограничивает время на выполнение операций с кластером Yandex Managed Service for Valkey™:
  
  * создание, в т. ч. путем восстановления из резервной копии, — 15 минут;
  * изменение — 60 минут;
  * удаление — 15 минут.
  
  Операции, длящиеся дольше указанного времени, прерываются.
  
  {% cut "Как изменить эти ограничения?" %}
  
  Добавьте к описанию кластера блок `timeouts`, например:
  
  ```hcl
  resource "yandex_mdb_redis_cluster_v2" "<имя_кластера>" {
    ...
    timeouts = {
      create = "1h30m" # Полтора часа
      update = "2h"    # 2 часа
      delete = "30m"   # 30 минут
    }
  }
  ```
  
  {% endcut %}
  
  {% endnote %}

- REST API {#api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Создайте файл `body.json` и добавьте в него следующее содержимое:

      ```json
      {
        "updateMask": "<список_изменяемых_параметров>",
        "permissions": {
          "patterns": "<разрешения_на_шаблоны_ключей>",
          "pubSubChannels": "<разрешения_на_каналы>",
          "categories": "<разрешения_на_категории_команд>",
          "commands": "<разрешения_на_команды>"
        }
      }
      ```

      Где:

      * `updateMask` — перечень изменяемых параметров в строку через запятую.

        {% note warning %}
        
        При изменении пользователя все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask`.
        
        {% endnote %}

      * `permissions.patterns` — разрешения на шаблоны ключей, в строку через пробел.

      * `permissions.pubSubChannels` — разрешения на каналы Pub/Sub, в строку через пробел.

      * `permissions.categories` — разрешения на категории команд, в строку через пробел.

      * `permissions.commands` — разрешения на команды, в строку через пробел.

      {% note info %}
      
      Пользователю не могут быть выданы разрешения на категорию административных команд `+@admin` и [некоторые команды](../concepts/supported-features.md).
      
      {% endnote %}

      Подробнее о списках контроля доступа читайте в [документации Valkey™ ACL](https://valkey.io/topics/acl).

  1. Воспользуйтесь методом [User.Update](../api-ref/User/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

      ```bash
      curl \
        --request PATCH \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.yandexcloud.kz/managed-redis/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>' \
        --data "@body.json"
      ```

      Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

      Имя пользователя можно получить со [списком пользователей](user-list.md#list) в кластере.

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/User/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
     
     ```bash
     cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
     ```
     
     Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

  1. Создайте файл `body.json` и добавьте в него следующее содержимое:

      ```json
      {
        "cluster_id": "<идентификатор_кластера>",
        "user_name": "<имя_пользователя>",
        "update_mask": {
          "paths": [
            <список_изменяемых_параметров>
          ]
        },
        "permissions": {
          "patterns": "<разрешения_на_шаблоны_ключей>",
          "pub_sub_channels": "<разрешения_на_каналы>",
          "categories": "<разрешения_на_категории_команд>",
          "commands": "<разрешения_на_команды>"
        }
      }
      ```

      Где:

      * `cluster_id` — идентификатор кластера.

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

      * `user_name` — имя пользователя.

        Имя пользователя можно получить со [списком пользователей](user-list.md#list) в кластере.

      * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.

        {% cut "Формат перечисления настроек" %}

          ```yaml
          "update_mask": {
            "paths": [
              "<настройка_1>",
              "<настройка_2>",
              ...
              "<настройка_N>"
            ]
          }
          ```

        {% endcut %}

        {% note warning %}
        
        При изменении пользователя все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask`.
        
        {% endnote %}

      * `permissions.patterns` — разрешения на шаблоны ключей, в строку через пробел.

      * `permissions.pub_sub_channels` — разрешения на каналы Pub/Sub, в строку через пробел.

      * `permissions.categories` — разрешения на категории команд, в строку через пробел.

      * `permissions.commands` — разрешения на команды, в строку через пробел.

      {% note info %}
      
      Пользователю не могут быть выданы разрешения на категорию административных команд `+@admin` и [некоторые команды](../concepts/supported-features.md).
      
      {% endnote %}

      Подробнее о списках контроля доступа читайте в [документации Valkey™ ACL](https://valkey.io/topics/acl).

  1. Воспользуйтесь вызовом [UserService.Update](../api-ref/grpc/User/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

      ```bash
      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.Update \
        < body.json
        ```

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/User/update.md#yandex.cloud.operation.Operation).

{% endlist %}