17.13 Шифрование данных InnoDB в состоянии покоя
InnoDB поддерживает шифрование данных в состоянии покоя для табличных пространств, табличных пространств, mysql системного табличного пространства, журналов redo и журналов undo.
Можно задать значение по умолчанию для шифрования схем и общих табличных пространств; это позволяет администраторам баз данных контролировать, будут ли таблицы, созданные в этих схемах и табличных пространствах, зашифрованы.
InnoDB функции и возможности шифрования данных в состоянии покоя описаны в следующих разделах данного раздела.
Описание шифрования данных в состоянии покоя
InnoDB использует двухступенчатую архитектуру ключей шифрования, состоящую из главного ключа шифрования и ключей табличных пространств. При шифровании табличного пространства ключ табличного пространства шифруется и хранится в заголовке табличного пространства. Когда приложение или авторизованный пользователь хотят получить доступ к зашифрованным данным табличного пространства, InnoDB использует главный ключ шифрования для расшифровки ключа табличного пространства. Расшифрованная версия ключа табличного пространства никогда не меняется, но главный ключ шифрования можно изменить по мере необходимости. Этот процесс называется вращением главного ключа.
Функция шифрования данных в состоянии покоя полагается на компонент или плагин keyring для управления главным ключом шифрования.
Все редакции MySQL предоставляют компонент component_keyring_file, который хранит данные keyring в файле, локальном для хоста сервера.
MySQL Enterprise Edition предлагает дополнительные компоненты и плагины keyring:
component_keyring_encrypted_file: Хранит данные keyring в зашифрованном файле, защищенном паролем, локально на хосте сервера.keyring_okv: Плагин KMIP 1.1 для использования с совместимыми с KMIP продуктами хранения keyring, включая централизованные решения управления ключами, такие как 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 9.2 FAQ: Шифрование данных InnoDB в состоянии покоя».
Предварительные условия для шифрования
-
Компонент или плагин keyring должен быть установлен и настроен при запуске. Раннее загрузка обеспечивает доступность компонента или плагина до инициализации хранилища
InnoDB. Инструкции по установке и настройке keyring см. в Разделе 8.4.4, «MySQL Keyring». В инструкциях показано, как обеспечить активность выбранного компонента или плагина.Одновременно должен быть активирован только один компонент или плагин keyring. Включение нескольких компонентов или плагинов keyring не поддерживается, и результаты могут не соответствовать ожиданиям.
ВажноПосле создания зашифрованных табличных пространств в экземпляре MySQL, компонент или плагин keyring, который был загружен при создании зашифрованного табличного пространства, должен продолжать загружаться при запуске. Отсутствие этого приведет к ошибкам при запуске сервера и во время восстановления
InnoDB. При шифровании производственных данных убедитесь, что вы приняли меры для предотвращения потери главного ключа шифрования. Если главный ключ шифрования утерян, данные, хранящиеся в зашифрованных файлах табличного пространства, невозможно восстановить. Если вы используете компонент
component_keyring_fileилиcomponent_keyring_encrypted_file, создайте резервную копию файла данных keyring сразу после создания первого зашифрованного табличного пространства, до вращения главного ключа и после вращения главного ключа. В файле конфигурации каждого компонента указано расположение файла данных. Если вы используете плагинkeyring_okvилиkeyring_aws, убедитесь, что вы выполнили необходимые настройки. Инструкции см. в Разделе 8.4.4, «MySQL Keyring».
Определение значения шифрования по умолчанию для схем и общих табличных пространств
Переменная системы 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 9.2, 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 контрольной точки. Если файл журнала редо с метаданными шифрования удален, шифрование журнала редо отключается.
После включения шифрования журнала редо, нормальный перезапуск без компонента или плагина keyring или без ключа шифрования невозможен, так как InnoDB должен иметь возможность сканировать страницы журнала редо во время запуска, что невозможно, если страницы журнала редо зашифрованы. Без компонента или плагина keyring или без ключа шифрования возможен только принудительный запуск без журналов редо (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 установлен на источнике, но не на реплике.
Идентификация зашифрованных пространств таблиц и схем
Таблица Information Schema 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" |
+--------------+------------+----------------+
Запросите таблицу Information Schema 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 |
+-------+---------+------------+
Вы можете определить схемы с включенным шифрованием, запросив таблицу Information Schema 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/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.
Ограничения шифрования
Расширенный стандарт шифрования (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.