# Безопасность (/ru/docs/pbx/security)

Что общего у всех CLI WireCat (связка ключей, разрешения, MCP и то, что никогда не попадает в лог), описано на
[общей странице о безопасности](/llms.mdx/docs/ru/security/content.md). Здесь только то, что касается именно `pbx`.

`pbx` хранит настройки в `config.json`, а состояние в папках, которые показывает `pbx doctor`. Он читает АТС
и никогда в нее не пишет: Master.csv и аудиозаписи открываются только для чтения, а сеанс базы открывается только для
чтения и отправляет `SELECT` по таблице CDR, со значениями в виде параметров. Дайте ему пользователя, которому больше
ничего не разрешено, как показано на странице [подключите Asterisk](/llms.mdx/docs/ru/pbx/asterisk/content.md#a-cdr-database), и не открывайте
базу и AMI в интернет.

`session start` хранит пароль базы в связке ключей ОС или в закрытом файле там, где связка ключей не работает. Пароль
читается скрыто или из stdin, никогда из командной строки, и проверяется, прежде чем его сохранить. Он уходит только
драйверу базы и никогда не попадает в ответ, ошибку, запись запуска или лог. Профиль с локальным Master.csv пароля не
хранит.

## Что лежит в хранилище [#что-лежит-в-хранилище]

Хранилище WireCat хранит номера звонящих и их имена из Caller ID, внутренние номера, время звонков, пути к
аудиозаписям и, после расшифровки, то, что было сказано. Копию аудиозаписи оно не хранит. Относитесь к хранилищу так
же, как к самим звонкам: оно лежит на этом компьютере и доступно для чтения только вашему пользователю. Расшифровки,
имена и номера доходят до агента с пометкой «недоверенные данные», никогда как инструкции.

Речь распознается на этом компьютере. Ни аудиозапись, ни расшифровка не уходят во внешний сервис.

## Аудиозаписи и согласие [#аудиозаписи-и-согласие]

Запись телефонного разговора, ее хранение и перевод в текст может требовать согласия участников звонка, а как именно,
решает закон вашей страны (в России, например, 152-ФЗ о персональных данных). Сообщать звонящим, что звонок
записывается, и хранить записи не дольше разрешенного обязан владелец АТС. `pbx` читает только аудиозаписи,
которые АТС уже сделала, и не удаляет ни одной из них.

`pbx personal mcp serve --http` слушает только на `127.0.0.1`, для браузерных приложений, которые доходят до него
через ваш собственный туннель. Каждое приложение входит по одноразовому коду, а сервер хранит хеш каждого выданного
входа в папке состояния, доступной для чтения только вам. `pbx personal mcp revoke` забывает их все.

Запись запуска хранит командную строку в том виде, как вы ее ввели, поэтому `pbx runs show` показывает, что было
запущено. Секрет при этом сохраняется как `[redacted]`: параметр с именем вроде token или password, пароль в ссылке,
длинная непрозрачная строка. Номер телефона заменяется на `[redacted]` внутри введенного слова, включая текст
сообщения: номер, записанный с «+» и кодом страны, или от 11 до 15 цифр подряд, так что длинный id такой длины тоже
скрывается. Чтобы не хранить ни одного введенного слова, выполните `pbx personal config set record_input false`.

Секрет распознается и по внешнему виду, в записи запуска и в сохраненном сообщении об ошибке: токен известного
формата (GitHub, OpenAI, Slack, AWS, Stripe, npm и подобные), учетные данные `Bearer`, случайная на вид строка из 20 и
более символов и случайная на вид последовательность из 20 и более шестнадцатеричных символов в нижнем регистре,
например шестнадцатеричный ключ или полный хеш коммита. Значение после имени секрета тоже скрывается, будь то после
`=`, `:` или пробела: `password=`, `API_TOKEN=`, `password hunter2`, `pin 1234`. Некоторые секреты похожи на обычные
слова и остаются: значение из одних букв после имени секрета и пробела (`pin this message` остается),
шестнадцатеричный ключ в верхнем регистре, короткий хеш коммита или UUID, короткий пароль, введенный без имени
секрета перед ним, и секрет внутри ссылки или пути к файлу, если он не известного формата и не стоит после имени
секрета.

`config.json` сохраняется доступным для чтения только вам (`0600`), а его папка создается только для вас (`0700`).
Файл или папка, созданные старой версией, могут быть открыты другим пользователям компьютера: `pbx doctor`
выводит каждый такой путь в `files.problems` и печатает `chmod`, который это исправляет. В Windows это не
проверяется. Об уязвимости сообщайте так, как описано в
[SECURITY.md](https://github.com/WireCatLabs/asterisk-cli/blob/main/SECURITY.md).
