Документация/Безопасность и данные
Доступ агента к базам, кластерам и очередям
Как задать уровень доступа агента к каждой базе данных, кластеру Kubernetes и брокеру сообщений, что значат метки окружений dev, stage и prod и какие действия вы подтверждаете на каждый вызов.
Подключения к базам, кластерам и брокерам сообщений вы заводите в приложении. Что агенту можно делать с каждым из них, решает уровень доступа на вкладке «Подключения». Приложение проверяет его при каждом обращении агента и отклоняет любое действие выше уровня, что бы агент ни прислал. Самые рискованные действия — запись в базу, чтение логов и секретов рабочего кластера — вы подтверждаете каждый раз, и только за компьютером.
Как открыть
- Откройте «Настройки → Безопасность агента», вкладку «Подключения».
- На вкладке — блоки «Базы данных» и «Кластеры Kubernetes». Брокеры сообщений, браузер, Jira и маскирование — в свёрнутом блоке «Ещё: брокеры сообщений, браузер, Jira, скрытие данных…».
- Выберите уровень у нужного подключения. Он сохраняется сразу.
Сами подключения вы заводите в других местах. Базы — на вкладке «БД», кнопкой «Добавить подключение»; по умолчанию эта вкладка стоит в левой колонке окна. Брокеры — в виде «Queues»: этот вид открывают в шапке окна через «Другие инструменты → Queues». Кластеры приложение берёт из вашего kubeconfig. Чтобы агент получил для них инструменты, включите модуль «Databases», «Kubernetes» или «Queues» в «Настройки → Модули»: по умолчанию эти модули выключены (см. Модули). Уровень можно выбрать и раньше: он заработает, когда вы включите модуль.
Базы данных
| Уровень | Что агенту доступно |
|---|---|
| «Закрыто» | Агент видит только название подключения. |
| «Только схема» | Таблицы, столбцы, индексы, DDL — ни одной строки данных. |
| «Чтение» | Схема и данные. Всё, что агент прочитает, уходит в модель. |
| «Чтение и запись» | Плюс изменения данных и схемы — каждое после вашего подтверждения. |
По умолчанию — «Чтение и запись»: «По умолчанию — всё; каждое изменение подтверждается на своей карточке.» Если не хотите, чтобы агент видел данные, поставьте «Только схема» или «Закрыто». У подключения «только для чтения» уровень не поднять выше «Чтение».
Кластеры Kubernetes
| Уровень | Что агенту доступно |
|---|---|
| «Закрыт» | Агент видит только название кластера. |
| «Чтение» | Списки и статусы — без подтверждения; логи и содержимое Secret и ConfigMap — после вашего подтверждения. Что именно вы подтверждаете, зависит от метки окружения (о ней ниже). |
| «Чтение и действия» | Плюс изменения: масштабирование, перезапуск, удаление. На prod каждое — после вашего подтверждения. На stage — после подтверждения в режиме агента «Авто» (см. Режимы агента), а в режиме «Полный» агент меняет stage сам. |
По умолчанию — «Чтение и действия». Чтобы сузить доступ, нажмите «Ограничить namespace и типы ресурсов…» и заполните «Namespaces» и «Типы ресурсов». После этого приложение отклоняет любой вызов без namespace.
Метки окружений
У каждого кластера есть метка. От неё зависит, что агент делает сам, а что — после вашего подтверждения: «dev — без вопросов, stage — спросит в Авто, prod — спросит всегда».
| Метка | Поведение |
|---|---|
dev | Логи и действия без карточки. |
stage | Логи без карточки. Действия — с подтверждением в режиме «Авто», в режиме «Полный» — без карточки. |
prod | Логи, Secret и действия с подтверждением. |
Метки dev, stage и prod встроены: их нельзя переименовать или удалить. Можно добавить готовую метку pre-prod,
она ведёт себя как prod. Можно завести и свою: новая метка тоже ведёт себя как prod, пока вы не выберете ей другое
поведение.
Метку выбирают на вкладке «Подключения», в блоке «Кластеры Kubernetes»: рядом с именем каждого кластера стоит список меток. Свою метку добавляют через «Добавить метку» внизу этого списка, а меняют и удаляют кнопками «Изменить» и «Удалить» в блоке «Метки окружений» под списком кластеров. Ещё метку можно выбрать в виде «Kubernetes»: меню кластера → «Метка окружения».
Пока вы не выбрали метку, приложение угадывает её по имени кластера и пишет «определено по адресу и имени»:
prod,prd,liveв имени →prod;stage,staging,stg→stage;dev,test,qa,local,sandbox,minikube,kind, Docker Desktop, OrbStack →dev;- всё остальное, в том числе кластер на
127.0.0.1, →prod.
Проверьте метки своих кластеров: угаданная метка бывает строже или мягче, чем нужно. Метка привязана к адресу API-сервера кластера.
Брокеры сообщений
Уровни для подключений Kafka и RabbitMQ — в блоке «Брокеры сообщений»:
| Уровень | Что агенту доступно |
|---|---|
| «Закрыто» | Агент видит имя подключения и больше ничего. |
| «Метаданные» | Топики, группы, отставание, счётчики DLQ (очередей необработанных сообщений) — ни тел, ни ключей, ни заголовков сообщений. |
| «Сообщения» | Плюс сами сообщения и примеры из DLQ — в маскированном виде. |
| «Сообщения и запросы» | Плюс запросы к вам на действия; решаете их вы, в виде «Queues». |
По умолчанию брокер закрыт — в отличие от баз и кластеров. Когда уровень выше «Закрыто», доступ можно сузить списками «Vhosts» (виртуальные хосты RabbitMQ), «Очереди» или «Топики», «Exchanges» (пустой список — все) и сохранить их кнопкой «Сохранить списки». Сам агент ничего в брокере изменить не может: на уровне «Сообщения и запросы» он только присылает вам запрос с планом (см. Очереди).
Браузер и Jira
- «Браузер»: «Закрыт», «Смотреть» (открывает страницы, делает снимки, читает текст и консоль) или «Смотреть и действовать» (вдобавок нажимает и вводит текст на странице). По умолчанию — «Смотреть и действовать». Куда браузер может заходить, решают сетевые настройки агента (см. Браузер агента).
- «Jira (Zephyr Copilot)»: «Закрыто», «Чтение» или «Полный доступ» (по умолчанию). Новые тест-кейсы агент создаёт только при полном доступе, и каждую пачку вы подтверждаете на карточке. Удалять и менять кейсы агент не может.
Что подтверждается на каждый вызов
Эти действия агент выполняет, только когда вы нажмёте «Разрешить» на карточке именно этого вызова:
- запись в базу данных;
- логи пода — на кластерах с поведением
prod; - содержимое Secret и ConfigMap, значения переменных окружения контейнера;
- изменения в кластере — на кластерах с поведением
prod, а с поведениемstage— только в режиме «Авто»; - чтение сообщений RabbitMQ и трассировка.
Одно «Разрешить» — одно действие. Галочки «Больше не спрашивать» у таких карточек нет. Подтвердить такую карточку можно только за этим компьютером, а с телефона — лишь отклонить.
Важно
Если вы перевели чат в режим «Без ограничений», приложение подтверждает эти вызовы само и отмечает это в журнале: запись в базы и изменения рабочих кластеров проходят без карточки. Уровни доступа в этом режиме всё равно действуют.
Команды в обход модуля
Агент может обратиться к подключению напрямую из терминала, например psql -h … или docker exec … mongosh. Тогда
он показывает карточку «Выполнить команду в обход модуля?» с пояснением «Обращается к … напрямую, а не через модуль»
или «…а уровень этого подключения в «Безопасности» ниже, чем может команда».
- Если у подключения только чтение, такую команду вы подтверждаете каждый раз.
- Если подключение закрыто, команда не пройдёт.
- Если у подключения полный доступ, решает режим чата. В «Полном» команда выполняется без вопроса. В «Авто» агент спросит, и на этой карточке есть галочка «Больше не спрашивать»: она действует для этого подключения. Запрет на эту галочку из раздела «Что подтверждается на каждый вызов» касается только карточек из того списка.
Маскирование данных
Данные из баз, очередей, кластеров и логов продакшена маскируются до того, как попадут к агенту. Пароли и ключи
заменяются на [secret]. Вместо человека агент видит псевдоним вида [user:3fa2c1], одинаковый во всех строках
ответа. По нему агент понимает, что заказ и ошибка относятся к одному человеку, а кто это — не узнаёт. По виду
значения маскирование находит почту, телефоны, номера карт, СНИЛС, ИНН, паспорт, ФИО, дату рождения и адрес.
Чтобы добавить свои правила, откройте «Ещё: брокеры сообщений, браузер, Jira, скрытие данных…» → «Маскирование»:
- Впишите поля и форматы, по одному в строке. Поля скрываются по имени в базах, очередях, кластерах и логах. Форматы — это регулярные выражения: совпадения с ними скрываются в любом ответе инструмента.
- Нажмите «Сохранить правила».
- Вставьте пример в «Проверить на тексте» и нажмите «Показать, как увидит агент».
Ваши правила только добавляются к встроенным и к правилам организации: ослабить их нельзя. Сами вы в окне приложения видите данные без маскирования.
Как это соблюдается
- Приложение проверяет уровень при каждом обращении агента; сам агент в этой проверке не участвует.
- Уровни хранятся запечатанными системной связкой ключей. Если файл с уровнями изменить в обход приложения, заменить
или перенести с другого компьютера, приложение его не откроет. Тогда для агента закрыто всё: базы, кластеры,
брокеры, браузер и Jira, а каждый кластер считается
prod. - Уровень выдан подключению «по адресу»: это хост, порт, база и пользователь, а у кластера — адрес сервера. Если подключение стало вести в другое место, ваш уровень на него не переносится: база и кластер получают уровень по умолчанию, а брокер закрывается.
Ограничения
- Уровни не защищают от доступа в обход приложения, например через пароль в
.envпроекта или свой скрипт с драйвером базы. Не храните боевые пароли в проекте, а пользователю базы, под которым работает агент, давайте права только на чтение. - Если на компьютере нет системной связки ключей (так бывает на Linux), приложение пишет: «…уровни негде хранить надёжно: они действуют до закрытия приложения, после запуска всё снова закрыто.»
- Если проект открыт на сервере по SSH, инструменты кластеров и очередей работают, а подключения и уровни остаются на вашем компьютере.
- Организация может сверху ограничить кластеры, namespace, брокеры и очереди (см. Организации).
Что дальше
- Базы данных — как завести подключение и работать с базой.
- Кластеры Kubernetes — вид «Kubernetes» и инструменты агента.
- Очереди Kafka и RabbitMQ — брокеры, сообщения и запросы агента.
- Ограничения агента — песочница, сеть и файлы.
Обновлено · Нашли неточность? Напишите на support@devmachine.ai или в Telegram.
