適用対象
OceanBaseデータベースCommunity Editionは、現在データの透過的暗号化をサポートしていません。
この記事では、新規作成したテーブルに対して透過的データ暗号化を実現するために、暗号化されたテーブルスペースを作成する方法について説明します。
OceanBaseデータベースにおけるデータの暗号化単位はテーブルスペース(Tablespace)です。OceanBaseデータベースは複数のデータファイルを扱うシステムではなく、テーブルスペースは互換性を考慮して設計された概念であり、簡単に言えばテーブルスペースとは一連のテーブルの集合と理解できます。
この記事では、暗号化されたテーブルスペースsectest_ts1上にテーブルt1を作成する例を挙げ、透過的暗号化の操作手順を説明します。
制限事項
- システムテナントでは暗号化を有効にできません。
- テナントが透過的暗号化を設定した場合、テナントを再構築しない限り他の暗号化モードに切り替えることはできません。
internal方式のストレージ暗号化の設定
internal方式のストレージマスターキーは、その暗号情報が主に内部テーブルで管理されます。ログ再生時の循環依存を避けるため、この暗号化方式ではclogは暗号化されません。
管理者ユーザーがクラスタのMySQLテナントにログインします。
以下のステートメントを実行して、internal方式の透過的暗号化を有効にします。
パラメータ
tde_methodは、透過的テーブル領域暗号化の方式を設定するために使用されます。デフォルトはnoneであり、これは透過的テーブル領域暗号化が無効であることを示します。パラメータ
tde_methodの詳細については、tde_methodを参照してください。注意
パラメータ
tde_methodは一度設定すると、変更できなくなります。obclient> ALTER SYSTEM SET tde_method='internal';以下のステートメントを実行して、このテナント上のすべてのOBServerノード上のパラメータ
tde_methodの値がinternalであることを確認します。obclient> SHOW PARAMETERS LIKE 'tde_method';確認後、以下のステートメントを実行して、マスターキーを生成します。
説明
このステートメントは、テナント上のすべてのOBServerノード上のパラメータ
tde_methodの値がinternalの場合にのみ正常に実行されます。obclient> ALTER INSTANCE ROTATE INNODB MASTER KEY;テーブル領域を作成し、暗号化アルゴリズムを指定します。
暗号化アルゴリズムとして
aes-256、aes-128、aes-192、sm4-cbc、aes-128-gcm、aes-192-gcm、aes-256-gcm、sm4-gcmを指定できます。'y'を使用する場合、デフォルトでAES-256が使用されることを意味します。例:
obclient> CREATE TABLESPACE sectest_ts1 encryption = 'y';
暗号化されたテーブルスペースに新しいテーブルを作成する
一般ユーザーとしてデータベースのMySQLテナントにログインします。
対応するデータベースにアクセスした後、テーブルを作成し、テーブルスペースを指定します。
obclient> CREATE TABLE t1 (id1 int, id2 int) TABLESPACE sectest_ts1;作成後、このテーブルに対応するすべてのトランザクションは暗号化される必要があります。
テーブルスペース内のテーブルが暗号化されているかどうかを確認します。
以下のステートメントを実行して、
encryptionalgが以前設定したaes-256であるかどうかを確認します。obclient> SELECT table_name,encryptionalg,encrypted FROM oceanbase.V$OB_ENCRYPTED_TABLES; +------------+---------------+-----------+ | table_name | encryptionalg | encrypted | +------------+---------------+-----------+ | t1 | aes-256 | YES | +------------+---------------+-----------+ 1 row in setencryptionalgがaes-256であり、かつencryptedがYESの場合、テーブルの暗号化構成に成功したことを示します。詳細なビュー
V$OB_ENCRYPTED_TABLESのフィールドと説明については、V$OB_ENCRYPTED_TABLESを参照してください。