Spec-Zone.ru › MariaDB

Подключаемый модуль шифрования AWS Key Management

Из-за несовместимости лицензий между исходным кодом сервера MariaDB и Amazon AWS C++ SDK мы можем распространять плагин только в виде исходного кода, а не в виде готовых двоичных файлов. Подробности см. в разделе Установка пакета плагина.

Для шифрования данных в MariaDB (шифрование данных в состоянии покоя) требуется использование плагина управления ключами и шифрования. Эти плагины отвечают как за управление ключами шифрования, так и за фактическое шифрование и дешифрование данных.

MariaDB поддерживает использование нескольких ключей шифрования. Каждый ключ шифрования использует 32-битовое целое число в качестве идентификатора ключа. Если конкретный плагин поддерживает ротацию ключей, то ключи шифрования также могут быть прокручены, что создает новую версию ключа шифрования.

Плагин AWS Key Management — это плагин управления ключами и шифрования, который использует Amazon Web Services (AWS) Key Management Service (KMS).

Обзор

Плагин AWS Key Management использует Amazon Web Services (AWS) Key Management Service (KMS) для генерации и хранения ключей AES на диске в зашифрованном виде с использованием основного ключа клиента (CMK), хранящегося в AWS KMS. При запуске сервера MariaDB плагин будет дешифровать зашифрованные ключи, используя функцию API AWS KMS "Decrypt". Затем данные MariaDB будут шифроваться и дешифроваться с использованием ключа AES. Он поддерживает несколько ключей шифрования. Он поддерживает ротацию ключей.

Учебники

Учебники, связанные с плагином AWS Key Management, можно найти на следующих страницах:

  • Руководство по настройке плагина шифрования AWS Key Management Service (KMS)
  • Расширенное использование плагина шифрования AWS Key Management Service (KMS)

Подготовка

  • Прежде чем использовать плагин, необходимо создать основной ключ клиента (CMK). Создайте ключ с помощью консоли AWS, как описано в руководстве разработчика AMS KMS.
  • Самый простой способ предоставить плагину AWS Key Management доступ к ключу — создать роль IAM с доступом к ключу и применить эту роль IAM к экземпляру EC2, на котором работает сервер MariaDB.
  • Убедитесь, что сервер MariaDB работает под правильной учетной записью AWS, имеющей доступ к вышеупомянутому ключу. Например, вы можете сохранить учетные данные AWS в файле учетных данных AWS для пользователя, который выполняет mysqld. Дополнительную информацию о файле учетных данных можно найти в Руководстве по началу работы с AWS CLI.

Установка пакета плагина

Плагин AWS Key Management зависит от AWS SDK для C++, который использует Apache License, Version 2.0. Эта лицензия несовместима с лицензией GPL 2.0 сервера MariaDB, поэтому мы не можем распространять пакеты, содержащие плагин AWS Key Management. Следовательно, единственный способ получить плагин в настоящее время — установить его из исходного кода.

Установка из исходного кода

При компиляции MariaDB из исходного кода плагин AWS Key Management по умолчанию не компилируется в MariaDB 10.1, но он компилируется по умолчанию в MariaDB 10.2 и более поздних версиях на системах, которые его поддерживают.

Компиляция контролируется следующими cmake аргументами:

  • -DPLUGIN_AWS_KEY_MANAGEMENT=DYNAMIC для построения загружаемой библиотеки плагина
  • -DAWS_SDK_EXTERNAL_PROJECT=ON для скачивания кода AWS C++ SDK
  • -DNOT_FOR_DISTRIBUTION=ON для подтверждения, что вы понимаете, что не должны распространять полученные двоичные файлы

Плагин использует AWS C++ SDK, что вводит следующие ограничения:

  • Плагин может быть скомпилирован только на Windows, Linux и macOS.
  • Плагин требует использования одного из следующих компиляторов: gcc 4.8 или более поздней версии, clang 3.3 или более поздней версии, Visual Studio 2013 или более поздней версии.
  • В Unix необходимо установить пакет разработки libcurl (например, libcurl3-dev в Debian Jessie), пакет разработки uuid и openssl.
  • Возможно, вам потребуется использовать более новую версию cmake по сравнению с той, которая предоставляется по умолчанию вашей ОС.

Вам не нужно самостоятельно загружать/устанавливать AWS C++ SDK, правильная версия репозитория SDK github будет клонирована в каталог сборки во время сборки, и будут скомпилированы только библиотеки для AWS-компонентов, фактически необходимых плагину управления ключами, что занимает гораздо меньше времени, чем компиляция всего AWS C++ SDK.

Сборка на Linux

После установки всех необходимых компонентов процесс сборки фактически сводится к:

# clone the MariaDB Server source code repository
git clone https://github.com/MariaDB/server.git
cd server

# prepare the build
mkdir _build
cd _build
cmake .. -DNOT_FOR_DISTRIBUTION=ON \
  -DPLUGIN_AWS_KEY_MANAGEMENT=DYNAMIC \
  -DAWS_SDK_EXTERNAL_PROJECT=1

# build the plugin only
cd plugin/aws_key_management
make 

Cmake выведет следующее предупреждение как часть своего вывода, обратите на него внимание и не распространяйте файл aws_key_management.so никому из третьих лиц:

Вы связали MariaDB с библиотеками Apache 2.0! Вы не можете распространять полученный двоичный файл. В противном случае вы окажетесь в юридических проблемах с Free Software Foundation.

После успешного выполнения make вы можете скопировать созданный файл библиотеки плагина aws_key_management.so в каталог плагинов вашей фактической установки сервера MariaDB, например /usr/lib64/mysql/plugin в системах на основе RedHat/Fedora или /usr/lib/mysql/plugin в системах на основе Debian.

Установка плагина

Даже после установки на операционную систему пакета, содержащего общую библиотеку плагина, плагин по умолчанию не устанавливается MariaDB. Существует два способа установки плагина в MariaDB.

Первый метод можно использовать для установки плагина без перезапуска сервера. Вы можете установить плагин динамически, выполнив INSTALL SONAME или INSTALL PLUGIN. Например:

INSTALL SONAME 'aws_key_management';

Второй метод можно использовать, чтобы указать серверу загружать плагин при его запуске. Плагин можно установить таким образом, указав --plugin-load или --plugin-load-add опции. Это можно указать в качестве аргумента командной строки для mysqld или указать в соответствующей группе опций сервера в группе опций в файле опций. Например:

[mariadb]
...
plugin_load_add = aws_key_management

Удаление плагина

Перед удалением плагина убедитесь, что шифрование данных в состоянии покоя полностью отключено и что MariaDB больше не нуждается в плагине для дешифрования таблиц или других файлов.

Вы можете удалить плагин динамически, выполнив UNINSTALL SONAME или UNINSTALL PLUGIN. Например:

UNINSTALL SONAME 'aws_key_management';

Если вы установили плагин, указав --plugin-load или --plugin-load-add опции в соответствующей группе опций сервера в группе опций в файле опций, то эти опции следует удалить, чтобы предотвратить загрузку плагина при следующем перезапуске сервера.

Настройка плагина AWS Key Management

Для активации плагина AWS Key Management необходимо также установить системные переменные плагина. Переменная aws_key_management_master_key_id является основной переменной, которую необходимо установить. Эти системные переменные можно указать в качестве аргументов командной строки для mysqld или указать в соответствующей группе опций сервера в группе опций в файле опций. Например:

[mariadb]
...
aws_key_management_master_key_id=alias/<your key's alias>

После обновления файла конфигурации перезапустите сервер MariaDB, чтобы применить изменения и сделать плагин управления ключами и шифрованием доступным для использования.

Использование плагина AWS Key Management

После активации плагина AWS Key Management вы можете использовать его, создав зашифрованную таблицу:

CREATE TABLE t (i int) ENGINE=InnoDB ENCRYPTED=YES

Теперь таблица t будет зашифрована с использованием ключа шифрования, сгенерированного AWS.

Дополнительную информацию о том, как использовать шифрование, см. в разделе Шифрование данных в состоянии покоя.

Использование нескольких ключей шифрования

Плагин AWS Key Management поддерживает использование нескольких ключей шифрования. Каждый ключ шифрования может быть определен с помощью другого 32-битового целого числа в качестве идентификатора ключа. Если используется ранее неиспользованный идентификатор, плагин автоматически сгенерирует новый ключ.

При шифровании таблиц InnoDB ключ, используемый для шифрования таблиц, может быть изменен.

При шифровании таблиц Aria ключ, используемый для шифрования таблиц, в настоящее время изменить нельзя.

Ротация ключей

Плагин AWS Key Management поддерживает ротацию ключей. Для ротации ключа установите системную переменную aws_key_management_rotate_key. Например, для ротации ключа с идентификатором 2:

SET GLOBAL aws_key_management_rotate_key=2;

Или для ротации всех ключей, установите значение -1:

SET GLOBAL aws_key_management_rotate_key=-1;

Версии

Версия Статус Введено
1.0 Стабильная MariaDB 10.2.6, MariaDB 10.1.24
1.0 Бета MariaDB 10.1.18
1.0 Экспериментальная MariaDB 10.1.13

Переменные системы

aws_key_management_key_spec

  • Описание: Алгоритм шифрования, используемый для создания новых ключей
  • Командная строка: --aws-key-management-key-spec=value
  • Область: Глобальная
  • Динамическая: Нет
  • Тип данных: enumerated
  • Значение по умолчанию: AES_128
  • Допустимые значения: AES_128, AES_256

aws_key_management_log_level

  • Описание: Вывод журнала AWS SDK в журнал ошибок MariaDB. Разрешённые значения, в порядке возрастания подробности, являются Выключено (по умолчанию), Критическая ошибка, Ошибка, Предупреждение, Информация, Отладка и Отслеживание.
  • Командная строка: --aws-key-management-log-level=value
  • Область: Глобальная
  • Динамическая: Нет
  • Тип данных: enumerated
  • Значение по умолчанию: Off
  • Допустимые значения: Off, Fatal, Warn, Info, Debug и Trace

aws_key_management_master_key_id

  • Описание: Идентификатор Главного ключа AWS KMS (ARN или псевдоним, начинающийся с alias/) для главного ключа шифрования. Используется для создания новых ключей данных. Если не установлено, новые ключи данных не будут созданы.
  • Командная строка: --aws-key-management-master-key-id=value
  • Область: Глобальная
  • Динамическая: Нет
  • Тип данных: string
  • Значение по умолчанию:

aws_key_management_mock

  • Описание: Имитация вызовов AWS KMS (для тестирования). Должно быть включено на этапе компиляции.
  • Командная строка: --aws-key-management-mock
  • Область: Глобальная
  • Динамическая: Нет
  • Тип данных: boolean
  • Значение по умолчанию: OFF
  • Допустимые значения: OFF, ON

aws_key_management_region

  • Описание: Имя региона AWS, например us-east-1. По умолчанию используется значение по умолчанию SDK, которое является us-east-1.
  • Командная строка: --aws-key-management-region=value
  • Область: Глобальная
  • Динамическая: Нет
  • Тип данных: string
  • Значение по умолчанию: 'us-east-1'

aws_key_management_request_timeout

  • Описание: Таймаут в миллисекундах для создания соединения HTTPS или выполнения запроса AWS. Укажите 0, чтобы использовать значение по умолчанию SDK.
  • Командная строка: --aws-key-management-request-timeout=value
  • Область: Глобальная
  • Динамическая: Нет
  • Тип данных: integer
  • Значение по умолчанию: 0

aws_key_management_rotate_key

  • Описание: Установите эту переменную в идентификатор ключа данных, чтобы выполнить ротацию ключа к главному ключу, указанному в aws_key_management_master_key_id. Установите -1, чтобы произвести ротацию всех ключей.
  • Командная строка: --aws-key-management-rotate-key=value
  • Область: Глобальная
  • Динамическая: Да
  • Тип данных: integer
  • Значение по умолчанию:

Параметры

aws_key_management

  • Описание: Управляет тем, как сервер должен обрабатывать плагин при запуске.
    • Допустимые значения:
      • OFF - Отключает плагин, не удаляя его из таблицы mysql.plugins.
      • ON - Включает плагин. Если плагин не может быть инициализирован, сервер все равно продолжит запуск, но плагин будет отключен.
      • FORCE - Включает плагин. Если плагин не может быть инициализирован, сервер завершит запуск с ошибкой.
      • FORCE_PLUS_PERMANENT - Включает плагин. Если плагин не может быть инициализирован, сервер завершит запуск с ошибкой. Кроме того, плагин нельзя удалить с помощью UNINSTALL SONAME или UNINSTALL PLUGIN во время работы сервера.
    • См. Обзор плагинов: Настройка активации плагинов при запуске сервера для получения дополнительной информации.
  • Командная строка: --aws-key-management=value
  • Тип данных: enumerated
  • Значение по умолчанию: ON
  • Допустимые значения: OFF, ON, FORCE, FORCE_PLUS_PERMANENT

Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержание не проверяется предварительно компанией MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/aws-key-management-encryption-plugin/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API