テナントマスターキーは、OceanBaseデータベースのデータ暗号化を実現するための基盤です。透過的データ暗号化(TDE)、列暗号化、および関数暗号化機能はすべて、テナントマスターキーに依存しています。
機能の適用範囲
OceanBaseデータベースCommunity Editionは、テナントマスターキー関連機能をサポートしていません。
二層鍵体系
OceanBaseデータベースは、二層鍵体系を採用してデータの暗号化を実現します:
- テナントマスターキー(Master Key):各テナントには1つのマスターキーがあり、データキーを暗号化して保護するために使用されます。マスターキーはKeystoreに格納されます。
- データキー(Data Key):データを直接暗号化するために使用されます。暗号化された各テーブル領域には対応するデータキーが存在します。
データのセキュリティを確保するため、ユーザーはマスターキーとデータキーを直接確認または指定することはできません。これらはシステムによって生成され、ディスク上に平文で保存されることはないため、システムのセキュリティが大幅に向上します。
Keystore
Keystoreはマスターキーの管理モジュールであり、鍵管理サービスを提供します。Keystoreの機能は以下の通りです:
- マスターキーの生成:マスターキーはKeystoreが暗号アルゴリズムに基づいて生成し、ユーザーは指定できません。
- マスターキー関連情報の保存:Keystoreは関連情報のマルチレプリカ特性、一貫性特性、および障害処理を保証します。
- マスターキーの管理とマルチバージョン制御:マルチバージョンメカニズムにより、新しく生成されたマスターキーは即時に有効になる必要がなく、段階的にマスターキーの置換を完了できます。
- マスターキーの高可用性サービスの取得。
- Keystoreの操作指示の処理。
マスターキーの保存方法
パラメータtde_methodでマスターキーの保存方法を制御します:
tde_method の値 |
意味 |
|---|---|
none |
テナントのマスターキープリートを生成しない(デフォルト値) |
internal |
マスターキープリートは内部テーブルに保存されます |
bkmi |
マスターキープリートは外部BKMIシステムに保存されます |
obcloud |
マスターキープリートはOceanBase Cloud KMSサービスに保存されます |
注意
- システムテナントでは暗号化を有効にできません。
- パラメータ
tde_methodをnone以外の値に設定すると、変更できなくなります。テナントを再構築しない限り、他の暗号化方式に切り替えることはできません。
マスターキーの保存方法の説明:
internalとobcloudの2種類の方法をサポートしています。internal方式では、マスターキーの暗号化情報は内部テーブルに保存・管理されます。ログ再生時の循環依存を避けるため、この暗号化方式ではclogは暗号化されません。obcloud方式では、マスターキーはOceanBase Cloud KMSまたはOCP KMSプロキシサービスによって管理されます。- 外部KMS(例:
obcloud)を使用する場合、tde_methodを設定するほかに、external_kms_infoを設定して、KMSのアドレス、認証情報、キー名などを指定できます。データベースはこの設定を通じて外部KMSに接続し、マスターキーを取得します。
暗号化を有効にすると、マスターキーを使用してデータキーを暗号化し、暗号化されたデータキーの暗号文を得ます。この暗号文は内部テーブル、マクロブロックヘッダ、Clogヘッダに保存され、データキーはどこにも平文で保存されません。データの暗号化または復号が必要な場合、マスターキーを使用してこの暗号文を復号し、データキーを取得して、マクロブロックやclog内のユーザーデータに対する暗号化・復号操作を行います。