Забезпечте надійний захист критично важливих елементів вашого бізнесу.
Працюючи з контейнерами, Kubernetes, хмарними технологіями та конфіденційними даними, ви стикаєтеся з багатьма викликами. Необхідно впроваджувати та дотримуватися передових методів управління ідентифікацією та доступом, а також обирати та застосовувати різноманітні інструменти.
Незалежно від вашої ролі – розробника чи системного адміністратора – важливо мати чітке розуміння того, що у вас є правильні інструменти для забезпечення безпеки вашого середовища. Для коректної роботи додаткам необхідний доступ до конфігураційних даних. Хоча більшість цих даних є публічними, деякі з них повинні залишатися конфіденційними. Ці елементи називаються секретами.
Сподіваюсь, ви вже не зберігаєте секрети в GitHub.
Якщо ви розробляєте надійний додаток, то, скоріше за все, ваші функції потребують доступу до секретів або іншої конфіденційної інформації.
Ці секрети можуть включати:
- Ключі API
- Облікові записи доступу до баз даних
- Ключі шифрування
- Конфіденційні параметри налаштувань (адреси електронної пошти, імена користувачів, мітки налагодження тощо)
- Паролі
Надійне зберігання цих секретів може виявитися складним завданням. Тому ось декілька порад для розробників та системних адміністраторів:
Оновлення залежностей функцій
Постійно відстежуйте бібліотеки, які використовуються у ваших функціях, і своєчасно виявляйте вразливості, постійно їх оновлюючи.
Застосування шлюзів API як буфера безпеки
Уникайте прямого доступу користувачів до функцій. Застосовуйте можливості шлюзів API ваших хмарних провайдерів для забезпечення додаткового рівня безпеки для ваших функцій.
Захист та верифікація даних під час передачі
Обов’язково використовуйте протокол HTTPS для створення безпечного каналу зв’язку, а також перевіряйте SSL-сертифікати для захисту від імітації віддаленої ідентифікації.
Дотримання правил безпечного кодування для програмного коду
Оскільки зловмисники можуть націлюватися не тільки на сервери, а й на рівень додатків, приділяйте особливу увагу безпеці вашого коду.
Керування секретами в захищеному сховищі
Конфіденційна інформація може легко витікати, а застарілі облікові дані можуть стати причиною атак на райдужну таблицю. Тому важливо використовувати надійні рішення для управління секретами. Пам’ятайте, що секрети не повинні зберігатися в коді додатків, змінних середовища або в системах контролю версій.
Управління ключами в умовах співпраці є досить складним завданням, зокрема через брак знань та ресурсів. Деякі компанії інтегрують ключі шифрування та інші секрети безпосередньо у вихідний код, що створює ризик розкриття цих даних.
Через відсутність стандартних рішень, багато компаній розробляють власні інструменти для керування секретами. Далі розглянемо деякі з них, які можуть вам підійти.
Vault
HashiCorp Vault – це інструмент для безпечного зберігання та управління доступом до секретів.
Він пропонує уніфікований інтерфейс для управління секретами, забезпечуючи жорсткий контроль доступу та ведення повного журналу аудиту. Vault допомагає захистити додатки та бази користувачів, зменшуючи площу для потенційних атак та час їхньої дії у випадку порушення.
Він має API, за допомогою якого можна отримати доступ до секретів на основі політик. Кожен користувач API проходить перевірку і може бачити тільки ті секрети, до яких він має право доступу.
Vault шифрує дані за допомогою 256-бітного AES з GCM.
Він може зберігати дані на різних серверах, таких як Amazon DynamoDB, Consul та інші. Vault підтримує запис в локальний файл для аудиту, на сервер Syslog або безпосередньо в сокет. Vault записує інформацію про клієнта, який здійснив дію, його IP-адресу, саму дію та час її виконання.
Запуск або перезапуск Vault завжди включає одного або кількох операторів, які “розпечатують” його. Він працює з токенами, кожен з яких пов’язаний з політикою, яка обмежує дії та шляхи. Основні особливості Vault:
- Шифрує та дешифрує дані, не зберігаючи їх у відкритому вигляді.
- Vault може генерувати секрети на вимогу для певних операцій, наприклад, для баз даних AWS або SQL.
- Підтримує реплікацію в різних дата-центрах.
- Vault має вбудовану функцію для відкликання секретів.
- Виступає як сховище секретів із деталями контролю доступу.
Менеджер секретів AWS
Чи очікували ви побачити AWS у цьому списку? Звісно, так.
AWS пропонує рішення для майже кожної проблеми.
AWS Secrets Manager дозволяє вам швидко змінювати, керувати та отримувати облікові дані для баз даних, ключі API та інші паролі. За допомогою Secrets Manager ви можете захищати, аналізувати та керувати секретами, які необхідні для доступу до сервісів AWS Cloud, а також до сторонніх сервісів і локальних ресурсів.
Менеджер секретів надає можливість керувати доступом до секретів за допомогою детальних дозволів. Основні функції AWS Secrets Manager:
- Шифрує секрети під час зберігання, використовуючи ключі шифрування.
- Розшифровує секрет, а потім безпечно передає його через TLS.
- Надає зразки коду, які спрощують використання API менеджера секретів.
- Має клієнтські бібліотеки кешування для підвищення доступності та зменшення затримки використання секретів.
- Дозволяє налаштувати кінцеві точки Amazon VPC (Virtual Private Cloud), щоб тримати трафік у мережі AWS.
Akeyless Vault
Akeyless Vault – це уніфікована SaaS-платформа для наскрізного керування секретами, яка захищає всі типи облікових даних, як статичні, так і динамічні, включаючи автоматизацію сертифікатів та ключі шифрування. Крім того, вона пропонує рішення для безпечного віддаленого доступу (нульової довіри) до всіх ресурсів у застарілих, багатохмарних і гібридних середовищах.
Akeyless захищає секрети та ключі за допомогою вбудованої сертифікованої запатентованої технології FIPS 140-2; вона не має доступу до секретів і ключів своїх клієнтів.
Ключові особливості Akeyless Vault включають:
- Глобально доступна платформа SaaS, яка забезпечує вбудовану високу доступність (HA) та аварійне відновлення (DR) завдяки використанню власної хмарної архітектури на основі багаторегіональних і багатохмарних сервісів.
- Розширене керування секретами забезпечує безпечне сховище для статичних та динамічних секретів, таких як паролі, облікові дані, ключі API, токени тощо.
- Akeyless Vault забезпечує ініціалізацію та ін’єкцію всіх типів секретів для всіх ваших серверів, додатків і робочих навантажень, надаючи широкий спектр плагінів, що дозволяють підключатися до різних платформ DevOps та ІТ, таких як CI/CD, керування конфігурацією та оркестрація, а також таких інструментів, як Kubernetes & Docker.
Швидкий час запуску у виробництво, оскільки:
- SaaS – не потребує розгортання, встановлення чи обслуговування.
- Миттєва адаптація з автоматичною міграцією секретів зі вже існуючих сховищ.
Платформа підтримує ще два напрямки:
- Доступ до програм з нульовою довірою (AKA Remote Access) завдяки забезпеченню уніфікованої аутентифікації та облікових даних для своєчасного доступу, що дозволяє захистити програми та інфраструктуру без периметра.
- Шифрування як послуга дозволяє клієнтам захищати конфіденційні особисті та бізнес-дані, застосовуючи вдосконалене шифрування на рівні програми, сертифіковане FIPS 140-2.
Keywhiz
Square Keywhiz допомагає керувати секретами інфраструктури, ключами GPG та обліковими даними баз даних, включно з сертифікатами та ключами TLS, симетричними ключами, токенами API та ключами SSH для зовнішніх сервісів. Keywhiz – це інструмент для обробки та обміну секретами.
Автоматизація в Keywhiz дає змогу легко поширювати та налаштовувати ключові секрети для наших служб, що забезпечує послідовне та безпечне середовище. Ключові особливості Keywhiz:
- Сервер Keywhiz пропонує JSON API для отримання та управління секретами.
- Він зберігає всі секрети тільки в пам’яті і ніколи не записує їх на диск.
- Інтерфейс розроблено з використанням AngularJS, що дозволяє користувачам легко переглядати та використовувати його.
Confidant
Confidant – це інструмент керування секретами з відкритим кодом, що забезпечує зручне зберігання та безпечний доступ до секретів. Confidant зберігає секрети у вигляді записів у DynamoDB, генеруючи унікальний ключ даних KMS для кожної зміни секрету, використовуючи симетричну аутентифіковану криптографію Fernet.
Confidant пропонує веб-інтерфейс AngularJS, який дозволяє кінцевим користувачам ефективно керувати секретами, формами секретів для служб та вести журнал змін. Деякі з його функцій включають:
- Аутентифікація KMS
- Шифрування секретів у стані спокою з можливістю ведення версій
- Зручний веб-інтерфейс для управління секретами
- Генерація токенів, які можна використовувати для аутентифікації між службами або для передачі зашифрованих повідомлень між ними.
SOPS
Дозвольте представити SOPS – неймовірний інструмент, який я нещодавно відкрив. Це редактор для зашифрованих файлів, що підтримує формати YAML, JSON, ENV, INI та BINARY. Він може шифрувати файли за допомогою AWS KMS, GCP KMS, Azure Key Vault, age та PGP.
SOPS дозволяє працювати навіть на машинах, які не мають прямого доступу до ключів шифрування, таких як ключі PGP. SOPS пропонує функції для обробки таких ситуацій. Ви можете надати доступ SOPS до ключів шифрування, які зберігаються на віддаленій машині, перенаправивши сокет. Це ніби мати власного портативного агента GPG!
SOPS працює за моделлю клієнт-сервер для шифрування та дешифрування ключа даних. За замовчуванням він запускає локальну службу ключів у тому ж процесі. Клієнт надсилає запити на шифрування або дешифрування до служби ключів, використовуючи gRPC і буфери протоколів. Важливо зазначити, що ці запити не містять жодних криптографічних ключів, ні публічних, ні приватних.
Важливо зауважити, що з’єднання служби ключів наразі не має автентифікації або шифрування. Для забезпечення безпеки рекомендується використовувати інші засоби для шифрування з’єднання, наприклад, тунель SSH.
SOPS також генерує журнали аудиту для відстеження доступу до файлів у контрольованому середовищі. Якщо цю функцію ввімкнено, він записує дії з дешифрування в базі даних PostgreSQL, включаючи мітку часу, ім’я користувача та розшифрований файл.
SOPS пропонує дві зручні команди для передачі розшифрованих секретів новому процесу: exec-env
та exec-file
. Перша команда передає секрети як змінні середовища, а друга зберігає їх у тимчасовому файлі.
Розширення файлу визначає метод шифрування, який використовує SOPS. Тому, зберігайте оригінальне розширення файлу для дешифрування. Це є найпростішим способом забезпечити сумісність.
SOPS черпає натхнення в інструментах, таких як hiera-eyaml, credstash, sneaker та password store. Це чудове рішення, яке усуває необхідність ручного керування файлами, зашифрованими PGP.
Сховище ключів Azure
Ви розміщуєте свої додатки на Azure? Якщо так, то це буде гарним вибором.
Azure Key Vault дозволяє користувачам керувати всіма секретами (ключами, сертифікатами, рядками з’єднання, паролями тощо) для своїх хмарних додатків в одному місці. Він інтегрований з джерелами та цілями секретів в Azure. Програми поза Azure можуть використовувати його.
Ви також можете підвищити продуктивність, зменшивши затримку ваших хмарних додатків, зберігаючи криптографічні ключі в хмарі, а не локально.
Azure допомагає забезпечити захист даних і відповідність нормативним вимогам.
Секрети Docker
Секрети Docker спрощують додавання секрету до кластера, доступ до якого надається лише через взаємно аутентифіковані TLS-з’єднання. Дані зберігаються в Docker secrets у внутрішньому сховищі Raft, що гарантує їх шифрування.
Секрети Docker можна легко використовувати для керування даними та передачі їх у контейнери з обмеженим доступом. Це запобігає витоку секретів під час їх використання додатком.
Knox
Knox був розроблений платформою соціальних мереж Pinterest для вирішення їхньої проблеми ручного керування ключами та ведення журналу аудиту. Knox написаний на Go, і клієнти взаємодіють із сервером Knox через REST API.
Для зберігання ключів Knox використовує тимчасову базу даних. Він шифрує дані, що зберігаються в базі даних, за допомогою AES-GCM з головним ключем шифрування. Knox також доступний як образ Docker.
Doppler
Тисячі організацій, від стартапів до великих підприємств, використовують Doppler для синхронізації секретів і конфігурацій додатків між середовищами, членами команди та пристроями.
Немає потреби ділитися секретами через електронну пошту, zip-архіви, git та Slack; ваші команди можуть співпрацювати та отримувати доступ до секретів відразу після їх додавання. Doppler автоматизує процес і заощаджує час.
Ви можете створити посилання на часто використовувані секрети, щоб оновлення в одному місці автоматично застосовувалося до всіх залежних середовищ. Використовуйте секрети в Serverless, Docker або будь-де. Doppler працює з вами. Він адаптується до вашого стека і дозволяє почати роботу за лічені хвилини.
Doppler CLI дозволяє автоматично завантажувати секрети на основі каталогу вашого проекту. У випадку виникнення проблем, ви можете легко скасувати пошкоджені зміни одним кліком миші через CLI або API.
З Doppler працюйте ефективніше, а не важче, та отримайте програмне забезпечення для керування секретами БЕЗКОШТОВНО. Якщо вам потрібні додаткові функції, ви можете придбати стартовий пакет за ціною 6 доларів на місяць за місце.
Висновок
Сподіваюся, ця інформація дала вам уявлення про найкраще програмне забезпечення для керування обліковими даними програм.
Далі ознайомтеся з рішеннями для інвентаризації цифрових активів і моніторингу.