この記事では、新規作成したテーブルに対してデータの透過的暗号化を実現するために、暗号化されたテーブルスペースを作成する方法について説明します。
OceanBaseデータベースの暗号化は、形式上できるだけOracleデータベースと互換性を持っています。データの暗号化単位はテーブルスペース(Tablespace)です。OceanBaseデータベースは複数のデータファイルを扱うデータベースシステムではなく、テーブルスペースは互換性を確保するために設計された概念であり、簡単に言えばテーブルスペースとは一連のテーブルの集合ということができます。
この記事では、暗号化されたテーブルスペースsectest_ts1上にテーブルt1を作成する例を挙げて、透過的暗号化の操作手順を説明します。
internal方式の透過的データ暗号化を設定する
internal方式では、ストレージマスター鍵が内部テーブルで管理されます。ログ再生時の循環依存を避けるため、このモードではclogは暗号化されません。
管理者ユーザーがクラスタのOracleテナントにログインします。
以下のステートメントを実行して、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';Keystoreを作成します。
SQLステートメントは次のとおりです:
obclient> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE keystore_name IDENTIFIED BY password;例:
obclient> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE sectest1 IDENTIFIED BY **3**;Keystoreを有効にします。
SQLステートメントは次のとおりです:
obclient> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY password;ここで、
passwordは前のステップで設定したKeystoreのキーです。例:
obclient> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY **3**;以下のステートメントを実行して、マスター鍵を生成します。
obclient> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY password;ステートメント内の
passwordは、以前に設定したKeystoreのキーです。例:
obclient> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY **3**;テーブル領域を作成し、暗号化アルゴリズムを指定します。
暗号化アルゴリズムとして
aes-256、aes-128、aes-192、sm4-cbc、aes-128-gcm、aes-192-gcm、aes-256-gcm、sm4-gcmを指定できます。例:
obclient> CREATE TABLESPACE sectest_ts1 ENCRYPTION USING 'aes-256';
暗号化されたテーブルスペースに新しいテーブルを作成する
一般ユーザーでOracleテナントにログインします。
テーブルを作成し、テーブルスペースを指定します。
obclient> CREATE TABLE t1 (id1 int, id2 int) TABLESPACE sectest_ts1;作成後、このテーブルに対応するすべてのトランザクションは暗号化される必要があります。
テーブルスペース内のテーブルが暗号化されているかどうか確認します。
以下のステートメントを実行して、
encryptionalgが以前設定したaes-256であるかどうかを確認します。obclient> SELECT table_name,encryptionalg,encrypted FROM 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を参照してください。