MariaDBのTDE Part 1

MariaDBのTDEの仕様

概要

  • アプリケーションの変更なしにデータベースのデータファイル・ログファイル一時ファイル等を暗号化する機能
  • データベースサーバのOSに侵入された場合もしくはストレージデバイスの廃棄・盗難等へは効果がある
  • SQLインタフェース(例:SQLインジェクション)を介したアクセスに対しては効果がない

制限事項

  • 10.4未満はredoログのデータ暗号化鍵のローテーションに対応していない
  • 一部のファイルはデータ暗号化鍵のローテーションに対応していない
  • 一部ファイルはデータ暗号化自体に対応していない
    • 一般ログ(general_log)
    • スロークエリログ
    • エラーログ
    • mysqldumpで出力されたダンプデータ

基本仕様

  • 利用するためには対応する暗号化プラグインが必要となる

    • 同時に利用できる暗号化プラグインは1つのみ
    • 暗号化プラグインは鍵管理機能とデータ暗号化機能を提供し、データ暗号化機能の提供はオプションとなる
      • データ暗号化機能はMariaDB本体に標準で組み込まれており、そちら(AES-CBC)をそのまま利用できる
  • 対応するストレージエンジンはInnoDBAriaのみとなる

  • レプリケーション構成の場合、プライマリ・レプリカで異なるデータ暗号化鍵を利用することができる

  • mariadbbackupを利用することで、暗号化されたInnoDBバックアップに対応できる

  • データ暗号化に利用されるデータ暗号化鍵の仕様は次の通り

    • データ暗号化鍵は鍵番号と鍵バージョンで管理される
    • MariaDB全体で利用されるファイル群の暗号化には特定の鍵番号のデータ暗号化鍵が利用される
      • 鍵番号1
        • バイナリログ、リレーログ
        • システムデータ(double write buffer)
        • redoログ
      • 鍵番号2(鍵番号2が存在しない場合、鍵番号1が利用される。鍵番号2の利用は必須ではなくオプション扱いとなる)
        • 一時ファイル
        • 一時テーブル
  • データ暗号化は次の通り処理される

    • ページ単位で処理される
    • ページのヘッダ領域にデータ暗号化に利用したデータ暗号化鍵の鍵番号と鍵バージョンが格納されている
    • 鍵番号が同じ場合、鍵バージョンが大きいものが新しいものとして扱われる
    • 同じ鍵番号で新しい鍵バージョンのデータ暗号化鍵が追加されると、バックグラウンドで新しいデータ暗号化鍵での再暗号化処理が行われる
    • データ暗号化についてはテーブル単位で実施の有無を指定できる