17.13 Шифрование данных InnoDB на диске
InnoDB поддерживает шифрование данных на диске для табличных пространств, табличных пространств, mysql системного табличного пространства, журналов редо, и журналов отмены.
Вы можете установить значение по умолчанию для шифрования схем и общих табличных пространств; это позволяет администраторам баз данных управлять тем, будут ли таблицы, созданные в этих схемах и табличных пространствах, зашифрованы.
InnoDB функции и возможности шифрования данных на диске описаны в следующих разделах этого раздела.
Обзор шифрования данных на диске
InnoDB использует двухступенчатую архитектуру ключей шифрования, состоящую из главного ключа шифрования и ключей табличных пространств. Когда табличное пространство зашифровано, ключ табличного пространства зашифровывается и хранится в заголовке табличного пространства. Когда приложение или авторизованный пользователь хотят получить доступ к зашифрованным данным табличного пространства, InnoDB использует главный ключ шифрования для расшифровки ключа табличного пространства. Расшифрованная версия ключа табличного пространства никогда не изменяется, но главный ключ шифрования может быть изменен по мере необходимости. Эта операция называется вращением главного ключа.
Функция шифрования данных на диске опирается на компонент или плагин хранилища ключей для управления главным ключом шифрования.
Все издания MySQL предоставляют компонент component_keyring_file, который хранит данные хранилища ключей в файле на локальном хосте сервера.
MySQL Enterprise Edition предлагает дополнительные компоненты и плагины хранилища ключей:
component_keyring_encrypted_file: Хранит данные хранилища ключей в зашифрованном файле с парольной защитой на локальном хосте сервера.keyring_okv: Плагин KMIP 1.1 для использования с продуктами хранения ключей на основе KMIP. Поддерживаемые продукты совместимые с KMIP включают централизованные решения для управления ключами, такие как Oracle Key Vault, Gemalto KeySecure, Thales Vormetric key management server и Fornetix Key Orchestration.keyring_aws: Связывается с Amazon Web Services Key Management Service (AWS KMS) в качестве бэкенда для генерации ключей и использует локальный файл для хранения ключей.keyring_hashicorp: Связывается с HashiCorp Vault для хранения на бэкенде.
Для управления ключами шифрования компоненты component_keyring_file и component_keyring_encrypted_file не предназначены как решение для соответствия нормативным требованиям. Стандарты безопасности, такие как PCI, FIPS и другие, требуют использования систем управления ключами для обеспечения безопасности, управления и защиты ключей шифрования в хранилищах ключей или модулях безопасности на аппаратном уровне (HSM).
Надежное и эффективное решение для управления ключами шифрования имеет решающее значение для обеспечения безопасности и соответствия различным стандартам безопасности. Когда функция шифрования данных на диске использует централизованное решение для управления ключами, эта функция называется “Прозрачное шифрование данных MySQL Enterprise (TDE)”.
Функция шифрования данных на диске поддерживает алгоритм шифрования с блоками Advanced Encryption Standard (AES). Она использует режим шифрования блоков Electronic Codebook (ECB) для шифрования ключей табличных пространств и режим шифрования блоков Cipher Block Chaining (CBC) для шифрования данных.
Часто задаваемые вопросы о функции шифрования данных на диске см. в Разделе A.17, «MySQL 8.4 FAQ: Шифрование данных InnoDB на диске».
Предварительные условия для шифрования
-
Компонент или плагин хранилища ключей должен быть установлен и настроен при запуске. Ранняя загрузка гарантирует, что компонент или плагин доступен до инициализации движка хранения
InnoDB. Инструкции по установке и настройке хранилища ключей см. в Разделе 8.4.4, «Хранилище ключей MySQL». В инструкциях показано, как обеспечить активность выбранного компонента или плагина.Одновременно должен быть активен только один компонент или плагин хранилища ключей. Включение нескольких компонентов или плагинов хранилища ключей не поддерживается, и результаты могут отличаться от ожидаемых.
ВажноПосле создания зашифрованных табличных пространств в экземпляре MySQL компонент или плагин хранилища ключей, который был загружен при создании зашифрованного табличного пространства, должен продолжать загружаться при запуске. Невыполнение этого приведет к ошибкам при запуске сервера и во время
InnoDBвосстановления. При шифровании производственных данных убедитесь, что приняты меры для предотвращения потери главного ключа шифрования. Если главный ключ шифрования утерян, данные, хранящиеся в зашифрованных файлах табличного пространства, невозможно восстановить. Если вы используете компонент
component_keyring_fileилиcomponent_keyring_encrypted_file, создайте резервную копию файла данных хранилища ключей сразу после создания первого зашифрованного табличного пространства, до вращения главного ключа и после вращения главного ключа. В файле конфигурации каждого компонента указано местоположение файла данных. Если вы используете плагинkeyring_okvилиkeyring_aws, убедитесь, что выполнена необходимая настройка. Инструкции см. в Разделе 8.4.4, «Хранилище ключей MySQL».
Определение значения шифрования по умолчанию для схем и общих табличных пространств
Переменная системы default_table_encryption определяет значение шифрования по умолчанию для схем и общих табличных пространств. Операции CREATE
TABLESPACE и CREATE
SCHEMA применяют значение default_table_encryption, если явно не указан параметр ENCRYPTION.
Операции ALTER
SCHEMA и ALTER
TABLESPACE не применяют значение default_table_encryption. Для изменения шифрования существующей схемы или общего табличного пространства необходимо явно указать параметр ENCRYPTION.
Переменную default_table_encryption можно установить для отдельного клиентского соединения или глобально, используя синтаксис SET. Например, следующая команда глобально включает шифрование по умолчанию для схем и табличных пространств:
mysql> SET GLOBAL default_table_encryption=ON;
Значение шифрования по умолчанию для схемы также можно определить с помощью параметра DEFAULT ENCRYPTION при создании или изменении схемы, как в этом примере:
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
Если параметр DEFAULT ENCRYPTION не указан при создании схемы, применяется значение default_table_encryption. Для изменения значения шифрования по умолчанию для существующей схемы необходимо указать параметр DEFAULT ENCRYPTION. В противном случае схема сохранит текущее значение шифрования.
По умолчанию таблица наследует значение шифрования схемы или общего табличного пространства, в котором она создана. Например, таблица, созданная в схеме с включённым шифрованием, шифруется по умолчанию. Это позволяет администратору базы данных контролировать использование шифрования таблиц, определяя и применяя значения шифрования по умолчанию для схем и общих табличных пространств.
Значения шифрования по умолчанию применяются, если включена переменная системы table_encryption_privilege_check. При включённом table_encryption_privilege_check происходит проверка привилегий при создании или изменении схемы или общего табличного пространства с настройкой шифрования, отличающейся от default_table_encryption, или при создании или изменении таблицы с настройкой шифрования, отличающейся от шифрования по умолчанию схемы. При отключенном (по умолчанию) table_encryption_privilege_check проверка привилегий не выполняется, и указанные выше операции разрешаются с предупреждением.
Для переопределения значений шифрования по умолчанию, при включенном table_encryption_privilege_check, требуется привилегия TABLE_ENCRYPTION_ADMIN. Администратор базы данных может предоставить эту привилегию пользователю, чтобы позволить ему отклониться от значения default_table_encryption при создании или изменении схемы или общего табличного пространства, или отклониться от шифрования схемы по умолчанию при создании или изменении таблицы. Эта привилегия не позволяет отклоняться от шифрования общего табличного пространства при создании или изменении таблицы. Таблица должна иметь то же значение шифрования, что и общее табличное пространство, в котором она расположена.
Шифрование табличного пространства на основе файла на таблицу
Табличное пространство на основе файла на таблицу наследует значение шифрования по умолчанию схемы, в которой создаётся таблица, если явно не указан параметр ENCRYPTION в команде CREATE TABLE.
mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
Для изменения шифрования существующего табличного пространства на основе файла на таблицу необходимо указать параметр ENCRYPTION.
mysql> ALTER TABLE t1 ENCRYPTION = 'Y';
Если включён table_encryption_privilege_check, для указания параметра ENCRYPTION с настройкой, отличающейся от значения шифрования по умолчанию для схемы, требуется привилегия TABLE_ENCRYPTION_ADMIN. См. Определение значения шифрования по умолчанию для схем и общих табличных пространств.
Шифрование общего табличного пространства
Переменная default_table_encryption определяет шифрование вновь созданного общего табличного пространства, если явно не указан параметр ENCRYPTION в команде CREATE
TABLESPACE.
mysql> CREATE TABLESPACE `ts1` ADD DATAFILE 'ts1.ibd' ENCRYPTION = 'Y' Engine=InnoDB;
Для изменения шифрования существующего общего табличного пространства необходимо указать параметр ENCRYPTION.
mysql> ALTER TABLESPACE ts1 ENCRYPTION = 'Y';
Если включён table_encryption_privilege_check, для указания параметра ENCRYPTION с настройкой, отличающейся от значения default_table_encryption, требуется привилегия TABLE_ENCRYPTION_ADMIN. См. Определение значения шифрования по умолчанию для схем и общих табличных пространств.
Шифрование файла doublewrite
В MySQL 8.4, InnoDB автоматически шифрует страницы файла doublewrite, относящиеся к зашифрованным табличным пространствам. Действий не требуется. Страницы файла doublewrite шифруются с использованием ключа шифрования соответствующего табличного пространства. Та же зашифрованная страница, записанная в файл данных табличного пространства, также записывается в файл doublewrite. Страницы файла doublewrite, относящиеся к незашифрованным табличным пространствам, остаются незашифрованными.
Во время восстановления зашифрованные страницы файла doublewrite расшифровываются и проверяются на повреждения.
Шифрование системного табличного пространства mysql
Системное табличное пространство mysql содержит таблицы системной базы данных mysql и словаря данных MySQL. По умолчанию оно незашифровано. Чтобы включить шифрование для системного табличного пространства mysql, укажите имя табличного пространства и опцию ENCRYPTION в команде ALTER TABLESPACE.
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
Чтобы отключить шифрование для системного табличного пространства mysql, установите значение ENCRYPTION = 'N' с помощью команды ALTER TABLESPACE.
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'N';
Включение или отключение шифрования для системного табличного пространства mysql требует привилегии CREATE
TABLESPACE на всех таблицах экземпляра (CREATE TABLESPACE on *.*)).
Шифрование лога редо
Шифрование данных лога редо включается с помощью параметра конфигурации innodb_redo_log_encrypt. Шифрование лога редо отключено по умолчанию.
Как и для данных табличного пространства, шифрование данных лога редо происходит при записи данных в диск, а расшифровка — при чтении данных с диска. После чтения данных лога редо в память, данные находятся в незашифрованном виде. Шифрование и расшифровка данных лога редо осуществляется с использованием ключа шифрования табличного пространства.
При включенном innodb_redo_log_encrypt, незашифрованные страницы лога редо, присутствующие на диске, остаются незашифрованными, а новые страницы лога редо записываются на диск в зашифрованном виде. Аналогично, при отключённом innodb_redo_log_encrypt, зашифрованные страницы лога редо, присутствующие на диске, остаются зашифрованными, а новые страницы лога редо записываются на диск в незашифрованном виде.
Метаданные шифрования лога редо, включая ключ шифрования табличного пространства, хранятся в заголовке файла лога редо с последним LSN контрольной точки. Если файл лога редо с метаданными шифрования удален, шифрование лога редо отключается.
После включения шифрования лога редо, обычный перезапуск без компонента или плагина ключа или без ключа шифрования невозможен, поскольку InnoDB должен иметь возможность сканировать страницы лога редо во время запуска, что невозможно, если страницы лога редо зашифрованы. Без компонента или плагина ключа или без ключа шифрования возможен только принудительный запуск без логов редо (SRV_FORCE_NO_LOG_REDO). См. Раздел 17.20.3, «Принудительное восстановление InnoDB».
Шифрование журнала отката
Шифрование данных журнала отката включено с помощью опции конфигурации innodb_undo_log_encrypt. Шифрование журнала отката применяется к журналам отката, находящимся в . См. Раздел 17.6.3.4, «Пространства имен отката». Шифрование данных журнала отката по умолчанию отключено.
Как и в случае с данными пространства имен, шифрование данных журнала отката происходит при записи данных журнала отката на диск, а дешифрование — при чтении данных журнала отката с диска. После чтения данных журнала отката в память они находятся в нешифрованном виде. Шифрование и дешифрование данных журнала отката выполняется с использованием ключа шифрования пространства имен.
Когда innodb_undo_log_encrypt включено, нешифрованные страницы журнала отката, присутствующие на диске, остаются нешифрованными, а новые страницы журнала отката записываются на диск в зашифрованном виде. Аналогично, когда innodb_undo_log_encrypt отключено, зашифрованные страницы журнала отката, присутствующие на диске, остаются зашифрованными, а новые страницы журнала отката записываются на диск в незашифрованном виде.
Метаданные шифрования журнала отката, включая ключ шифрования пространства имен, хранятся в заголовке файла журнала отката.
Когда шифрование журнала отката отключено, сервер по-прежнему требует компонента или плагина keyring, который использовался для шифрования данных журнала отката, до тех пор, пока пространства имен отката, содержащие зашифрованные данные журнала отката, не будут усечены. (Заголовок шифрования удаляется только из пространства имен отката при усечении пространства имен отката.) Сведения о усечении пространств имен отката см. в разделе Усечение пространств имен отката.
Вращение основного ключа шифрования
Основной ключ шифрования следует периодически вращать и всякий раз, когда вы подозреваете, что ключ был скомпрометирован.
Вращение основного ключа шифрования — это атомарная операция на уровне экземпляра. Каждый раз, когда вращается основной ключ шифрования, все ключи пространств имен в экземпляре MySQL перешифровываются и сохраняются обратно в соответствующие заголовки пространств имен. Как атомарная операция, перешифровка должна быть успешной для всех ключей пространств имен после начала операции вращения. Если вращение основного ключа шифрования прерывается сбоем сервера, InnoDB продолжит операцию при перезапуске сервера. Более подробная информация приведена в разделе Шифрование и восстановление.
Вращение основного ключа шифрования изменяет только основной ключ шифрования и перешифровывает ключи пространств имен. Оно не дешифрует и не перешифровывает связанные данные пространства имен.
Для вращения основного ключа шифрования требуется привилегия ENCRYPTION_KEY_ADMIN (или устаревшая привилегия SUPER).
Чтобы повернуть основной ключ шифрования, выполните:
mysql> ALTER INSTANCE ROTATE INNODB MASTER KEY;
ALTER INSTANCE ROTATE INNODB MASTER
KEY поддерживает одновременные операции DML. Однако он не может выполняться одновременно с операциями шифрования пространств имен, и блокировки используются для предотвращения конфликтов, которые могут возникнуть при одновременном выполнении. Если операция ALTER INSTANCE ROTATE INNODB
MASTER KEY выполняется, она должна завершиться, прежде чем сможет начаться операция шифрования пространства имен, и наоборот.
Шифрование и восстановление
Если во время операции шифрования произошел сбой сервера, операция будет продолжена при перезапуске сервера. Для общих пространств имен операция шифрования возобновляется в фоновом потоке с последней обработанной страницы.
Если во время вращения основного ключа произошел сбой сервера, InnoDB продолжит операцию при перезапуске сервера.
Компонент или плагин keyring должен быть загружен перед инициализацией движка хранения данных, чтобы информация, необходимая для дешифрования страниц данных пространств имен, могла быть извлечена из заголовков пространств имен до того, как InnoDB инициализация и операции восстановления получат доступ к данным пространств имен. (См. Предварительные условия для шифрования.)
Когда InnoDB инициализация и восстановление начинаются, операция вращения основного ключа возобновляется. Из-за сбоя сервера некоторые ключи пространств имен могут уже быть зашифрованы с использованием нового основного ключа шифрования. InnoDB считывает данные шифрования из каждого заголовка пространства имен, и если данные указывают, что ключ пространства имен зашифрован с помощью старого основного ключа шифрования, InnoDB извлекает старый ключ из keyring и использует его для дешифровки ключа пространства имен. InnoDB затем перешифровывает ключ пространства имен с помощью нового основного ключа шифрования и сохраняет перешифрованный ключ пространства имен обратно в заголовок пространства имен.
Экспорт зашифрованных пространств имен
Экспорт пространств имен поддерживается только для пространств имен с файлом на таблицу.
При экспорте зашифрованного пространства имен InnoDB генерирует ключ передачи, который используется для шифрования ключа пространства имен. Зашифрованный ключ пространства имен и ключ передачи хранятся в файле . Этот файл вместе с зашифрованным файлом пространства имен необходим для выполнения операции импорта. При импорте tablespace_name.cfpInnoDB использует ключ передачи для дешифровки ключа пространства имен в файле . Дополнительная информация приведена в разделе Раздел 17.6.1.3, «Импорт таблиц InnoDB».tablespace_name.cfp
Шифрование и репликация
Выражение
ALTER INSTANCE ROTATE INNODB MASTER KEYподдерживается только в средах репликации, где исходный и реплицирующий сервер используют версию MySQL, поддерживающую шифрование пространств имен.Успешные выражения
ALTER INSTANCE ROTATE INNODB MASTER KEYзаписываются в двоичный журнал для репликации на репликах.Если выражение
ALTER INSTANCE ROTATE INNODB MASTER KEYзавершается неудачно, оно не записывается в двоичный журнал и не реплицируется на репликах.Репликация операции
ALTER INSTANCE ROTATE INNODB MASTER KEYзавершается неудачно, если компонент или плагин keyring установлен на источнике, но не на реплике.
Идентификация зашифрованных пространств имен и схем
Таблица Информационной схемы INNODB_TABLESPACES содержит столбец ENCRYPTION, который можно использовать для идентификации зашифрованных пространств имен.
mysql> SELECT SPACE, NAME, SPACE_TYPE, ENCRYPTION FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
WHERE ENCRYPTION='Y'\G
*************************** 1. row ***************************
SPACE: 4294967294
NAME: mysql
SPACE_TYPE: General
ENCRYPTION: Y
*************************** 2. row ***************************
SPACE: 2
NAME: test/t1
SPACE_TYPE: Single
ENCRYPTION: Y
*************************** 3. row ***************************
SPACE: 3
NAME: ts1
SPACE_TYPE: General
ENCRYPTION: Y
Когда опция ENCRYPTION указана в операторе CREATE TABLE или ALTER TABLE, она записывается в столбец CREATE_OPTIONS таблицы INFORMATION_SCHEMA.TABLES. Этот столбец можно запросить, чтобы идентифицировать таблицы, находящиеся в зашифрованных пространствах имен с файлом на таблицу.
mysql> SELECT TABLE_SCHEMA, TABLE_NAME, CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES
WHERE CREATE_OPTIONS LIKE '%ENCRYPTION%';
+--------------+------------+----------------+
| TABLE_SCHEMA | TABLE_NAME | CREATE_OPTIONS |
+--------------+------------+----------------+
| test | t1 | ENCRYPTION="Y" |
+--------------+------------+----------------+
Запросите таблицу Информационной схемы INNODB_TABLESPACES, чтобы получить информацию о пространстве имен, связанном с конкретной схемой и таблицей.
mysql> SELECT SPACE, NAME, SPACE_TYPE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE NAME='test/t1';
+-------+---------+------------+
| SPACE | NAME | SPACE_TYPE |
+-------+---------+------------+
| 3 | test/t1 | Single |
+-------+---------+------------+
Вы можете идентифицировать схемы с включенным шифрованием, запросив таблицу Информационной схемы SCHEMATA.
mysql> SELECT SCHEMA_NAME, DEFAULT_ENCRYPTION FROM INFORMATION_SCHEMA.SCHEMATA
WHERE DEFAULT_ENCRYPTION='YES';
+-------------+--------------------+
| SCHEMA_NAME | DEFAULT_ENCRYPTION |
+-------------+--------------------+
| test | YES |
+-------------+--------------------+
SHOW CREATE
SCHEMA также отображает предложение DEFAULT
ENCRYPTION.
Мониторинг прогресса шифрования
Вы можете отслеживать общий прогресс шифрования табличного пространства и mysql системного табличного пространства с помощью Performance Schema.
Инструмент событий стадии stage/innodb/alter tablespace (encryption) сообщает информацию о WORK_ESTIMATED и WORK_COMPLETED для операций шифрования общего табличного пространства.
Следующий пример демонстрирует, как включить инструмент событий стадии stage/innodb/alter tablespace (encryption) и связанные потребительские таблицы для мониторинга прогресса шифрования общего табличного пространства или mysql системного табличного пространства. Справочную информацию об инструментах событий стадии Performance Schema и связанных потребителях см. в Разделе 29.12.5, «Performance Schema Stage Event Tables».
-
Включите инструмент
stage/innodb/alter tablespace (encryption):mysql>
USE performance_schema;mysql>UPDATE setup_instruments SET ENABLED = 'YES'WHERE NAME LIKE 'stage/innodb/alter tablespace (encryption)'; -
Включите таблицы потребителей событий стадии, которые включают
events_stages_current,events_stages_historyиevents_stages_history_long.mysql>
UPDATE setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%stages%'; -
Выполните операцию шифрования табличного пространства. В этом примере общее табличное пространство с именем
ts1шифруется.mysql>
ALTER TABLESPACE ts1 ENCRYPTION = 'Y'; -
Проверьте прогресс операции шифрования, запросив таблицу Performance Schema
events_stages_current.WORK_ESTIMATEDсообщает о общем количестве страниц в табличном пространстве.WORK_COMPLETEDсообщает о количестве обработанных страниц.mysql>
SELECT EVENT_NAME, WORK_ESTIMATED, WORK_COMPLETED FROM events_stages_current;+--------------------------------------------+----------------+----------------+ | EVENT_NAME | WORK_COMPLETED | WORK_ESTIMATED | +--------------------------------------------+----------------+----------------+ | stage/innodb/alter tablespace (encryption) | 1056 | 1407 | +--------------------------------------------+----------------+----------------+Таблица
events_stages_currentвозвращает пустой набор, если операция шифрования завершена. В этом случае вы можете проверить таблицуevents_stages_history, чтобы просмотреть данные события для завершенной операции. Например:mysql>
SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED FROM events_stages_history;+--------------------------------------------+----------------+----------------+ | EVENT_NAME | WORK_COMPLETED | WORK_ESTIMATED | +--------------------------------------------+----------------+----------------+ | stage/innodb/alter tablespace (encryption) | 1407 | 1407 | +--------------------------------------------+----------------+----------------+
Примечания к использованию шифрования
Планируйте изменения, когда изменяете существующее табличное пространство "файл на таблицу" с параметром
ENCRYPTION. Таблицы, находящиеся в файловых табличных пространствах, перестраиваются с использованием алгоритмаCOPY. АлгоритмINPLACEиспользуется при изменении атрибутаENCRYPTIONобщего табличного пространства или атрибутаmysqlсистемного табличного пространства. АлгоритмINPLACEдопускает одновременную DML на таблицах, которые находятся в общем табличном пространстве. Одновременные DDL заблокированы.При шифровании общего табличного пространства или
mysqlсистемного табличного пространства все таблицы, находящиеся в табличном пространстве, шифруются. Аналогично, таблица, созданная в зашифрованном табличном пространстве, шифруется.Если сервер завершается или останавливается во время нормальной работы, рекомендуется перезапустить сервер с теми же настройками шифрования, которые были настроены ранее.
Первый главный ключ шифрования генерируется при шифровании первого нового или существующего табличного пространства.
Вращение главного ключа заново шифрует ключи табличных пространств, но не изменяет сам ключ табличного пространства. Чтобы изменить ключ табличного пространства, необходимо отключить и снова включить шифрование. Для табличных пространств "файл на таблицу" повторное шифрование табличного пространства — операция
ALGORITHM=COPY, которая перестраивает таблицу. Для общих табличных пространств иmysqlсистемного табличного пространства это операцияALGORITHM=INPLACE, которая не требует перестройки таблиц, находящихся в табличном пространстве.Если таблица создается с параметрами
COMPRESSIONиENCRYPTION, сжатие выполняется перед шифрованием данных табличного пространства.Удаление компонента
component_keyring_fileилиcomponent_keyring_encrypted_fileне удаляет существующий файл данных ключа.Рекомендуется не размещать файл данных ключа в той же директории, что и файлы данных табличного пространства.
Шифрование поддерживается для индексных таблиц
InnoDBFULLTEXT, которые создаются неявно при добавлении индексаFULLTEXT. Справочную информацию см. в InnoDB Full-Text Index Tables.
Ограничения шифрования
Advanced Encryption Standard (AES) — единственный поддерживаемый алгоритм шифрования. Шифрование табличного пространства
InnoDBиспользует режим блочного шифрования Electronic Codebook (ECB) для шифрования ключа табличного пространства и режим блочного шифрования Cipher Block Chaining (CBC) для шифрования данных. Заполнение не используется в режиме блочного шифрования CBC. Вместо этогоInnoDBгарантирует, что текст, подлежащий шифрованию, является кратным размеру блока.Шифрование поддерживается только для табличных пространств, табличных пространств и
mysqlсистемного табличного пространства. Шифрование не поддерживается для других типов табличных пространств, включаяInnoDB.Вы не можете перемещать или копировать таблицу из зашифрованного табличного пространства, табличного пространства или
mysqlсистемного табличного пространства в табличное пространство, не поддерживающее шифрование.Вы не можете перемещать или копировать таблицу из зашифрованного табличного пространства в незашифрованное. Однако перемещение таблицы из незашифрованного табличного пространства в зашифрованное разрешено. Например, вы можете перемещать или копировать таблицу из незашифрованного или табличного пространства в зашифрованное общее табличное пространство.
По умолчанию шифрование табличного пространства применяется только к данным в табличном пространстве. Данные журнала редопераций и журнала отмены операций могут быть зашифрованы путем включения
innodb_redo_log_encryptиinnodb_undo_log_encrypt. См. Шифрование журнала редопераций и Шифрование журнала отмены операций. Справочную информацию о шифровании файла журнала двоичных операций и файла журнала ретрансляции см. в Разделе 19.3.2, «Шифрование файлов журнала двоичных операций и файлов журнала ретрансляции».Не разрешается изменять движок хранения таблицы, находящейся или ранее находившейся в зашифрованном табличном пространстве.
© 2025 Oracle
Licensed under the GPLv2 License.