Hướng dẫn mysql disk encryption - mã hóa đĩa mysql

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
6 Hỗ trợ mã hóa dữ liệu-AT-Rest cho các không gian bảng cho mỗi bảng, không gian bảng chung, không gian bảng hệ thống
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
7, nhật ký làm lại và nhật ký hoàn tác.

Kể từ MySQL 8.0.16, việc thiết lập mặc định mã hóa cho các lược đồ và không gian bảng chung cũng được hỗ trợ, cho phép các DBA kiểm soát xem các bảng được tạo trong các lược đồ và bảng tính được mã hóa hay không.

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
6 Các tính năng và khả năng mã hóa dữ liệu được thiết kế lại được mô tả theo các chủ đề sau trong phần này.

  • Về mã hóa dữ liệu-at-rest

  • Điều kiện tiên quyết mã hóa

  • Xác định mặc định mã hóa cho các lược đồ và không gian bảng chung

  • Mã hóa không gian bảng tập tin-per-per

  • Mã hóa không gian bảng chung

  • Mã hóa tệp DoubleWrite

  • Mã hóa không gian bảng hệ thống MySQL

  • Làm lại mã hóa nhật ký

  • Hoàn tác mã hóa nhật ký

  • Xoay chính

  • Mã hóa và phục hồi

  • Xuất các không gian bảng được mã hóa

  • Mã hóa và sao chép

  • Xác định các không gian và lược đồ được mã hóa

  • Giám sát tiến trình mã hóa

  • Ghi chú sử dụng mã hóa

  • Giới hạn mã hóa

Về mã hóa dữ liệu-at-rest

Điều kiện tiên quyết mã hóamaster key rotation.

Xác định mặc định mã hóa cho các lược đồ và không gian bảng chung

Mã hóa không gian bảng tập tin-per-per

Mã hóa không gian bảng chung

  • Mã hóa tệp DoubleWrite

  • Mã hóa không gian bảng hệ thống MySQL

  • Làm lại mã hóa nhật ký

  • Hoàn tác mã hóa nhật ký

  • Xoay chính

Mã hóa và phục hồi

Xuất các không gian bảng được mã hóa

Mã hóa và sao chépMySQL Enterprise Transparent Data Encryption (TDE).

Xác định các không gian và lược đồ được mã hóa

Giám sát tiến trình mã hóa

Điều kiện tiên quyết mã hóa

  • Xác định mặc định mã hóa cho các lược đồ và không gian bảng chung

    Mã hóa không gian bảng tập tin-per-per

    Mã hóa không gian bảng chung

    Mã hóa tệp DoubleWrite

  • Khi mã hóa dữ liệu sản xuất, hãy đảm bảo rằng bạn thực hiện các bước để ngăn ngừa mất khóa mã hóa chính. Nếu khóa mã hóa chính bị mất, dữ liệu được lưu trữ trong các tệp không gian bảng được mã hóa là không thể giải thích được. Nếu bạn sử dụng thành phần

    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    1 hoặc
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    3 hoặc plugin
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    2 hoặc
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    4, hãy tạo bản sao lưu tệp dữ liệu Keyring ngay sau khi tạo không gian bảng được mã hóa đầu tiên, trước khi xoay khóa chính và sau khi xoay khóa chính. Đối với mỗi thành phần, tệp cấu hình của nó cho biết vị trí tệp dữ liệu. Tùy chọn cấu hình
    mysql> ALTER TABLE t1 ENCRYPTION = 'Y';
    8 xác định vị trí tệp dữ liệu Keyring cho plugin
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    2. Tùy chọn cấu hình
    mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
    0 xác định vị trí tệp dữ liệu khóa cho plugin
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    4. Nếu bạn sử dụng plugin
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    5 hoặc
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    6, hãy đảm bảo rằng bạn đã thực hiện cấu hình cần thiết. Để biết hướng dẫn, xem Phần & NBSP; 6.4.4, Keys Keyring của MySQL.If the master encryption key is lost, data stored in encrypted tablespace files is unrecoverable. If you use the
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    1 or
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    3 component, or the
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    2 or
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    4 plugin, create a backup of the keyring data file immediately after creating the first encrypted tablespace, before master key rotation, and after master key rotation. For each component, its configuration file indicates the data file location. The
    mysql> ALTER TABLE t1 ENCRYPTION = 'Y';
    8 configuration option defines the keyring data file location for the
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    2 plugin. The
    mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
    0 configuration option defines the keyring data file location for the
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    4 plugin. If you use the
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    5 or
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    6 plugin, ensure that you have performed the necessary configuration. For instructions, see Section 6.4.4, “The MySQL Keyring”.

Xác định mặc định mã hóa cho các lược đồ và không gian bảng chung

Kể từ MySQL 8.0.16, biến hệ thống

mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
4 xác định cài đặt mã hóa mặc định cho các lược đồ và không gian bảng chung. Các hoạt động
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
5 và
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
6 Áp dụng cài đặt
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
4 khi mệnh đề
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
8 không được chỉ định rõ ràng.

Các hoạt động

mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
9 và
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'N';
0 không áp dụng cài đặt
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
4. Một mệnh đề
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
8 phải được chỉ định rõ ràng để thay đổi mã hóa của một lược đồ hiện có hoặc không gian bảng chung.

Biến

mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
4 có thể được đặt cho kết nối máy khách riêng lẻ hoặc toàn cầu sử dụng cú pháp
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'N';
4. Ví dụ: câu lệnh sau cho phép mã hóa Lược đồ mặc định và không gian bảng trên toàn cầu:

mysql> SET GLOBAL default_table_encryption=ON;

Cài đặt mã hóa mặc định cho lược đồ cũng có thể được xác định bằng mệnh đề

mysql> ALTER TABLESPACE mysql ENCRYPTION = 'N';
5 khi tạo hoặc thay đổi lược đồ, như trong ví dụ này:

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';

Nếu mệnh đề

mysql> ALTER TABLESPACE mysql ENCRYPTION = 'N';
5 không được chỉ định khi tạo lược đồ, cài đặt
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
4 được áp dụng. Điều khoản
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'N';
5 phải được chỉ định để thay đổi mã hóa mặc định của lược đồ hiện có. Mặt khác, lược đồ giữ lại cài đặt mã hóa hiện tại của nó.

Theo mặc định, một bảng kế thừa cài đặt mã hóa của lược đồ hoặc không gian bảng chung được tạo trong. Ví dụ, một bảng được tạo trong lược đồ hỗ trợ mã hóa được mã hóa theo mặc định. Hành vi này cho phép DBA kiểm soát việc sử dụng mã hóa bảng bằng cách xác định và thực thi lược đồ và mặc định mã hóa không gian bảng chung.

Mặc định mã hóa được thực thi bằng cách bật biến hệ thống

mysql> ALTER TABLESPACE mysql ENCRYPTION = 'N';
9. Khi
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'N';
9 được bật, kiểm tra đặc quyền xảy ra khi tạo hoặc thay đổi lược đồ hoặc không gian bảng chung với cài đặt mã hóa khác với cài đặt
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
4 hoặc khi tạo hoặc thay đổi bảng với cài đặt mã hóa khác với mã hóa lược đồ mặc định. Khi
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'N';
9 bị vô hiệu hóa (mặc định), kiểm tra đặc quyền không xảy ra và các hoạt động được đề cập trước đó được phép tiến hành cảnh báo.

Đặc quyền

mysql> ALTER INSTANCE ROTATE INNODB MASTER KEY;
3 được yêu cầu để ghi đè cài đặt mã hóa mặc định khi
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'N';
9 được bật. DBA có thể cấp đặc quyền này để cho phép người dùng đi chệch khỏi cài đặt
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
4 khi tạo hoặc thay đổi lược đồ hoặc không gian bảng chung hoặc đi chệch khỏi mã hóa lược đồ mặc định khi tạo hoặc thay đổi bảng. Đặc quyền này không cho phép lệch khỏi việc mã hóa một không gian bảng chung khi tạo hoặc thay đổi bảng. Một bảng phải có cài đặt mã hóa giống như không gian bảng chung mà nó nằm trong.

Mã hóa không gian bảng tập tin-per-per

Kể từ MySQL 8.0.16, một không gian bảng mỗi bảng kế thừa mã hóa mặc định của lược đồ trong đó bảng được tạo trừ khi một mệnh đề

mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
8 được chỉ định rõ ràng trong câu lệnh
mysql> ALTER INSTANCE ROTATE INNODB MASTER KEY;
7. Trước MySQL 8.0.16, mệnh đề
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
8 phải được chỉ định để cho phép mã hóa.

mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';

Để thay đổi mã hóa không gian bảng cho mỗi bảng hiện có, một mệnh đề

mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
8 phải được chỉ định.

mysql> ALTER TABLE t1 ENCRYPTION = 'Y';

Kể từ MySQL 8.0.16, nếu biến

mysql> ALTER TABLESPACE mysql ENCRYPTION = 'N';
9 được bật, việc chỉ định mệnh đề
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
8 với một cài đặt khác với mã hóa lược đồ mặc định đòi hỏi đặc quyền
mysql> ALTER INSTANCE ROTATE INNODB MASTER KEY;
3. Xem xác định mặc định mã hóa cho các lược đồ và không gian bảng chung.

Mã hóa tệp DoubleWrite

Hỗ trợ mã hóa cho các tệp DoubleWrite có sẵn kể từ MySQL 8.0,0.23.

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
6 Tự động mã hóa các trang tệp DoubleWrite thuộc về không gian bảng được mã hóa. Không có hành động là bắt buộc. Các trang tệp DoubleWrite được mã hóa bằng khóa mã hóa của không gian bảng liên quan. Cùng một trang được mã hóa được ghi vào tệp dữ liệu không gian bảng cũng được ghi vào tệp DoubleWrite. Các trang tệp DoubleWrite thuộc về một không gian bảng không được mã hóa vẫn chưa được mã hóa.

Trong quá trình phục hồi, các trang tệp DoubleWrite được mã hóa không được mã hóa và kiểm tra tham nhũng.

Mã hóa không gian bảng hệ thống MySQL

Hỗ trợ mã hóa cho không gian bảng hệ thống

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
7 có sẵn kể từ MySQL 8.0.16.

Không gian bảng hệ thống

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
7 chứa cơ sở dữ liệu hệ thống
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
7 và các bảng từ điển dữ liệu MySQL. Nó không được mã hóa theo mặc định. Để cho phép mã hóa không gian bảng hệ thống
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
7, chỉ định tên bảng và tùy chọn
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
8 trong câu lệnh
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
9.

mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';

Để vô hiệu hóa mã hóa cho không gian bảng hệ thống

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
7, đặt
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" |
+--------------+------------+----------------+
1 bằng câu lệnh
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
9.

mysql> ALTER TABLESPACE mysql ENCRYPTION = 'N';

Kích hoạt hoặc vô hiệu hóa mã hóa cho không gian bảng hệ thống

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
7 yêu cầu đặc quyền
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
5 trên tất cả các bảng trong trường hợp (
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" |
+--------------+------------+----------------+
5.

Làm lại mã hóa nhật ký

Redo Log Dữ liệu mã hóa được bật bằng tùy chọn cấu hình

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" |
+--------------+------------+----------------+
6. Redo log mã hóa được vô hiệu hóa theo mặc định.

Cũng như dữ liệu không gian bảng, việc mã hóa dữ liệu đăng nhập lại xảy ra khi dữ liệu nhật ký làm lại được ghi vào đĩa và giải mã xảy ra khi làm lại dữ liệu nhật ký được đọc từ đĩa. Sau khi làm lại dữ liệu nhật ký được đọc thành bộ nhớ, nó ở dạng không được mã hóa. Dữ liệu làm lại được mã hóa và giải mã bằng khóa mã hóa không gian bảng.

Khi

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" |
+--------------+------------+----------------+
6 được bật, các trang nhật ký làm lại không được mã hóa có mặt trên đĩa vẫn chưa được mã hóa và các trang nhật ký làm lại mới được viết vào đĩa ở dạng được mã hóa. Tương tự như vậy, khi
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" |
+--------------+------------+----------------+
6 bị ​​vô hiệu hóa, các trang nhật ký đã được mã hóa có mặt trên đĩa vẫn được mã hóa và các trang nhật ký làm lại mới được viết vào đĩa ở dạng không được mã hóa.

Cảnh báo

Một hồi quy được giới thiệu trong MySQL 8.0.30 ngăn chặn việc vô hiệu hóa mã hóa nhật ký làm lại sau khi nó được bật. (Lỗi #108052, lỗi #34456802).

Từ MySQL 8.0.30, siêu dữ liệu mã hóa lại, bao gồm khóa mã hóa không gian bảng, được lưu trữ trong tiêu đề của tệp nhật ký làm lại với LSN điểm kiểm tra gần đây nhất. Trước MySQL 8.0.30, siêu dữ liệu mã hóa lại, bao gồm khóa mã hóa không gian bảng, được lưu trữ trong tiêu đề của tệp nhật ký làm lại đầu tiên (

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" |
+--------------+------------+----------------+
9). Nếu tệp nhật ký làm lại với siêu dữ liệu mã hóa bị xóa, mã hóa lại đã bị tắt.

Sau khi bật lại mã hóa log được bật, khởi động lại thông thường mà không có thành phần hoặc plugin khóa hoặc không có khóa mã hóa là không thể, vì

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
6 phải có thể quét các trang làm lại trong khi khởi động, điều này là không thể nếu các trang nhật ký làm lại được mã hóa. Không có thành phần hoặc plugin hoặc khóa mã hóa, chỉ có thể khởi động bắt buộc không có nhật ký làm lại (
mysql> SELECT SPACE, NAME, SPACE_TYPE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE NAME='test/t1';
+-------+---------+------------+
| SPACE | NAME    | SPACE_TYPE |
+-------+---------+------------+
|     3 | test/t1 | Single     |
+-------+---------+------------+
1). Xem Phần & NBSP; 15.21.3, Buộc phục hồi Innodb.

Hoàn tác mã hóa nhật ký

Hoàn tác mã hóa dữ liệu nhật ký được bật bằng tùy chọn cấu hình

mysql> SELECT SPACE, NAME, SPACE_TYPE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE NAME='test/t1';
+-------+---------+------------+
| SPACE | NAME    | SPACE_TYPE |
+-------+---------+------------+
|     3 | test/t1 | Single     |
+-------+---------+------------+
2. Hoàn tác mã hóa nhật ký áp dụng cho các nhật ký hoàn tác cư trú trong các không gian bảng hoàn tác. Xem phần & nbsp; 15.6.3.4, không gian bảng hoàn tác. Hoàn tác mã hóa dữ liệu nhật ký bị tắt theo mặc định.

Cũng như dữ liệu không gian bảng, việc mã hóa dữ liệu nhật ký hoàn tác xảy ra khi hoàn tác dữ liệu nhật ký được ghi vào đĩa và giải mã xảy ra khi hoàn tác dữ liệu nhật ký được đọc từ đĩa. Khi hoàn tác dữ liệu nhật ký được đọc vào bộ nhớ, nó ở dạng không được mã hóa. Dữ liệu nhật ký hoàn tác được mã hóa và giải mã bằng khóa mã hóa không gian bảng.

Khi

mysql> SELECT SPACE, NAME, SPACE_TYPE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE NAME='test/t1';
+-------+---------+------------+
| SPACE | NAME    | SPACE_TYPE |
+-------+---------+------------+
|     3 | test/t1 | Single     |
+-------+---------+------------+
2 được bật, các trang nhật ký chưa được mã hóa có mặt trên đĩa vẫn chưa được mã hóa và các trang nhật ký hoàn tác mới được viết vào đĩa ở dạng được mã hóa. Tương tự như vậy, khi
mysql> SELECT SPACE, NAME, SPACE_TYPE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE NAME='test/t1';
+-------+---------+------------+
| SPACE | NAME    | SPACE_TYPE |
+-------+---------+------------+
|     3 | test/t1 | Single     |
+-------+---------+------------+
2 bị vô hiệu hóa, các trang nhật ký chưa được mã hóa có mặt trên đĩa vẫn được mã hóa và các trang nhật ký hoàn tác mới được viết vào đĩa ở dạng không được mã hóa.

Siêu dữ liệu mã hóa nhật ký hoàn tác, bao gồm khóa mã hóa không gian bảng, được lưu trữ trong tiêu đề của tệp nhật ký hoàn tác.

Ghi chú

Khi mã hóa nhật ký hoàn tác bị vô hiệu hóa, máy chủ tiếp tục yêu cầu thành phần hoặc plugin khóa được sử dụng để mã hóa dữ liệu nhật ký hoàn tác cho đến khi các không gian bảng hoàn tác có chứa dữ liệu nhật ký được mã hóa bị cắt. .

Xoay chính

Khóa mã hóa chính phải được xoay định kỳ và bất cứ khi nào bạn nghi ngờ rằng khóa đã bị xâm phạm.

Xoay khóa chính là một hoạt động cấp độ nguyên tử, mức độ. Mỗi lần quay khóa mã hóa chính, tất cả các khóa không gian bảng trong phiên bản MySQL được sao chép lại và lưu lại cho các tiêu đề không gian bảng tương ứng của chúng. Là một hoạt động nguyên tử, việc tái hấp thu phải thành công cho tất cả các phím không gian bảng sau khi một hoạt động xoay được bắt đầu. Nếu vòng quay khóa chính bị gián đoạn do lỗi máy chủ,

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
6 sẽ thực hiện thao tác chuyển tiếp khi khởi động lại máy chủ. Để biết thêm thông tin, xem mã hóa và phục hồi.

Xoay phím mã hóa chính chỉ thay đổi khóa mã hóa chính và tái mã hóa các khóa không gian bảng. Nó không giải mã hoặc mã hóa lại dữ liệu không gian bảng liên quan.

Xoay khóa mã hóa chính yêu cầu đặc quyền

mysql> SELECT SPACE, NAME, SPACE_TYPE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE NAME='test/t1';
+-------+---------+------------+
| SPACE | NAME    | SPACE_TYPE |
+-------+---------+------------+
|     3 | test/t1 | Single     |
+-------+---------+------------+
6 (hoặc đặc quyền không dùng nữa ____997).

Để xoay khóa mã hóa chính, chạy:

mysql> ALTER INSTANCE ROTATE INNODB MASTER KEY;

mysql> SELECT SPACE, NAME, SPACE_TYPE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE NAME='test/t1';
+-------+---------+------------+
| SPACE | NAME    | SPACE_TYPE |
+-------+---------+------------+
|     3 | test/t1 | Single     |
+-------+---------+------------+
8 hỗ trợ DML đồng thời. Tuy nhiên, nó không thể được chạy đồng thời với các hoạt động mã hóa không gian bảng và khóa được thực hiện để ngăn chặn các xung đột có thể phát sinh từ việc thực hiện đồng thời. Nếu hoạt động
mysql> SELECT SPACE, NAME, SPACE_TYPE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE NAME='test/t1';
+-------+---------+------------+
| SPACE | NAME    | SPACE_TYPE |
+-------+---------+------------+
|     3 | test/t1 | Single     |
+-------+---------+------------+
9 đang chạy, nó phải kết thúc trước khi hoạt động mã hóa không gian bảng có thể tiến hành và ngược lại.

Mã hóa và phục hồi

Nếu xảy ra lỗi máy chủ trong quá trình hoạt động mã hóa, thao tác sẽ được tiến hành khi máy chủ được khởi động lại. Đối với các không gian bảng chung, hoạt động mã hóa được nối lại trong một luồng nền từ trang được xử lý cuối cùng.

Nếu xảy ra lỗi máy chủ trong quá trình xoay khóa chính,

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
6 tiếp tục hoạt động khi khởi động lại máy chủ.

Thành phần hoặc plugin Keyring phải được tải trước khi khởi tạo công cụ lưu trữ để thông tin cần thiết để giải mã các trang dữ liệu không gian bảng có thể được lấy từ các tiêu đề không gian bảng trước khi

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
6 Khởi tạo và phục hồi hoạt động truy cập dữ liệu không gian bảng. (Xem các điều kiện tiên quyết mã hóa.)

Khi bắt đầu khởi tạo và phục hồi

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
6, hoạt động xoay khóa chính sẽ tiếp tục. Do lỗi máy chủ, một số khóa bảng không gian có thể được mã hóa bằng khóa mã hóa chính mới.
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
6 đọc dữ liệu mã hóa từ mỗi tiêu đề không gian bảng và nếu dữ liệu chỉ ra rằng khóa bảng không gian được mã hóa bằng cách sử dụng khóa mã hóa chính cũ,
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
6 lấy khóa cũ từ khóa và sử dụng để giải mã khóa không gian bảng.
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
6 sau đó mã hóa lại khóa không gian bảng bằng khóa mã hóa chính mới và lưu khóa không gian bảng được mã hóa lại trở lại tiêu đề không gian bảng.

Xuất các không gian bảng được mã hóa

Xuất bảng không gian chỉ được hỗ trợ cho các không gian bảng cho mỗi bảng.

Khi một không gian bảng được mã hóa được xuất,

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
6 sẽ tạo một khóa truyền được sử dụng để mã hóa khóa không gian bảng. Khóa không gian bảng được mã hóa và khóa chuyển được lưu trữ trong tệp ____ 107.cfp. Tệp này cùng với tệp không gian bảng được mã hóa được yêu cầu để thực hiện thao tác nhập. Khi nhập,
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
6 sử dụng phím chuyển để giải mã khóa bảng không gian trong tệp ____ 107.cfp. Để biết thông tin liên quan, xem Phần & NBSP; 15.6.1.3, Nhập khẩu bảng InnoDB.transfer key that is used to encrypt the tablespace key. The encrypted tablespace key and transfer key are stored in a
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
07.cfp file. This file together with the encrypted tablespace file is required to perform an import operation. On import,
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
6 uses the transfer key to decrypt the tablespace key in the
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
07.cfp file. For related information, see Section 15.6.1.3, “Importing InnoDB Tables”.

Mã hóa và sao chép

  • Câu lệnh

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    10 chỉ được hỗ trợ trong môi trường sao chép trong đó nguồn và bản sao chạy phiên bản MySQL hỗ trợ mã hóa không gian bảng.

  • Các câu lệnh

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    11 thành công được ghi vào nhật ký nhị phân để sao chép trên các bản sao.

  • Nếu câu lệnh

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    10 không thành công, nó không được ghi vào nhật ký nhị phân và không được sao chép trên các bản sao.

  • Việc sao chép hoạt động

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    13 không thành công nếu thành phần hoặc plugin Keyring được cài đặt trên nguồn nhưng không phải trên bản sao.

  • Nếu plugin

    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    2 hoặc
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    4 được cài đặt trên cả nguồn và bản sao nhưng bản sao không có tệp dữ liệu khóa, câu lệnh
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    16 được sao chép sẽ tạo tệp dữ liệu khóa trên bản sao, giả sử dữ liệu tệp Keyring không được lưu trong bộ nhớ.
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    16 sử dụng dữ liệu tệp Keyring được lưu trong bộ nhớ, nếu có.

Xác định các không gian và lược đồ được mã hóa

Bảng

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
18, được giới thiệu trong MySQL 8.0.13, bao gồm một cột
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
8 có thể được sử dụng để xác định các không gian bảng được mã hóa.

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

Khi tùy chọn

mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
8 được chỉ định trong câu lệnh
mysql> ALTER INSTANCE ROTATE INNODB MASTER KEY;
7 hoặc
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
22, nó được ghi lại trong cột
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
23 của
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
24. Cột này có thể được truy vấn để xác định các bảng cư trú trong các không gian bảng được mã hóa cho mỗi bảng.

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" |
+--------------+------------+----------------+

Truy vấn

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
18 Để truy xuất thông tin về không gian bảng liên quan đến một lược đồ và bảng cụ thể.

mysql> SELECT SPACE, NAME, SPACE_TYPE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE NAME='test/t1';
+-------+---------+------------+
| SPACE | NAME    | SPACE_TYPE |
+-------+---------+------------+
|     3 | test/t1 | Single     |
+-------+---------+------------+

Bạn có thể xác định các lược đồ hỗ trợ mã hóa bằng cách truy vấn bảng

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
26.

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
0

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
27 cũng hiển thị mệnh đề
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
28.

Giám sát tiến trình mã hóa

Bạn có thể giám sát không gian bảng chung và

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
7 Tiến trình mã hóa không gian bảng hệ thống bằng Lược đồ hiệu suất.

Công cụ sự kiện giai đoạn

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
30 báo cáo thông tin
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
31 và
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
32 cho các hoạt động mã hóa không gian bảng chung.

Ví dụ sau đây cho thấy cách kích hoạt công cụ sự kiện giai đoạn

mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
30 và các bảng tiêu dùng liên quan để giám sát không gian bảng chung hoặc tiến trình mã hóa không gian bảng hệ thống
mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
7. Để biết thông tin về các công cụ sự kiện giai đoạn Lược đồ hiệu suất và người tiêu dùng liên quan, xem Phần & NBSP; 27.12.5, Bảng sự kiện SPORM SCHEMA SCHEMA.

  1. Bật công cụ

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    35:

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    1
  2. Cho phép các bảng tiêu dùng sự kiện giai đoạn, bao gồm

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    36,
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    37 và
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    38.

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    2
  3. Chạy một hoạt động mã hóa không gian bảng. Trong ví dụ này, một không gian bảng chung có tên

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    39 được mã hóa.

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    3
  4. Kiểm tra tiến trình của hoạt động mã hóa bằng cách truy vấn bảng Lược đồ hiệu suất

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    36.
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    31 báo cáo tổng số trang trong không gian bảng.
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    32 báo cáo số lượng trang được xử lý.

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    4

    Bảng

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    36 trả về một bộ trống nếu hoạt động mã hóa đã hoàn thành. Trong trường hợp này, bạn có thể kiểm tra bảng
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    37 để xem dữ liệu sự kiện cho hoạt động đã hoàn thành. Ví dụ:

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    5

Ghi chú sử dụng mã hóa

  • Lập kế hoạch phù hợp khi thay đổi một không gian bảng mỗi bảng hiện có với tùy chọn

    mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
    8. Các bảng cư trú trong các không gian bảng tệp cho mỗi bảng được xây dựng lại bằng thuật toán
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    46. Thuật toán
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    47 được sử dụng khi thay đổi thuộc tính
    mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
    8 của một không gian bảng chung hoặc không gian bảng hệ thống
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    7. Thuật toán
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    47 cho phép DML đồng thời trên các bảng nằm trong không gian bảng chung. DDL đồng thời bị chặn.

  • Khi một không gian bảng chung hoặc không gian bảng hệ thống

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    7 được mã hóa, tất cả các bảng nằm trong không gian bảng được mã hóa. Tương tự như vậy, một bảng được tạo trong một không gian bảng được mã hóa được mã hóa.

  • Nếu máy chủ thoát hoặc bị dừng trong quá trình hoạt động bình thường, nên khởi động lại máy chủ bằng cách sử dụng cùng một cài đặt mã hóa được cấu hình trước đó.

  • Khóa mã hóa chính đầu tiên được tạo khi không gian bảng mới hoặc hiện tại đầu tiên được mã hóa.

  • Phím xoay vòng kiểm tra lại các khóa không gian bảng nhưng không thay đổi khóa không gian bảng. Để thay đổi khóa không gian bảng, bạn phải vô hiệu hóa và kích hoạt lại mã hóa. Đối với các không gian bảng tệp cho mỗi bảng, việc viết lại không gian bảng là một hoạt động

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    52 xây dựng lại bảng. Đối với các không gian bảng chung và không gian bảng hệ thống
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    7, đó là một hoạt động
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    54, không yêu cầu xây dựng lại các bảng nằm trong không gian bảng.

  • Nếu một bảng được tạo bằng cả hai tùy chọn

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    55 và
    mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
    8, nén được thực hiện trước khi dữ liệu không gian bảng được mã hóa.

  • Nếu một tệp dữ liệu khóa (tệp được đặt tên bởi

    mysql> ALTER TABLE t1 ENCRYPTION = 'Y';
    8 hoặc
    mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
    0) trống hoặc thiếu, việc thực hiện đầu tiên của
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    10 sẽ tạo khóa mã hóa chính.

  • Gỡ cài đặt thành phần

    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    1 hoặc
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    3 không xóa tệp dữ liệu Keyring hiện có. Gỡ cài đặt plugin
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    2 hoặc
    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    4 không xóa tệp dữ liệu Keyring hiện có.

  • Bạn nên đặt một tệp dữ liệu khóa trong cùng thư mục với các tệp dữ liệu không gian bảng.

  • Việc sửa đổi cài đặt

    mysql> ALTER TABLE t1 ENCRYPTION = 'Y';
    8 hoặc
    mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
    0 khi chạy hoặc khi khởi động lại máy chủ có thể khiến các không gian bảng được mã hóa trước đó không thể truy cập được, dẫn đến dữ liệu bị mất.

  • Mã hóa được hỗ trợ cho các bảng chỉ mục

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    6
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    67 được tạo ngầm khi thêm chỉ mục
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    67. Để biết thông tin liên quan, hãy xem Bảng chỉ mục toàn văn bản của Innodb.

Giới hạn mã hóa

  • Tiêu chuẩn mã hóa nâng cao (AES) là thuật toán mã hóa được hỗ trợ duy nhất.

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    6 Mã hóa không gian bảng sử dụng chế độ mã hóa khối CodeBook (ECB) cho Chế độ mã hóa khối khối mã hóa và Chuỗi khối mã hóa (CBC) để mã hóa dữ liệu. Đệm không được sử dụng với chế độ mã hóa khối CBC. Thay vào đó,
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    6 đảm bảo rằng văn bản được mã hóa là bội số của kích thước khối.

  • Mã hóa chỉ được hỗ trợ cho các không gian bảng tệp cho mỗi bảng, không gian bảng chung và không gian bảng hệ thống

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    7. Hỗ trợ mã hóa cho các không gian bảng chung đã được giới thiệu trong MySQL 8.0.13. Hỗ trợ mã hóa cho không gian bảng hệ thống
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    7 có sẵn kể từ MySQL 8.0.16. Mã hóa không được hỗ trợ cho các loại không gian bảng khác bao gồm không gian bảng hệ thống
    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    6.

  • Bạn không thể di chuyển hoặc sao chép một bảng từ một không gian bảng được mã hóa cho mỗi bảng, không gian bảng chung hoặc không gian bảng hệ thống

    mysql> CREATE SCHEMA test DEFAULT ENCRYPTION = 'Y';
    7 sang loại không gian bảng không hỗ trợ mã hóa.

  • Bạn không thể di chuyển hoặc sao chép một bảng từ một không gian bảng được mã hóa sang một không gian bảng không được mã hóa. Tuy nhiên, việc di chuyển một bảng từ một không gian bảng không được mã hóa sang một bảng được mã hóa được cho phép. Ví dụ: bạn có thể di chuyển hoặc sao chép một bảng từ một không gian bảng tổng hợp không được mã hóa hoặc không gian bảng chung sang một không gian bảng chung được mã hóa.

  • Theo mặc định, mã hóa không gian bảng chỉ áp dụng cho dữ liệu trong không gian bảng. Làm lại nhật ký và hoàn tác dữ liệu nhật ký có thể được mã hóa bằng cách bật

    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" |
    +--------------+------------+----------------+
    6 và
    mysql> SELECT SPACE, NAME, SPACE_TYPE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE NAME='test/t1';
    +-------+---------+------------+
    | SPACE | NAME    | SPACE_TYPE |
    +-------+---------+------------+
    |     3 | test/t1 | Single     |
    +-------+---------+------------+
    2. Xem Redo Recryption và hoàn tác mã hóa nhật ký. Để biết thông tin về tệp nhật ký nhị phân và mã hóa tệp nhật ký chuyển tiếp, xem phần & nbsp; 17.3.2, mã hóa tệp nhật ký nhị phân và các tệp nhật ký chuyển tiếp.

  • Nó không được phép thay đổi công cụ lưu trữ của một bảng nằm trong hoặc trước đó cư trú trong một không gian bảng được mã hóa.