44 lines
6.7 KiB
Markdown
44 lines
6.7 KiB
Markdown
# :ninja: Конфиденциальность
|
||
|
||
Я разработчик, и это приложение должно помогать мне работать, оптимизируя мое время взаимодействия с GitLab. В какой-то момент я решил подлиться своими наработками со всеми желающими. Часто в GitLab содержится множество конфиденциальной информации, которую не хотелось бы раскрывать. Эта страница пытается ответить на все вопросы, которые могут вас смущать.
|
||
|
||
!!! tip "Доверие"
|
||
|
||
Вы не должны верить мне на слово. Вы можете [самостоятельно изучить код, он открыт и не сложен.](https://github.com/uPagge/gitlab-notification) После проверки можно самостоятельно собрать jar и [упаковать его в Docker](https://github.com/uPagge/gitlab-notification/blob/master/Dockerfile). Либо запускать код прямо из Idea.
|
||
|
||
## Защита токена GitLab
|
||
Для работы ассистента необходим персональный токен GitLab. Он указывается в переменные среды и нигде дополнительно не хранится и не передается. Таким образом токен не попадает в Telegram и хранится только у вас на компьютере и в контейнере приложения.
|
||
|
||
Токен используется только при обращении к указанному GitLab, и только для выполнения описанных в документации возможностей. Никакой скрытой работы не выполняется, по возможности обо всех взаимодействиях с GitLab дополнительно сообщается во время настройки.
|
||
|
||
!!! question "А что, если ты заполучишь токен?"
|
||
|
||
Ну начнем с того, что мне ваш токен даром не нужен. Изучайте код, если мне не верите, или не пользуйтесь моим ботом. Эта страница призвана ответить на возникающие вопросы безопаности решения, не более этого. Дополнительно убеждать никого не собираюсь.
|
||
|
||
## Уровни конфиденциальности
|
||
|
||
Некоторые уведомления могут содержать множество чувствительной информации. Например, уведомления о новых сообщениях в тредах. Возможно вы не захотите раскрывать столько информации о вашей разработке телеграму, ведь через него идет получение уведомлений. Специально для таких случаев предусмотрены уровни конфиденциальности разных типов уведомлений.
|
||
|
||
Возьмем для примера уведомление о новом сообщении в треде. При минимальном уровне конфиденциальности вы получите уведомление с текстом комментария и сможете сразу ответить на него в телеграм, а при максимальном уровне конфиденциальности будет сообщаться только о факте нового комментария, без содержания. Все это настраивается при первом запуске.
|
||
|
||
## Сохранение в БД
|
||
Для работы ассистента ему нужно сохранять предыдущее состояние GitLab сущностей. Для этого используется БД. Приложение старается не хранить в БД больше данных, чем необходимо. Как только необходимость в данных теряется, например MR мержится, данные из БД удаляются.
|
||
|
||
Прочитать подробнее можно в разделе: [Работа с базой данных](../architecture/concept.md#schema-database)
|
||
|
||
## Несанкционированный доступ { id="access-control" }
|
||
==Все боты в Telegram являются публичными.== Это значит, что ваш бот может быть найден через поиск в Telegram. Поэтому ==не рекомендуется давать название боту, которое может раскрыть его предназначение.==
|
||
|
||
Даже если кто-то случайно напишет вашему боту ничего не случится. ==В боте встроена проверка прав доступа.== Вот как она работает:
|
||
|
||
1. При запуске вы указываете ваш идентификатор в Telegram. В отличие от логина, идентификатор уникален для каждого пользователя и нет возможности его подменить.
|
||
2. Когда бот получает сообщение, он проверяет идентификатор отправителя
|
||
3. Если идентификатор отправителя не совпадает с указанным при запуске, бот не обрабатывает команду
|
||
4. Вы получаете уведомление о том, что такой-то пользователь пытался написать в ваш бот. Вам доступен логин этого пользователя в Telegram, а также текст его сообщения. Это поможет понять является ли попытка доступа злонамеренной и принять меры.
|
||
|
||
<figure markdown>
|
||
![unauth-access.png](unauth-access.png){ loading=lazy width="500" }
|
||
<figcaption>уведомление о несанкционированном доступе</figcaption>
|
||
</figure>
|
||
|
||
Для злоумышленника все выглядит так, как будто бот не работает. Никаких ответных сообщений ему не отправляется. |