テナントマスターキーは、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 内のユーザーデータに対する暗号化・復号化操作を行います。