このセクションでは、新規作成したテーブルに対してデータの透過的暗号化を実現するために、暗号化テーブル領域を作成する方法について説明します。
OceanBaseデータベースの暗号化は、形式上可能な限りOracleデータベースと互換性を持たせています。データの暗号化単位はテーブル領域(Tablespace)です。OceanBaseデータベースはマルチデータファイルのデータベースシステムではないため、テーブル領域は互換性のために設計された概念であり、簡単に言えばテーブル領域は一連のテーブルの集合であると理解できます。
このセクションでは、暗号化テーブル領域 sectest_ts1 にテーブル t1 を作成する例を用いて、透過的暗号化の操作手順を説明します。
暗号化の設定
このセクションでは、internal方式とobcloud方式の設定例を示します。
internal方式の透過的データ暗号化を設定する
internal方式のテナントマスターキーについては、その暗号情報は主に内部テーブルで管理されます。ログ再生時の循環依存を避けるため、このモードではclogは暗号化されません。
- 管理者ユーザーがクラスタのOracleテナントにログインします。
説明
手順2~6は、tde_methodを設定し、テナントマスターキー(KeystoreとSET KEYを含む)を作成するために使用されます。本テナントで同じ構成が既に完了している場合は、これらの手順をスキップし、直接暗号化テーブル領域を作成できます。操作例については、テナントマスターキーの生成(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';
obcloud方式の透過的データ暗号化を設定する
obcloud 方式は、統一されたKMSプロキシサービスを介してマスターキーを管理するシナリオに適用されます。
- 管理者ユーザーがクラスタのOracleテナントにログインします。
説明
手順2~5では、obcloud 方式の暗号化方法、KMS設定、およびテナントのマスターキーの準備が完了します。本テナントで既にテナントマスターキーの生成(Oracleモード)の設定を完了している場合は、これらの手順をスキップできます。読みやすさと操作の便宜上、以下に全プロセスを再度詳細に記載します。
以下のステートメントを実行し、
obcloud方式の透過的データ暗号化を有効にします。パラメータ
tde_methodは透過的テーブル領域暗号化の方式を設定するために使用され、デフォルトはnoneで、透過的テーブル領域暗号化が無効であることを意味します。パラメータ
tde_methodの詳細については、tde_methodを参照してください。注意
パラメータ
tde_methodは一度設定すると、変更できません。obclient> ALTER SYSTEM SET tde_method = 'obcloud';以下のステートメントを実行し、当該テナント上のすべてのOBServerノードにおけるパラメータ
tde_methodの値がobcloudであることを確認します。obclient> SHOW PARAMETERS LIKE 'tde_method';以下のステートメントを実行し、KMSプロキシサービスのパラメータを設定します。
obclient> ALTER SYSTEM SET external_kms_info = '{ "kms_host": "https://kms.example.oceanbase.com", "access_key_id": "LTAI****************", "access_key_secret": "your_access_key_secret", "cmk_id": "your_customer_master_key_id" }';設定完了後、テナントはKMSからマスターキーを取得します。
obcloud方式では、マスターキーはOCPまたはOceanBase Cloud KMSによって生成・管理されるため、internal方式のようにADMINISTER KEY MANAGEMENT CREATE KEYSTORE、SET KEYSTORE OPEN、SET KEYを実行する必要はありません。詳細については、テナントマスターキーの生成(Oracleモード)を参照してください。テーブル領域を作成し、暗号化アルゴリズムを指定します。
暗号化アルゴリズムとして
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';
注意
上記は external_kms_info のサンプル値です。実際のKMSエンドポイントとキー情報に置き換えてください。他のKMS接続形態を使用している場合は、フィールドの形式が異なる可能性があります。tde_method、external_kms_info、および テナントマスターキーの生成(Oracleモード)を参照してください。
暗号化されたテーブルスペースに新しいテーブルを作成する
暗号化方式の設定が完了したら、暗号化されたテーブルスペースに新しいテーブルを作成できます。具体的な手順は以下のとおりです:
通常ユーザーで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を参照してください。