Spec-Zone.ru › MariaDB

Обзор шифрования InnoDB

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

Для шифрования данных с помощью движка хранения Aria см. Шифрование данных для Aria.

Основные настройки

Для использования шифрования данных в состоянии покоя необходимо сначала настроить плагин управления ключами шифрования, такой как плагин file_key_management или aws_key_management. MariaDB использует этот плагин для хранения, извлечения и управления различными ключами, используемыми при шифровании данных при записи в файловую систему и дешифровании при чтении из неё.

После настройки плагина необходимо установить несколько дополнительных системных переменных для включения шифрования таблиц InnoDB и XtraDB, включая innodb_encrypt_tables, innodb_encrypt_logs, innodb_encryption_threads, и innodb_encryption_rotate_key_age.

[mariadb]
...

# File Key Management
plugin_load_add = file_key_management
file_key_management_filename = /etc/mysql/encryption/keyfile.enc
file_key_management_filekey = FILE:/etc/mysql/encryption/keyfile.key
file_key_management_encryption_algorithm = AES_CTR

# InnoDB/XtraDB Encryption
innodb_encrypt_tables = ON
innodb_encrypt_temporary_tables = ON
innodb_encrypt_log = ON
innodb_encryption_threads = 4
innodb_encryption_rotate_key_age = 1

Дополнительную информацию о системных переменных для шифрования и других функциях см. на странице системных переменных InnoDB system variables.

Поиск зашифрованных таблиц

При использовании шифрования данных в состоянии покоя с движками хранения InnoDB или XtraDB не обязательно шифровать каждую таблицу в вашей базе данных. Вы можете проверить, какие таблицы зашифрованы, а какие нет, запросив таблицу INNODB_TABLESPACES_ENCRYPTION в Information Schema. Эта таблица содержит информацию о том, какие табличные пространства зашифрованы, с каким ключом шифрования зашифровано каждое табличное пространство и работают ли в данный момент фоновые потоки шифрования над табличным пространством. Поскольку системное табличное пространство также может содержать таблицы, может быть полезно объединить таблицу INNODB_TABLESPACES_ENCRYPTION с таблицей INNODB_SYS_TABLES для определения статуса шифрования каждой отдельной таблицы, а не каждого табличного пространства. Например:

SELECT st.SPACE, st.NAME, te.ENCRYPTION_SCHEME, te.ROTATING_OR_FLUSHING
FROM information_schema.INNODB_TABLESPACES_ENCRYPTION te
JOIN information_schema.INNODB_SYS_TABLES st
   ON te.SPACE = st.SPACE \G
*************************** 1. row ***************************
               SPACE: 0
                NAME: SYS_DATAFILES
   ENCRYPTION_SCHEME: 1
ROTATING_OR_FLUSHING: 0
*************************** 2. row ***************************
               SPACE: 0
                NAME: SYS_FOREIGN
   ENCRYPTION_SCHEME: 1
ROTATING_OR_FLUSHING: 0
*************************** 3. row ***************************
               SPACE: 0
                NAME: SYS_FOREIGN_COLS
   ENCRYPTION_SCHEME: 1
ROTATING_OR_FLUSHING: 0
*************************** 4. row ***************************
               SPACE: 0
                NAME: SYS_TABLESPACES
   ENCRYPTION_SCHEME: 1
ROTATING_OR_FLUSHING: 0
*************************** 5. row ***************************
               SPACE: 0
                NAME: SYS_VIRTUAL
   ENCRYPTION_SCHEME: 1
ROTATING_OR_FLUSHING: 0
*************************** 6. row ***************************
               SPACE: 0
                NAME: db1/default_encrypted_tab1
   ENCRYPTION_SCHEME: 1
ROTATING_OR_FLUSHING: 0
*************************** 7. row ***************************
               SPACE: 416
                NAME: db1/default_encrypted_tab2
   ENCRYPTION_SCHEME: 1
ROTATING_OR_FLUSHING: 0
*************************** 8. row ***************************
               SPACE: 402
                NAME: db1/tab
   ENCRYPTION_SCHEME: 1
ROTATING_OR_FLUSHING: 0
*************************** 9. row ***************************
               SPACE: 185
                NAME: db1/tab1
   ENCRYPTION_SCHEME: 1
ROTATING_OR_FLUSHING: 0
*************************** 10. row ***************************
               SPACE: 184
                NAME: db1/tab2
   ENCRYPTION_SCHEME: 1
ROTATING_OR_FLUSHING: 0
*************************** 11. row ***************************
               SPACE: 414
                NAME: db1/testgb2
   ENCRYPTION_SCHEME: 1
ROTATING_OR_FLUSHING: 0
*************************** 12. row ***************************
               SPACE: 4
                NAME: mysql/gtid_slave_pos
   ENCRYPTION_SCHEME: 1
ROTATING_OR_FLUSHING: 0
*************************** 13. row ***************************
               SPACE: 2
                NAME: mysql/innodb_index_stats
   ENCRYPTION_SCHEME: 1
ROTATING_OR_FLUSHING: 0
*************************** 14. row ***************************
               SPACE: 1
                NAME: mysql/innodb_table_stats
   ENCRYPTION_SCHEME: 1
ROTATING_OR_FLUSHING: 0
*************************** 15. row ***************************
               SPACE: 3
                NAME: mysql/transaction_registry
   ENCRYPTION_SCHEME: 1
ROTATING_OR_FLUSHING: 0
15 rows in set (0.000 sec)

Журналы обратной записи

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

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

См. также

  • Шифрование данных в состоянии покоя
  • Зачем шифровать данные MariaDB?
  • Управление ключами шифрования
  • Таблица Information Schema INNODB_TABLESPACES_ENCRYPTION
Содержимое, воспроизведенное на этом сайте, является собственностью его соответствующих владельцев, и это содержание не проверяется предварительно компанией 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/innodb-encryption-overview/

Spec-Zone.ru

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