鍵リングサービスコンシューマには、鍵リングプラグインがインストールされている必要があります。 MySQL には、次のプラグインの選択肢があります:
keyring_file
: キーリングデータをサーバーホストのローカルファイルに格納します。 すべての MySQL ディストリビューションで使用できます。keyring_encrypted_file
: キーリングデータをサーバーホストに対してローカルな暗号化されたファイルに格納します。 MySQL Enterprise Edition ディストリビューションで使用できます。keyring_okv
: Oracle Key Vault、Gemalto SafeNet KeySecure Appliance などの KMIP 互換のバックエンドキーリングストレージ製品を使用します。 MySQL Enterprise Edition ディストリビューションで使用できます。keyring_aws
: キー生成のバックエンドとして Amazon Web Services Key Management Service と通信し、キーの格納にローカルファイルを使用します。 MySQL Enterprise Edition ディストリビューションで使用できます。keyring_hashicorp
: バックエンドストレージのために HashiCorp Vault と通信します。 MySQL Enterprise Edition ディストリビューションで使用できます。keyring_oci
の場合: セクション6.4.4.7「Oracle Cloud Infrastructure Vault キーリングプラグインの使用」
このセクションでは、選択したキーリングプラグインをインストールする方法について説明します。 プラグインのインストールについての一般的な情報は、セクション5.6.1「プラグインのインストールおよびアンインストール」を参照してください。
キーリングプラグインとともにキーリングユーザー定義関数 (UDF) を使用する場合は、セクション6.4.4.10「汎用キーリングキー管理関数」 の手順に従って、プラグインのインストール後に UDF をインストールします。
サーバーで使用できるようにするには、プラグインライブラリファイルを MySQL プラグインディレクトリ (plugin_dir
システム変数で指定されたディレクトリ) に配置する必要があります。 必要に応じて、サーバーの起動時に plugin_dir
の値を設定してプラグインディレクトリの場所を構成します。
各キーリングプラグインのインストールは似ています。 次の手順では、keyring_file
を使用します。 別のキーリングプラグインのユーザーは、keyring_file
をその名前に置き換えることができます。
keyring_file
プラグインライブラリファイルのベース名は keyring_file
です。 ファイル名の接尾辞は、プラットフォームごとに異なります (たとえば、.so
for Unix and Unix-like systems, .dll
for Windows)。
キーリングプラグインは一度に 1 つだけイネーブルにする必要があります。 複数のキーリングプラグインの有効化はサポートされていないため、予想どおりに結果が得られないことがあります。
キーリングプラグインは、コンポーネントが独自の初期化中に必要に応じてアクセスできるように、サーバーの起動シーケンスの最早段階でロードする必要があります。 たとえば、InnoDB
ストレージエンジンはテーブルスペースの暗号化に鍵リングを使用するため、InnoDB
を初期化する前に鍵リングプラグインをロードして使用可能にする必要があります。
プラグインをロードするには、--early-plugin-load
オプションを使用して、プラグインを含むプラグインライブラリファイルに名前を付けます。 たとえば、プラグインライブラリファイルの接尾辞が .so
であるプラットフォームでは、サーバーの my.cnf
ファイルで次の行を使用し、必要に応じてプラットフォームの .so
接尾辞を調整します:
[mysqld]
early-plugin-load=keyring_file.so
サーバーを起動する前に、選択したキーリングプラグインのノートをチェックして、追加の構成が許可されているか必要かを確認します:
keyring_file
: セクション6.4.4.2「keyring_file ファイルベースプラグインの使用」。keyring_encrypted_file
: セクション6.4.4.3「keyring_encrypted_file キーリングプラグインの使用」。keyring_okv
: セクション6.4.4.4「keyring_okv KMIP プラグインの使用」。keyring_aws
: セクション6.4.4.5「keyring_aws Amazon Web Services キーリングプラグインの使用」keyring_hashicorp
: セクション6.4.4.6「HashiCorp Vault キーリングプラグインの使用」
プラグイン固有の構成を実行した後、プラグインのインストールを検証します。 MySQL サーバーを実行した状態で、INFORMATION_SCHEMA.PLUGINS
テーブルを調べるか、SHOW PLUGINS
ステートメントを使用します (セクション5.6.2「サーバープラグイン情報の取得」 を参照)。 例:
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE 'keyring%';
+--------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+--------------+---------------+
| keyring_file | ACTIVE |
+--------------+---------------+
プラグインの初期化に失敗した場合は、サーバーエラーログで診断メッセージを確認してください。
プラグインは、--plugin-load
や --plugin-load-add
オプション、INSTALL PLUGIN
ステートメントなど、--early-plugin-load
以外の方法でロードできます。 ただし、これらのメソッドを使用してロードされたキーリングプラグインは、InnoDB
などの特定のコンポーネントのサーバー起動シーケンスでは遅すぎる可能性があります:
--plugin-load
または--plugin-load-add
を使用したプラグインのロードは、InnoDB
の初期化後に行われます。INSTALL PLUGIN
を使用してインストールされたプラグインは、mysql.plugin
システムテーブルに登録され、その後のサーバーの再起動のために自動的にロードされます。 ただし、mysql.plugin
はInnoDB
テーブルであるため、そこに指定されたプラグインは、InnoDB
の初期化後にのみ起動時にロードできます。
コンポーネントが鍵リングサービスにアクセスしようとしたときに鍵リングプラグインを使用できない場合、そのコンポーネントはそのサービスを使用できません。 その結果、コンポーネントの初期化に失敗したり、機能が制限されて初期化されたりする可能性があります。 たとえば、InnoDB
は、初期化時に暗号化されたテーブルスペースがあることを検出すると、キーリングへのアクセスを試みます。 キーリングが使用できない場合、InnoDB
は暗号化されていないテーブルスペースにのみアクセスできます。 InnoDB
が暗号化されたテーブルスペースにも確実にアクセスできるようにするには、--early-plugin-load
を使用してキープラグインをロードします。