Примеры проектирования Акры | Документация и руководства | Установка | Отзыв Акры |
---|
Acra — пакет безопасности баз данных для защиты конфиденциальных и личных данных.
Acra обеспечивает шифрование полей данных на уровне приложения, многоуровневый контроль доступа, предотвращение утечек базы данных и возможности обнаружения вторжений в одном пакете. Acra был специально разработан для распределенных приложений (веб-, серверных и мобильных), которые хранят данные в одной или нескольких базах данных/хранилищах данных.
Идеальные приложения, совместимые с Acra | Типичные отрасли |
---|---|
Веб-приложения и мобильные приложения, хранящие данные в централизованной базе данных или объектном хранилище. |
|
Приложения Интернета вещей, которые собирают телеметрию и обрабатывают данные в облаке | |
Высоконагруженные приложения для обработки данных |
Acra предоставляет вам инструменты для шифрования каждой конфиденциальной записи данных (поля данных, ячейки базы данных, json) перед их сохранением в базе данных/хранилище файлов. А затем расшифровать их в безопасном отделении (на стороне Акры). Acra позволяет как можно раньше шифровать данные и работать с зашифрованными данными.
Криптографическая конструкция Acra гарантирует, что никакой утечки секрета (пароля, ключа и т. д.) из приложения или базы данных не будет достаточно для расшифровки защищенных данных. Acra сводит к минимуму масштабы утечек, обнаруживает несанкционированное поведение и предотвращает утечку, информируя операторов о происходящем инциденте.
Это Acra Community Edition, она бесплатна для коммерческого и некоммерческого использования навсегда.
| шифрование на стороне клиента и/или Acra — каждое поле данных шифруется с использованием уникальных ключей шифрования. |
| вы выбираете, какие столбцы шифровать, чтобы сбалансировать хорошую безопасность и производительность. |
| два криптоконверта: AcraBlocks и AcraStructs. AcraBlocks — быстрые симметричные контейнеры, используйте их по умолчанию. AcraStructs — это асимметричные контейнеры, используйте их для шифрования на стороне клиента. |
| поиск по зашифрованным данным без расшифровки. Предназначен для точных запросов на основе AES-GCM и слепого индекса. |
| используйте полную или частичную маскировку для удаления или маскировки конфиденциальных данных. |
| заменяйте конфиденциальные данные токеном и сопоставляйте их с оригиналом только при необходимости. |
| встроенные инструменты для генерации ключей, экспорта, резервного копирования, ротации и т. д. |
| через встроенный брандмауэр SQL. |
| использование подозрительных записей (медовых токенов) для предупреждения о подозрительном поведении. |
| доступен для пользователей Acra Enterprise. |
| |
|
Acra обеспечивает разные уровни защиты для разных частей и этапов жизненного цикла данных. Это и есть глубокоэшелонированная защита — независимый набор мер безопасности, направленный на снижение множества рисков в случае пересечения злоумышленником внешнего периметра.
| все функции Acra упакованы в прокси-сервер базы данных, который анализирует трафик между приложением и базой данных и при необходимости применяет функции безопасности. |
| API-сервер, который предоставляет большинство функций Acra в виде HTTP/gRPC API с защитой трафика. |
| дополнительная служба на стороне клиента для аутентификации и транспортного шифрования. |
| доступен для пользователей Acra Enterprise. |
| |
| |
| |
|
| ваша инфраструктура защищена с самого начала без дополнительной настройки. |
| нет риска выбора неправильной длины ключа или заполнения алгоритма. |
| легко настроить и автоматизировать. |
| через бинарные пакеты или образы Docker. |
| требует минимальных изменений в коде приложения. |
| во всех компонентах Acra; совместим со стеком ELK, Datadog, Graylog, Prometheus, Grafana, Jaeger. |
| утилиты отката для расшифровки базы данных в открытый текст. |
| Доступно множество примеров проектов на базе Интернета и Docker. |
| запустите AcraServer в своем облаке DigitalOcean. |
| мы можем настроить и управлять Acra для вас. |
Acra полагается на нашу криптографическую библиотеку Themis, которая реализует криптосистемы высокого уровня, основанные на лучших доступных реализациях самых надежных шифров с открытым исходным кодом. Acra строго не содержит самодельных криптографических примитивов или непонятных шифров.
Для предоставления своих уникальных гарантий Acra полагается на сочетание хорошо известных шифров и интеллектуальной схемы управления ключами. См. Криптография и управление ключами.
Крипто-примитивный источник по умолчанию | OpenSSL |
Поддерживаемые крипто-примитивные источники ᵉ | BoringSSL, LibreSSL, соответствует FIPS, соответствует ГОСТу, HSM |
Шифрование хранилища (AcraBlocks) | AES-256-GCM + AES-256-GCM |
Шифрование хранилища (AcraStructs) | AES-256-GCM + ECDH |
Транспортное шифрование | TLS v1.2+ или безопасный сеанс Themis |
Интеграция с KMS ᵉ | Amazon KMS, Google Cloud Platform KMS, HashiCorp Vault, Keywhiz и т. д. |
ᵉ — доступно только в версии Acra Enterprise. Напишите нам по электронной почте, чтобы получить полный список функций и ценовое предложение.
Acra состоит из нескольких служб и утилит. Сервисы Acra позволяют создавать бесконечно сложные потоки данных, которые идеально подходят для вашей конкретной инфраструктуры. В зависимости от вашей архитектуры и варианта использования вам может потребоваться развернуть только базовые службы или все из них.
Компоненты обеспечения безопасности : службы, в которых «происходит шифрование». Требуется один из них: AcraServer, AcraTranslator, AnyProxy или клиентские SDK.
Хранилище ключей: хранилища данных, где Acra хранит зашифрованные ключи: Redis, таблица в вашей базе данных, любое хранилище KV. Требуется один из них.
Хранилище мастер-ключей: KMS, Vault. Один из них настоятельно рекомендуется.
Дополнительные сервисы и утилиты: утилиты управления ключами, сценарии миграции данных, служба транспортной безопасности, инструменты управления политиками. Любой из них является необязательным.
Дополнительную информацию о компонентах Acra см. в разделе «Подробные сведения об Acra/Архитектура». Более типичные потоки данных и развертывания на основе Acra см. в разделе «Подробные сведения об Acra» / «Поток данных».
Давайте посмотрим на простейший поток данных с помощью AcraServer.
AcraServer работает как прозрачный прокси-сервер шифрования/дешифрования с базами данных SQL. Приложение не знает, что данные зашифрованы, прежде чем они попадут в базу данных, база данных также не знает, что кто-то зашифровал данные. Вот почему мы часто называем этот режим «прозрачным шифрованием».
У вас есть клиентское приложение, которое взаимодействует с базой данных SQL. Вы добавляете AcraServer посередине, работающий как прокси-сервер SQL, и указываете на него приложение.
Вот как выглядит процесс записи и чтения данных в/из базы данных:
Вы развертываете AcraServer и настраиваете его: подключение к базе данных, TLS-сертификаты, выбираете, какие поля шифровать, маскировать или токенизировать, включаете брандмауэр SQL-запросов и т. д.
После развертывания AcraServer готов принимать запросы SQL.
Вы указываете клиентскому приложению на AcraServer вместо базы данных SQL.
При получении SQL-запросов от приложения AcraServer анализирует каждый запрос и выполняет операции безопасности: шифрование, маскирование, токенизацию. Чтобы узнать, какие значения следует изменить, AcraServer использует файл конфигурации, в котором вы описали, какие столбцы следует зашифровать, замаскировать и токенизировать.
После выполнения операции AcraServer передает измененные запросы в базу данных, а ответ базы данных — обратно клиентскому приложению. Предположим, вы выбрали шифрование поля электронной почты: это означает, что исходная строка шифруется в криптографический контейнер и отправляется в базу данных в виде двоичных данных.
Когда клиентское приложение хочет прочитать данные, оно отправляет запрос SELECT на AcraServer, который отправляет его в базу данных.
Получив ответ базы данных, AcraServer пытается расшифровать, демаскировать, детокенизировать указанные поля и вернуть их приложению.
Приложение получает данные в открытом виде.
Помимо операций по обработке данных, AcraServer также анализирует SQL-запросы: блокирует нежелательные запросы с помощью встроенного настраиваемого брандмауэра SQL, обнаруживает SQL-инъекции с помощью подозрительных записей, отправляет журналы и метрики и предупреждает вашу команду эксплуатации в подозрительных случаях.
Ознакомьтесь с Руководством: Интеграция AcraServer в инфраструктуру, чтобы узнать больше о функциях AcraServer и о том, как их использовать.
Давайте посмотрим на простейший поток данных с помощью AcraTranslator.
AcraTranslator работает как шифрование как услуга с использованием HTTP и API gRPC. Приложение отправляет запрос API в AcraTranslator с полями данных и операциями (шифрование, дешифрование, токенизация, детокенизация и т. д.). Приложение отвечает за хранение зашифрованных данных в базе данных (NoSQL, хранилище KV, SQL, AWS S3 — любое) и взаимодействие с AcraTranslator для их обратного расшифрования.
AcraTranslator и AcraServer — это полностью независимые серверные компоненты, которые можно использовать вместе или по отдельности в зависимости от вашей инфраструктуры.
У вас есть клиентское приложение, которое знает, какие поля шифровать, расшифровывать, токенизировать и где их хранить. Вы добавляете AcraTranslator и обучаете приложение выполнять вызовы API для его использования.
Вот как выглядит процесс записи и чтения данных в/из базы данных:
Вы развертываете AcraTranslator в своей инфраструктуре и настраиваете сертификаты TLS.
После развертывания AcraTranslator он готов принимать запросы API.
Ваше приложение вызывает AcraTranslator и отправляет поля данных и операции над ними (шифрование, дешифрование, токенизация, детокенизация).
При получении запросов API AcraTranslator выполняет необходимую операцию и отправляет результат обратно в приложение. Предположим, приложение отправляет поле «электронная почта» и операцию «шифровать». В этом случае исходная строка шифруется в криптографический контейнер и отправляется обратно в приложение в виде двоичных данных.
Приложение принимает зашифрованные данные и сохраняет их в базе данных/хранилище данных.
Как только приложению необходимо получить данные в виде открытого текста, оно считывает зашифрованные данные из базы данных/хранилища данных и отправляет запрос API в AcraTranslator. Предположим, приложение отправляет поле «электронная почта» и операцию «расшифровки». В этом случае исходные данные (двоичный большой двоичный объект) расшифровываются в строку и отправляются обратно в приложение.
Помимо операций по обработке данных, AcraTranslator также анализирует запросы API: обнаруживает вторжения с помощью подозрительных записей, отправляет журналы и метрики и предупреждает вашу команду эксплуатации в подозрительных случаях.
Ознакомьтесь с Руководством: Интеграция AcraTranslator в инфраструктуру, чтобы узнать больше о функциях AcraServer и о том, как их использовать.
Acra — это набор компонентов, большинство из которых являются «серверными», что означает, что вы развертываете и настраиваете AcraServer, AcraTranslator или AnyProxy и подключаете к ним свое клиентское приложение.
Компоненты Acra совместимы с многочисленными СУБД, объектными и KV-хранилищами, облачными платформами, внешними системами управления ключами (KMS), системами балансировки нагрузки.
Облачные платформы | DigitalOcean, AWS, GCP, Heroku, любой |
СУБД | MySQL v5.7+, PosgtreSQL v9.4–v11, MariaDB v10.3; Google Cloud SQL, Amazon RDS |
Хранилища объектов | файловые системы, базы данных KV, Amazon S3, Google Cloud DataStore |
Балансировка нагрузки | HAProxy, облачные балансировщики |
Серверные платформы | Ubuntu, Debian, CentOS, RHEL; Докер |
Язык клиентского приложения | любой :) |
Acra с открытым исходным кодом имеет ограниченную поддержку интеграции, дополнительные услуги доступны только в Acra Enterprise Edition.
Серверные компоненты Acra (AcraServer, AcraTranslator, AnyProxy) должны работать на отдельных серверах/виртуальных машинах для лучшей изоляции и разделения. Утилиты управления ключами и помощники по работе с базами данных обычно запускаются на том же сервере, что и AcraServer, AcraTranslator, AnyProxy.
Серверные компоненты Acra работают в большинстве дистрибутивов Linux (Ubuntu, Debian, CentOS) и в виде образов Docker. Обратите внимание: серверные компоненты Acra несовместимы с ОС Windows в качестве хостовой ОС, поэтому рассмотрите возможность использования Docker.
См. раздел «Начало работы», чтобы узнать, как установить Acra или попробовать Acra без программирования.
Acra работает с любыми клиентскими приложениями. Независимо от того, какие языки вы используете для написания своих приложений, вы можете подключить их к AcraServer (через SQL) и AcraTranslator/AnyProxy (через API) для шифрования, дешифрования, токенизации и маскировки данных.
Acra предоставляет набор клиентских SDK, которые полезны только в определенных случаях:
AcraWriter — SDK для шифрования полей данных в AcraStructs. Используйте его, когда важно шифровать данные на стороне приложения (для создания сквозных зашифрованных потоков данных или работы во враждебных средах).
AcraReader — SDK для расшифровки полей данных из AcraStructs. Используйте его, когда важно расшифровать данные на стороне приложения (для создания сквозных зашифрованных потоков данных или работы во враждебных средах).
SDK для AcraTranslator — SDK, который инкапсулирует API AcraTranslator для более удобного использования.
Эти SDK доступны для Ruby, Python, Go, C++, Node.js, iOS (Swift, ObjC), Android (Java, Kotlin), Java для настольных компьютеров и PHP.
См. раздел «Начало работы», чтобы узнать, как установить Acra или попробовать Acra без программирования.
Примеры проектов Acra иллюстрируют интеграцию пакета защиты данных Acra в существующие приложения: веб-приложения на основе платформ Django и Ruby on Rails, а также простые приложения CLI. Мы взяли известные приложения, обнаружили там конфиденциальные данные и добавили уровень шифрования. Защита данных полностью прозрачна для пользователей и требует минимальных изменений в инфраструктуре и коде приложения.
Дружелюбие к разработчикам и операторам:
запустите одну команду для развертывания приложения, базы данных, компонентов Acra, журналов и информационных панелей;
прочитайте изменения кода и увидите, как мало нужно для интеграции шифрования в клиентское приложение;
узнать, как работает Acra, читая логи, отслеживая метрики в Prometheus, проверяя трассеры в Jaeger и просматривая информационные панели Grafana;
проверять файлы Docker-compose, схемы архитектуры, таблицы базы данных и многое другое.
Требования: Linux или macOS с установленным Docker.
Запуск примеров проектов Acra |
---|
Самые последние версии документации, учебных пособий и демонстраций для Acra доступны на официальном сервере документации Cossack Labs.
Чтобы получить первоначальное представление об Акре, вы можете:
Что такое Акра, чтобы получить обзор вещей.
Средства контроля безопасности Acra, чтобы узнать больше о шифровании, маскировке, токенизации, брандмауэре SQL, обнаружении вторжений и т. д.
Типичные потоки данных, показывающие, какие компоненты Acra вам нужны, а также каковы плюсы и минусы каждой комбинации.
Прочтите примечания по архитектуре и дизайну безопасности Acra, чтобы лучше понять, что вы получаете при использовании Acra и какова модель угроз, в которой работает Acra.
Вы также можете просмотреть слайды докладчиков следующих докладов инженеров Cossack Labs:
«Шифрование без магии, управление рисками без боли», Анастасия Войтова.
«Шифрование данных для веб-приложений Ruby», Дмитрий Шаповалов.
«Построение SQL-брандмауэра (AcraCensor): идеи разработчиков», Артем Сторожук.
Запуск примеров проектов Acra |
---|
Acra может помочь вам соблюдать действующие правила конфиденциальности, такие как:
Общий регламент защиты данных (GDPR)
HIPAA (Закон о переносимости и подотчетности медицинского страхования)
DPA (Закон о защите данных)
CCPA (Закон штата Калифорния о конфиденциальности потребителей)
Настройка и использование Acra в установленной форме будет удовлетворять большинству требований, описанных в статьях 25, 32, 33 и 34 GDPR, а также требований HIPAA по защите данных PII. Узнайте больше об Acra и правилах.
Это Acra Community Edition, версия Acra с открытым исходным кодом, которая бесплатна для коммерческого и некоммерческого использования. Сообщите нам об этом в разделе «Проблемы», если вы обнаружите ошибку, увидите возможное улучшение или прокомментируете систему безопасности.
Также доступна версия Acra Enterprise Edition. Он обеспечивает более высокую производительность, резервирование/балансировку нагрузки, поставляется с предварительно настроенными криптопримитивами по вашему выбору (FIPS, ГОСТ), имеет интеграцию с инструментами управления ключами/секретами в вашем стеке, управление политиками, SDK на стороне клиента и имеет множество утилит и инструментов для ваших операторов и SRE, позволяющих удобно управлять Acra. Свяжитесь с нами, чтобы получить полный список функций и ценовое предложение.
Для защиты конфиденциальных данных требуется нечто большее, чем просто компиляция криптографического кода. Acra не сделает вас «готовым к использованию» всеми современными правилами безопасности, и никакой другой инструмент этого не сделает.
Мы помогаем компаниям планировать свою стратегию безопасности данных путем аудита, оценки потока данных и классификации данных, перечисления рисков. Мы делаем самую сложную и наименее посещаемую часть процесса достижения соответствия – превращаем его из «расходов на ведение бизнеса» в «систему безопасности, предотвращающую риски».
Если вы хотите поделиться своим кодом или предоставить какой-либо другой вклад в Acra, мы будем очень рады. Ваша отправная точка для внесения вклада здесь.
Если вы являетесь пользователем Acra, оставьте, пожалуйста, короткий отзыв.
Acra Community Edition лицензируется как программное обеспечение с открытым исходным кодом Apache 2.
Если вы хотите задать технический вопрос, не стесняйтесь поднять проблему или напишите по адресу [email protected].
Чтобы поговорить с бизнес-подразделением Cossack Labs Limited, напишите нам по адресу [email protected].