---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/flow/devops/vanilla/security.md
  - https://ytsaurus.tech/docs/ru/flow/devops/vanilla/security.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/ru/llms.txt

<!-- source: ru/_includes/flow/devops/vanilla/security.md -->
# Безопасность и доступы Vanilla-операции YTsaurus Flow {#security}

## Под каким пользователем работает Vanilla-операция {#identity}

Запускайте раннер Vanilla-операции от имени отдельной служебной учётной записи: операция, контроллеры и воркеры наследуют учётную запись запуска. Регулярно ротируйте её секреты, выдавайте только необходимые роли и используйте разные учётные записи для продакшена и препрода.


## Секреты {#secrets}

Секреты аутентификации, включая `YT_TOKEN`, **никогда** не должны попадать в исходный код, конфиги в репозитории или образы.

Чтобы передать в джобы секреты (например,  собственный токен), перечислите имена соответствующих переменных окружения в `secret_env`:

```yson
"vanilla" = {
    "enable" = %true;
    "pool" = "<ваш-пул>";
    "worker" = {"count" = 5};
    "secret_env" = ["MY_TOKEN"];
};
```

Значения берутся из окружения запуска (того, кто выполняет команду), передаются в поле `secure_vault` спеки, с которой операция стартует, и внутри джобы доступны как обычные переменные окружения. В сохранённую спеку операции `secure_vault` не попадает: YTsaurus вырезает его перед записью, поэтому постфактум значения секретов не видны ни в Cypress, ни через атрибуты операции. `YT_TOKEN` указывать не нужно — он доставляется автоматически.

`node_config` попадает в спеку Vanilla-операции как файл и загружается в файловый кеш, поэтому это не секретный канал: не передавайте через него `YT_TOKEN` или другие секреты.

## Аутентификация {#auth}

Vanilla-операция запускается под пользователем, выполнившим команду, — этот же пользователь должен иметь доступ к YTsaurus. Отдельно настраивать аутентификацию контроллеров и воркеров, как в долгоживущем деплое, не требуется.

Для запуска обязателен [токен доступа](https://ytsaurus.tech/docs/ru/user-guide/storage/auth.md) к YTsaurus: лаунчер берёт его из переменной `YT_TOKEN`, затем из `YT_SECURE_VAULT_YT_TOKEN` (её YTsaurus задаёт через `secure_vault`, когда лаунчер работает внутри джобы), затем из файла, на который указывает `YT_TOKEN_PATH`, и в последнюю очередь из `~/.yt/token`. Если токена нет ни в одном из этих мест, запуск завершится ошибкой.

Для регулярного запуска выполняйте команду от имени отдельной служебной учётной записи, а не человека; требования к учётной записи перечислены в разделе [Под каким пользователем работает Vanilla-операция](#identity).

<!-- source: ru/_includes/flow/devops/auth.md -->
## Настройка аутентификации {#authentication}

Аутентификация для взаимодействия с YTsaurus выполняется по OAUTH-токену.

{% note warning "Внимание" %}

Необходимо, чтобы пользователь (робот) имел хотя бы одну роль на кластере YT (как минимум с доступами до директории пайплайна). В противном случае возникнет ошибка отсутствия пользователя.

{% endnote %}



### OAUTH {#authentication-oauth}


Для Vanilla-операции запустите раннер от имени служебной учётной записи с её YTsaurus-токеном. Раннер передаст `YT_TOKEN` контроллерам и воркерам через `secure_vault`; отдельные переменные `YT_USER` и `YT_TOKEN` для этих процессов не нужны.

Если контроллеры и воркеры развёрнуты отдельно от Vanilla-операции:

1. Создайте для них отдельную служебную учётную запись и выпустите токен по [руководству по аутентификации на кластере](https://ytsaurus.tech/docs/ru/user-guide/storage/auth.md).
2. Задайте `YT_USER` и `YT_TOKEN` в окружении каждого контроллера и воркера. Выдайте учётной записи роль на кластере и права на директорию пайплайна, входные и выходные таблицы, а также на нужный пул операций.
3. Регулярно ротируйте токен; не храните его в репозитории или образе.
<!-- endsource: ru/_includes/flow/devops/auth.md -->

## Минимально необходимые доступы {#permissions}

Учётной записи пайплайна нужны только те права, без которых пайплайн не сможет работать:

- роль на кластере YTsaurus с правами на директорию пайплайна и пути всех таблиц, к которым он обращается;
- право запускать операции в нужном пуле.


Не выдавайте широкие права, например `root` на кластере: при компрометации они увеличивают поверхность атаки.

## См. также

- [Первичный деплой](https://ytsaurus.tech/docs/ru/flow/devops/vanilla/initial-deploy.md)
- [Обновления и релизы](https://ytsaurus.tech/docs/ru/flow/devops/vanilla/releases.md)
<!-- endsource: ru/_includes/flow/devops/vanilla/security.md -->
