Механізми безпеки даних

Єдина система автентифікації та авторизації, шифрування й хешування даних, а також підсистеми аудиту та моніторингу, що захищають дані в межах усієї платформи.

Єдина система автентифікації та авторизації

Єдина система автентифікації та авторизації — це ключовий компонент захисту даних, що забезпечує безпечний доступ до ресурсів системи. Вона дає змогу керувати користувачами, їхніми правами та доступом до даних на загальносистемному рівні.

Нагадаємо:

  • Автентифікація — це процес перевірки особи користувача (наприклад, за іменем користувача та паролем).
  • Авторизація — це процес перевірки прав користувача на виконання певних дій (наприклад, доступ до даних або системних функцій).

Компоненти системи

Автентифікація

  • Логін і пароль: традиційний спосіб автентифікації. Під час входу користувач спершу має ідентифікувати себе за іменем користувача та паролем.
  • Багатофакторна автентифікація (MFA): використання кількох факторів (наприклад, програмного токена, що динамічно оновлюється, для вебінтерфейсу API).

Автентифікація на основі токенів спрощує процес для постійних користувачів. Щоб розпочати роботу, користувач надсилає на сервер запит з іменем користувача та паролем. Сервер звіряє їх зі значеннями, зареєстрованими у своїй базі даних облікових записів. Якщо особу підтверджено, сервер повертає токен автентифікації (який також зберігається в базі даних).

Коли той самий користувач згодом запитує доступ до захищених ресурсів, ці запити можна авторизувати за допомогою токена автентифікації замість імені користувача та пароля. Сервер звіряє токен із зареєстрованим у базі даних і надає доступ.

Авторизація

  • Ролі та права: користувачам призначаються ролі (наприклад, адміністратор доступу, користувач), які визначають їхні права.
  • ACL (Access Control Lists): списки, що визначають, хто має доступ до яких ресурсів.
  • RBAC (Role-Based Access Control): керування доступом на основі ролей.
  • ABAC (Attribute-Based Access Control): керування доступом на основі атрибутів (наприклад, за часом доби або місцезнаходженням).

Зберігання даних користувачів

  • База даних користувачів: зберігає інформацію про користувачів, їхні ролі та права в єдиній базі даних.

Безпека

  • Шифрування: захищає дані під час передавання та зберігання.
  • Токени доступу: програмні токени, що динамічно оновлюються та використовуються для керування сеансами.
  • Аудит: журналювання всіх дій користувачів для подальшого аналізу.

Реалізація системи

Платформа використовує процес автентифікації на основі токенів. Користувач входить за логіном і паролем, система перевіряє їх і повертає токен доступу, після чого цей токен надсилається з кожним наступним запитом для авторизації доступу до захищених ресурсів. Як логін використовується адреса електронної пошти користувача.

Приклад запиту у форматі Curl:

Request example
curl -i --header "Content-Type: application/json" \
--request POST \
--data '{"email":"api@local.net","password":"Str0ngPas$"}'\
https://server123/api/v1/auth/sign_in

У відповідь ми отримуємо таке повідомлення:

Response example
HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff X-Download-Options: noopen X-Permitted-Cross-Domain-Policies: none Referrer-Policy: strict-origin-when-cross-origin Content-Type: application/json; charset=utf-8 access-token: tgervk9_9xicJYpmSsnnNA
token-type: Bearer
client: D-Uv3ER53873olhnNLjL9w
expiry: 1615227012
uid: api@local.net
ETag: W/"5b9bcc76f7223b72b79d9f2d31ff0fd5"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: c18e06b4-e5bd-40b5-875d-7ac958e2fbb5
X-Runtime: 0.391069
Transfer-Encoding: chunked
{"data":{"id":6,"email":"api@local.
net","provider":"email","uid":"api@local.net","name":"API user"}}

У цій відповіді нас цікавить параметр access_token. Значення цього заголовка використовується як пароль для кожного запиту і змінюється з кожним запитом.

Ось приклад запиту, у якому використовується токен із попередньої відповіді:

Request example with token
curl -i --header "access-token: tgervk9_9xicJYpmSsnnNA" \
--header "token-type: Bearer" \
--header "client: D-Uv3ER53873olhnNLjL9w" \
--header "uid: api@local.net" \
--request GET \
--header "Content-Type: application/json" \
--data '{"page":"2"}' \
https://server123/api/v1/stations

У відповідь ми отримуємо таке повідомлення:

Щоб завершити сеанс, можна скористатися процедурою SignOut або зберегти необхідні заголовки з останнього запиту й повторно використати їх наступного разу, якщо термін дії токена ще не минув. Зверніть увагу: без завершення сеансу останній токен залишається дійсним протягом певного часу, залежно від системних налаштувань сервера.

Переваги системи

Єдина система автентифікації та авторизації — це потужний інструмент захисту даних і контролю доступу. Вона забезпечує такі переваги:

  • Централізоване керування: спрощує керування користувачами та їхніми правами.
  • Безпека: захищає дані від несанкціонованого доступу.
  • Узгодженість: усі застосунки та системи використовують єдиний механізм автентифікації та авторизації.
  • Масштабованість: дає змогу легко додавати нові застосунки та користувачів.

Шифрування даних

Для захисту критично важливої інформації система використовує шифрування (перетворення інформації у форму, яку неможливо прочитати без відповідного ключа) і хешування (перетворення даних на унікальний рядок фіксованої довжини — хеш). Це один із ключових механізмів захисту даних, що забезпечує конфіденційність, цілісність і безпеку інформації як під час зберігання, так і під час передавання.

Система використовує різні алгоритми шифрування та хешування даних.

Застосування шифрування в системі

Шифрування під час зберігання

  • Бази даних: шифрування окремих полів бази даних.
  • Файли: шифрування файлів перед збереженням на диск.

Шифрування даних під час передавання

  • HTTPS: використання SSL/TLS для шифрування даних під час передавання мережею.
  • VPN: створення захищеного тунелю для передавання даних.

Шифрування паролів

Зберігання хешів паролів замість самих паролів.

Приклади шифрування та розшифрування даних

Розгляньмо приклади шифрування та розшифрування системних конфігураційних файлів.

Шифрування даних

example.config
mkdir_p(encrypted_dir_path)
encrypted = Rails.application.encrypted(encrypted_file_path, key_path: 'config/system.key')
encrypted.write(File.read(decrypted_file_path))
File.delete(decrypted_file_path)

Розшифрування даних

example.config
mkdir_p(decrypted_dir_path)
File.write(decrypted_file_path,
  Rails.application.encrypted(encrypted_file_path, key_path: 'config/system.key').read
)

Переваги шифрування даних

  • Конфіденційність: захист даних від несанкціонованого доступу.
  • Цілісність: гарантія того, що дані не були змінені.
  • Автентичність: підтвердження джерела даних.
  • Відповідність вимогам: дотримання нормативних вимог.

Аудит і моніторинг

Кілька підсистем відстежують активність користувачів і системи, виявляють підозрілу поведінку та забезпечують дотримання вимог безпеки. Разом вони:

  • збирають, аналізують і зберігають інформацію про активність користувачів і системи для забезпечення підзвітності та відповідності;
  • безперервно відстежують систему та обладнання в реальному часі для виявлення інцидентів і реагування на них.

Завдання

  • Підзвітність: гарантія того, що вся активність користувачів і системи реєструється.
  • Безпека: виявлення та запобігання несанкціонованій активності.
  • Виявлення проблем: виявлення апаратних проблем та аномалій і вжиття коригувальних заходів.
  • Оптимізація продуктивності: аналіз продуктивності системи та пошук вузьких місць, що потребують оптимізації.
  • Прогнозування та планування: збір даних для прогнозування майбутніх навантажень і планування ресурсів.
  • Відповідність: забезпечення дотримання нормативних вимог.
  • Аналіз інцидентів: аналіз інцидентів, що сталися, для запобігання майбутнім.

Компоненти аудиту та моніторингу

Збір даних

  • Журнали: записи про дії користувачів і системи на всіх рівнях.
  • Метрики: дані про продуктивність системи (наприклад, завантаження процесора, використання пам’яті).

Зберігання даних

  • Сховище журналів: збір даних із різних джерел із розподіленим зберіганням журналів і метрик, упорядкованих за тематичними напрямами.
  • Ротація журналів: автоматичне видалення старих журналів для економії місця.

Аналіз даних

  • Пошук і фільтрація: можливість пошуку та фільтрації журналів за різними критеріями.
  • Аналітика: використання інструментів аналізу даних (наприклад, Zabbix).

Сповіщення

  • Сповіщення: надсилання повідомлень про підозрілу активність і надзвичайні ситуації (наприклад, електронною поштою або в чат Telegram).
  • Автоматичні дії: автоматичне реагування на інциденти (наприклад, блокування користувача).

Приклад реалізації

Журналювання

Використання бібліотеки для журналювання в застосунку.

Збір помилок у даних від лічильників

Зберігання журналів

Використання централізованого сховища для журналів.

Таблиця audits

У цій таблиці зберігається інформація про журналювання даних.

ПолеТипОпис
idintegerУнікальний ідентифікатор запису (первинний ключ).
auditable_idintegerПосилання на аудитований об’єкт (equipment.id, stations.id …).
auditable_typecharacter varyingАудитований об’єкт (equipment, stations …).
user_idintegerПосилання на ідентифікатор користувача (users.id)
actioncharacter varyingДія
audited_changesjsonbАудитовані зміни
versionintegerВерсія змін
remote_addresscharacter varyingВіддалена адреса
request_uuidcharacter varyingІдентифікатор події.
created_attimestamp(6) without time zoneДата/час зміни.
Таблиця error_logs

У цій таблиці зберігається інформація про помилки в даних, що надходять від лічильників.

ПолеТипОпис
idintegerУнікальний ідентифікатор запису (первинний ключ).
loggable_idintegerПосилання на зареєстрований об’єкт (equipment.id …).
loggable_typecharacter varyingЗареєстрований об’єкт (equipment …).
messageintegerПосилання на ідентифікатор помилки.
paramsjsonbХарактеристики помилки.
created_attimestamp(6) without time zoneДата/час зміни.

Аналіз журналів

Інструменти, що використовуються для аналізу журналів:

  • Налаштування вебформ для візуалізації та аналізу журналів.
  • Створення інформаційних панелей для моніторингу активності користувачів.

Сповіщення

Налаштовані сповіщення про підозрілу активність:

  • Налаштування сповіщень у Zabbix для моніторингу метрик.
  • Надсилання повідомлень електронною поштою або в чат Telegram про аварійні події.

Переваги аудиту та моніторингу

Аудит і моніторинг — це потужні інструменти захисту даних, що дають змогу відстежувати активність користувачів і системи, виявляти підозрілу поведінку та забезпечувати дотримання вимог безпеки. Вони дають змогу:

  • забезпечити підзвітність і безпеку даних;
  • виявляти інциденти та запобігати їм;
  • дотримуватися нормативних вимог.

Пов'язані теми

Останнє оновлення

Чи була ця сторінка корисною?