本記事では、MySQLモードのテナントでテナントのマスターキーを生成する方法について説明します。生成後は、透過的データ暗号化(TDE)、列暗号化、関数暗号化機能を使用できます。
機能の適用範囲
OceanBaseデータベースCommunity Editionは、テナントのマスターキーに関連する機能を現在サポートしていません。
前提条件
- MySQLテナントが作成済みであること。
- 管理ユーザーでテナントにログインしていること。
マスターテナントキーの生成
マスターテナントキーの生成に関する説明:
- 透過的データ暗号化(TDE)機能を使用するには、まずマスターテナントキーを生成する必要があります。マスターテナントキーの値(つまり
tde_methodの値)はnone以外である必要があります。ログ再生時の循環依存を回避するため、tde_methodがinternalに設定されている場合、TDEのclogは暗号化されません。 - 列暗号化機能もマスターテナントキーが
none以外である必要があります。 - 関数暗号化機能も、
none以外のマスターテナントキーを生成する必要があります。 - 上記3つの機能では、すべて
tde_methodをobcloudに設定することを推奨します。
以下はobcloud方式の例です。外部KMSサービスを使用する場合は、tde_methodをobcloudに設定し、external_kms_infoを構成してください。
管理ユーザーでクラスタのMySQLテナントにログインします。
以下のステートメントを実行して、
obcloud方式の暗号化を有効にします。パラメータ
tde_methodはマスターテナントキーの格納方法を設定するために使用され、デフォルトはnoneで、暗号化が無効であることを意味します。パラメータ
tde_methodの詳細については、tde_methodを参照してください。注意
パラメータ
tde_methodは一度設定すると、変更できなくなります。ALTER SYSTEM SET tde_method='obcloud';以下のステートメントを実行して、該当テナントのすべてのOBServerノード上のパラメータ
tde_methodの値がobcloudであることを確認します。SHOW PARAMETERS LIKE 'tde_method';以下のステートメントを実行して、キー管理情報を設定します。
パラメータ
external_kms_infoの詳細については、external_kms_infoを参照してください。-- この例は参考用です。実際のキー管理情報に置き換えてください。 ALTER SYSTEM SET external_kms_info='{ "KMS_HOST": "kms.ob.com:443", "ROOT_CERT": "******", "PRIVATE_KEY": "******", "PRIVATE_KEY_PHRASE": "ob2025", "SCENE": "ANT", "KEY_NAME": "ob_cluster_key", "CALLER": "oceanbase_admin"}';以下のステートメントを実行して、マスターテナントキーを生成します。
説明
テナント上のすべてのOBServerノード上のパラメータ
tde_methodの値がinternalである場合にのみ、このステートメントを実行できます。初回実行時は、キーが有効になるまで約20秒待機する必要があります。ALTER INSTANCE ROTATE INNODB MASTER KEY;
マスターテナントキーのローテーション
セキュリティを向上させるため、定期的にマスターテナントキーをローテーションすることを推奨します。マスターテナントキーをローテーションした後、新しいデータは新しいキーで暗号化され、古いデータは引き続き古いキーで復号できます。
ALTER INSTANCE ROTATE INNODB MASTER KEY;
次のステップ
マスターキーを生成した後、以下の操作が可能になります。
- 透過的データ暗号化(TDE)の使用:新規作成テーブルへのTDEの設定を参照してください。
- 列暗号化機能の使用:列暗号化ルールの作成を参照してください。
- 関数暗号化機能の使用:ENHANCED_AES_ENCRYPTおよびENHANCED_AES_DECRYPTを参照してください。