MariaDBのTDE Part 2

MariaDBのTDEの暗号化プラグイン

概要

資料

基本仕様

  • プラグイン動作

    • 暗号化関連の構造体に対してプラグインで実装した関数を定義し、それをプラグイン読み込み時にMariaDB本体に登録
    • MariaDB本体がTDE機能を実行する際に、登録された構造体の関数を呼び出す
  • 暗号化プラグインの作成

    • 必要となる暗号関連ヘッダの読み込み

        #include <mysql/plugin_encryption.h>
      
    • 必要となる各種機能を実装

      • 鍵管理・データ暗号化機能が呼び出される際の引数と戻り値については、前述で読み込む暗号関連ヘッダに詳細な説明が記載されているため、そちらを参考に実装する
    • 暗号化プラグインが提供する機能(関数)を暗号化プラグインディスクリプタ構造体として定義

      struct st_mariadb_encryption [ディスクリプタ名]= {
      MariaDB_ENCRYPTION_INTERFACE_VERSION,
      [引数で指定された鍵番号の最新鍵バージョンを返却する関数],
      [引数で指定された鍵番号・鍵バージョンに合致するデータ暗号化鍵を返却する関数],
      [暗号化コンテキストオブジェクトのサイズを返却する関数],
      [暗号化コンテキストオブジェクトを初期化する関数],
      [データの暗号化・復号化を行う関数],
      [暗号化コンテキストオブジェクトを破棄する関数],
      [暗号化されたデータの長さを返却する関数]
      };
      
    • プラグイン宣言を定義

      maria_declare_plugin([プラグイン名])
      {
      MariaDB_ENCRYPTION_PLUGIN,
      [暗号化プラグインディスクリプタへのポインタ],
      "[プラグイン名]",
      "[プラグイン作成者]",
      "[プラグイン概要]",
      PLUGIN_LICENSE_GPL,
      [プラグイン初期化関数],
      [プラグイン終了関数],
      [プラグインバージョン(hex)],
      [ステータス変数の構造体],
      [システム変数の構造体]
      "[プラグインバージョン(文字列)]",
      [プラグインステータス]
      }
      maria_declare_plugin_end;