MySQL 8.0 リファレンスマニュアル


6.4.4.4 keyring_okv KMIP プラグインの使用

注記

keyring_okv プラグインは、商用製品である MySQL Enterprise Edition に含まれている拡張機能です。 商用製品の詳細は、https://www.mysql.com/products/ を参照してください。

Key Management Interoperability Protocol (KMIP) は、鍵管理サーバーとそのクライアント間の暗号化鍵の通信を可能にします。 keyring_okv キーリングプラグインは KMIP 1.1 プロトコルを使用して、KMIP バックエンドのクライアントとしてセキュアに通信します。 キーリング材料は、keyring_okv ではなくバックエンドによって排他的に生成されます。 プラグインは、次の KMIP 互換製品で動作します:

  • Oracle Key Vault

  • Gemalto SafeNet KeySecure アプライアンス

  • Townsend Alliance Key Manager

keyring_okv プラグインは、標準の MySQL キーリングサービスインタフェースを構成する関数をサポートしています。 これらの関数によって実行されるキーリング操作には、次の 2 つのレベルでアクセスできます:

例 (UDF を使用):

SELECT keyring_key_generate('MyKey', 'AES', 32);
SELECT keyring_key_remove('MyKey');

keyring_okvセクション6.4.4.8「サポートされているキーリングキーのタイプと長さ」 で許可されるキータイプの詳細。

keyring_okv プラグインをインストールするには、セクション6.4.4.1「キーリングプラグインのインストール」 にある一般的なキーリングのインストール手順と、ここにある keyring_okv に固有の構成情報を使用します。

一般的な keyring_okv 構成

keyring_okv プラグインが鍵リングストレージに使用する KMIP バックエンドに関係なく、keyring_okv_conf_dir システム変数は、keyring_okv がサポートファイルに使用するディレクトリの場所を構成します。 デフォルト値は空であるため、プラグインが KMIP バックエンドと通信する前に、適切に構成されたディレクトリに名前を付けるように変数を設定する必要があります。 そうしないかぎり、keyring_okv は、通信できないメッセージをサーバーの起動時にエラーログに書き込みます:

[Warning] Plugin keyring_okv reported: 'For keyring_okv to be
initialized, please point the keyring_okv_conf_dir variable to a directory
containing Oracle Key Vault configuration file and ssl materials'

keyring_okv_conf_dir 変数は、次の項目を含むディレクトリに名前を付ける必要があります:

  • okvclient.ora: keyring_okv が通信する KMIP バックエンドの詳細を含むファイル。

  • ssl: KMIP バックエンドとのセキュアな接続を確立するために必要な証明書および鍵ファイルを含むディレクトリ: CA.pemcert.pem および key.pem。 キーファイルがパスワードで保護されている場合、ssl ディレクトリには、キーファイルの復号化に必要なパスワードを含む password.txt という単一行のテキストファイルを含めることができます。

keyring_okv が正常に動作するには、証明書およびキーファイルを含む okvclient.ora ファイルと ssl ディレクトリの両方が必要です。 これらのファイルを構成ディレクトリに移入する手順は、他の場所で説明されているように、keyring_okv で使用される KMIP バックエンドによって異なります。

keyring_okv でサポートファイルの場所として使用される構成ディレクトリには制限モードが必要で、MySQL サーバーの実行に使用されるアカウントからのみアクセスできます。 たとえば、Unix および Unix に似たシステムで/usr/local/mysql/mysql-keyring-okv ディレクトリを使用するには、次のコマンド (root として実行) を実行してディレクトリを作成し、そのモードと所有権を設定します:

cd /usr/local/mysql
mkdir mysql-keyring-okv
chmod 750 mysql-keyring-okv
chown mysql mysql-keyring-okv
chgrp mysql mysql-keyring-okv

サーバーの起動プロセス中に使用できるようにするには、--early-plugin-load オプションを使用して keyring_okv をロードする必要があります。 また、keyring_okv_conf_dir システム変数を設定して、構成ディレクトリの場所を keyring_okv に通知します。 たとえば、サーバー my.cnf ファイルで次の行を使用して、プラットフォームの .so 接尾辞とディレクトリの場所を必要に応じて調整します:

[mysqld]
early-plugin-load=keyring_okv.so
keyring_okv_conf_dir=/usr/local/mysql/mysql-keyring-okv

keyring_okv_conf_dir の詳細は、セクション6.4.4.13「キーリングシステム変数」 を参照してください。

Oracle Key Vault 用の keyring_okv の構成

ここでの説明は、Oracle Key Vault に精通していることを前提としています。 いくつかの関連情報ソース:

Oracle Key Vault 用語では、Oracle Key Vault を使用してセキュリティオブジェクトを格納および取得するクライアントはエンドポイントと呼ばれます。 Oracle Key Vault と通信するには、エンドポイントとして登録し、エンドポイントサポートファイルをダウンロードしてインストールする必要があります。

次の手順は、Oracle Key Vault で使用するための keyring_okv の設定プロセスを簡単に要約したものです:

  1. 使用する keyring_okv プラグインの構成ディレクトリを作成します。

  2. エンドポイントを Oracle Key Vault に登録して、エンロールトークンを取得します。

  3. エンロールトークンを使用して、okvclient.jar クライアントソフトウェアのダウンロードを取得します。

  4. クライアントソフトウェアをインストールして、Oracle Key Vault サポートファイルを含む keyring_okv 構成ディレクトリに移入します。

keyring_okv と Oracle Key Vault が連携するように構成するには、次の手順を使用します。 この説明では、Oracle Key Vault との対話方法のみをまとめています。 詳細は、Oracle Key Vault サイトにアクセスし、『 Oracle Key Vault 管理者ガイド』を参照してください。

  1. Oracle Key Vault サポートファイルを含む構成ディレクトリを作成し、keyring_okv_conf_dir システム変数がそのディレクトリに名前を付けるように設定されていることを確認します (詳細は、一般的な keyring_okv 構成 を参照)。

  2. システム管理者ロールを持つユーザーとして Oracle Key Vault 管理コンソールにログインします。

  3. Endpoints タブを選択して、Endpoints ページにアクセスします。 Endpoints ページで、Add をクリックします。

  4. 必要なエンドポイント情報を指定し、Register をクリックします。 エンドポイントタイプはその他である必要があります。 登録に成功すると、エンロールトークンが生成されます。

  5. Oracle Key Vault サーバーからログアウトします。

  6. 今回はログインせずに、Oracle Key Vault サーバーに再度接続します。 エンドポイントエンロールトークンを使用して、okvclient.jar ソフトウェアのダウンロードをエンロールおよびリクエストします。 このファイルをシステムに保存します。

  7. 次のコマンドを使用して、okvclient.jar ファイルをインストールします (JDK 1.4 以上が必要です):

    java -jar okvclient.jar -d dir_name [-v]

    -d オプションに続くディレクトリ名は、抽出したファイルをインストールする場所です。 -v オプションを指定すると、コマンドが失敗した場合に役立つログ情報が生成されます。

    コマンドで Oracle Key Vault エンドポイントパスワードを要求された場合は、指定しないでください。 代わりに、Enter キーを押します。 (その結果、エンドポイントが Oracle Key Vault に接続するときにパスワードは必要ありません。)

  8. 前述のコマンドにより、okvclient.ora ファイルが生成されます。このファイルは、前述の java -jar コマンドの -d オプションで指定されたディレクトリの下のこの場所にある必要があります:

    install_dir/conf/okvclient.ora

    ファイルの内容には、次のような行が含まれます:

    SERVER=host_ip:port_num
    STANDBY_SERVER=host_ip:port_num

    keyring_okv プラグインは、SERVER 変数で指定されたホスト上で実行されているサーバーと通信しようとし、失敗した場合は STANDBY_SERVER にフォールバックします:

    • SERVER 変数の場合、okvclient.ora ファイルの設定は必須です。

    • STANDBY_SERVER 変数の場合、okvclient.ora ファイルの設定はオプションです。

  9. Oracle Key Vault インストーラディレクトリに移動し、次のコマンドを実行して設定をテストします:

    okvutil/bin/okvutil list

    出力は次のようになります:

    Unique ID                               Type            Identifier
    255AB8DE-C97F-482C-E053-0100007F28B9	Symmetric Key	-
    264BF6E0-A20E-7C42-E053-0100007FB29C	Symmetric Key	-

    新しい Oracle Key Vault サーバー (キーのないサーバー) の場合、ボールトにキーがないことを示すために、出力は次のようになります:

    no objects found
  10. 次のコマンドを使用して、SSL 材料を含む ssl ディレクトリを okvclient.jar ファイルから抽出します:

    jar xf okvclient.jar ssl
  11. Oracle Key Vault サポートファイル (okvclient.ora ファイルおよび ssl ディレクトリ) を構成ディレクトリにコピーします。

  12. (オプション) キーファイルをパスワードで保護する場合は、keyring_okv キーファイルのパスワード保護 の手順を使用します。

前述の手順を完了したら、MySQL サーバーを再起動します。 keyring_okv プラグインがロードされ、keyring_okv は構成ディレクトリ内のファイルを使用して Oracle Key Vault と通信します。

Gemalto SafeNet KeySecure Appliance 用の keyring_okv の構成

Gemalto SafeNet KeySecure Appliance は KMIP プロトコル (バージョン 1.1 または 1.2) を使用します。 keyring_okv キーリングプラグイン (KMIP 1.1 をサポート) は、鍵リングストレージの KMIP バックエンドとして KeySecure を使用できます。

keyring_okv と KeySecure が連携するように構成するには、次の手順を使用します。 説明には、KeySecure との対話方法のみがまとめられています。 詳細は、Add a KMIP Server in the 「KeySecure ユーザーガイド」のセクションを参照してください。

  1. KeySecure サポートファイルを含む構成ディレクトリを作成し、keyring_okv_conf_dir システム変数がそのディレクトリに名前を付けるように設定されていることを確認します (詳細は、一般的な keyring_okv 構成 を参照)。

  2. 構成ディレクトリで、必要な SSL 証明書およびキーファイルの格納に使用する ssl という名前のサブディレクトリを作成します。

  3. 構成ディレクトリで、okvclient.ora という名前のファイルを作成します。 次の形式である必要があります:

    SERVER=host_ip:port_num
    STANDBY_SERVER=host_ip:port_num

    たとえば、KeySecure がホスト 198.51.100.20 で実行されており、ポート 9002 でリスニングしている場合、okvclient.ora ファイルは次のようになります:

    SERVER=198.51.100.20:9002
    STANDBY_SERVER=198.51.100.20:9002
  4. 認証局アクセスの資格証明を持つ管理者として KeySecure 管理コンソールに接続します。

  5. セキュリティ→ローカル CA に移動し、ローカル認証局 (CA) を作成します。

  6. 信頼できる CA リストに移動します。 デフォルトを選択し、プロパティをクリックします。 次に、信頼できる認証局リストの編集を選択し、作成した CA を追加します。

  7. CA をダウンロードし、CA.pem という名前のファイルとして ssl ディレクトリに保存します。

  8. Security > > Certificate Requests に移動し、証明書を作成します。 その後、証明書 PEM ファイルを含む圧縮 tar ファイルをダウンロードできます。

  9. ダウンロードしたファイルから PEM ファイルを抽出します。 たとえば、ファイル名が csr_w_pk_pkcs8.gz の場合は、次のコマンドを使用して解凍および解凍します:

    tar zxvf csr_w_pk_pkcs8.gz

    2 つのファイルが抽出操作によって生成されます: certificate_request.pem および private_key_pkcs8.pem

  10. この openssl コマンドを使用して、秘密キーを復号化し、key.pem という名前のファイルを作成します:

    openssl pkcs8 -in private_key_pkcs8.pem -out key.pem
  11. key.pem ファイルを ssl ディレクトリにコピーします。

  12. certificate_request.pem の証明書リクエストをクリップボードにコピーします。

  13. Security > > Local CA に移動します。 以前に作成した CA (CA.pem ファイルを作成するためにダウンロードした CA) を選択し、署名リクエストをクリックします。 クリップボードから証明書リクエストを貼り付け、クライアントの証明書の目的 (キーリングは KeySecure のクライアント) を選択して、署名リクエストをクリックします。 その結果、選択した CA で署名された証明書が新しいページに表示されます。

  14. 署名付き証明書をクリップボードにコピーし、クリップボードの内容を cert.pem という名前のファイルとして ssl ディレクトリに保存します。

  15. (オプション) キーファイルをパスワードで保護する場合は、keyring_okv キーファイルのパスワード保護 の手順を使用します。

前述の手順を完了したら、MySQL サーバーを再起動します。 keyring_okv プラグインがロードされ、keyring_okv は構成ディレクトリ内のファイルを使用して KeySecure と通信します。

Townsend Alliance Key Manager 用の keyring_okv の構成

Townsend Alliance Key Manager は KMIP プロトコルを使用します。 keyring_okv キーリングプラグインは、キーリングストレージの KMIP バックエンドとして Alliance Key Manager を使用できます。 詳細は、「MySQL のアライアンスキーマネージャ」を参照してください。

keyring_okv キーファイルのパスワード保護

オプションで、キーファイルをパスワードで保護し、パスワードを含むファイルを指定してキーファイルを復号化できます。 これを行うには、場所を ssl ディレクトリに変更し、次のステップを実行します:

  1. key.pem キーファイルを暗号化します。 たとえば、次のようなコマンドを使用して、プロンプトで暗号化パスワードを入力します:

    shell> openssl rsa -des3 -in key.pem -out key.pem.new
    Enter PEM pass phrase:
    Verifying - Enter PEM pass phrase:
  2. ssl ディレクトリの password.txt という単一行のテキストファイルに暗号化パスワードを保存します。

  3. 次のコマンドを使用して、暗号化されたキーファイルを復号化できることを確認します。 復号化されたファイルがコンソールに表示されます:

    shell> openssl rsa -in key.pem.new -passin file:password.txt
  4. 元の key.pem ファイルを削除し、key.pem.new の名前を key.pem に変更します。

  5. 必要に応じて、新しい key.pem ファイルおよび password.txt ファイルの所有権とアクセスモードを変更し、ssl ディレクトリ内の他のファイルと同じ制限があることを確認します。


関連キーワード:  keyring, okv, ディレクトリ, 構成, キー, Vault, パスワード, pem, KMIP, 変数