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 つのレベルでアクセスできます:
SQL インタフェース: SQL ステートメントで、セクション6.4.4.10「汎用キーリングキー管理関数」 で説明されているユーザー定義関数 (UDF) をコールします。
C インタフェース: C 言語コードでは、セクション5.6.8.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
プラグインが鍵リングストレージに使用する 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.pem
、cert.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 に精通していることを前提としています。 いくつかの関連情報ソース:
Oracle Key Vault 用語では、Oracle Key Vault を使用してセキュリティオブジェクトを格納および取得するクライアントはエンドポイントと呼ばれます。 Oracle Key Vault と通信するには、エンドポイントとして登録し、エンドポイントサポートファイルをダウンロードしてインストールする必要があります。
次の手順は、Oracle Key Vault で使用するための keyring_okv
の設定プロセスを簡単に要約したものです:
使用する
keyring_okv
プラグインの構成ディレクトリを作成します。エンドポイントを Oracle Key Vault に登録して、エンロールトークンを取得します。
エンロールトークンを使用して、
okvclient.jar
クライアントソフトウェアのダウンロードを取得します。クライアントソフトウェアをインストールして、Oracle Key Vault サポートファイルを含む
keyring_okv
構成ディレクトリに移入します。
keyring_okv
と Oracle Key Vault が連携するように構成するには、次の手順を使用します。 この説明では、Oracle Key Vault との対話方法のみをまとめています。 詳細は、Oracle Key Vault サイトにアクセスし、『 Oracle Key Vault 管理者ガイド』を参照してください。
Oracle Key Vault サポートファイルを含む構成ディレクトリを作成し、
keyring_okv_conf_dir
システム変数がそのディレクトリに名前を付けるように設定されていることを確認します (詳細は、一般的な keyring_okv 構成 を参照)。システム管理者ロールを持つユーザーとして Oracle Key Vault 管理コンソールにログインします。
Endpoints タブを選択して、Endpoints ページにアクセスします。 Endpoints ページで、Add をクリックします。
必要なエンドポイント情報を指定し、Register をクリックします。 エンドポイントタイプはその他である必要があります。 登録に成功すると、エンロールトークンが生成されます。
Oracle Key Vault サーバーからログアウトします。
今回はログインせずに、Oracle Key Vault サーバーに再度接続します。 エンドポイントエンロールトークンを使用して、
okvclient.jar
ソフトウェアのダウンロードをエンロールおよびリクエストします。 このファイルをシステムに保存します。-
次のコマンドを使用して、
okvclient.jar
ファイルをインストールします (JDK 1.4 以上が必要です):java -jar okvclient.jar -d dir_name [-v]
-d
オプションに続くディレクトリ名は、抽出したファイルをインストールする場所です。-v
オプションを指定すると、コマンドが失敗した場合に役立つログ情報が生成されます。コマンドで Oracle Key Vault エンドポイントパスワードを要求された場合は、指定しないでください。 代わりに、Enter キーを押します。 (その結果、エンドポイントが Oracle Key Vault に接続するときにパスワードは必要ありません。)
-
前述のコマンドにより、
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
ファイルの設定はオプションです。
-
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
-
次のコマンドを使用して、SSL 材料を含む
ssl
ディレクトリをokvclient.jar
ファイルから抽出します:jar xf okvclient.jar ssl
Oracle Key Vault サポートファイル (
okvclient.ora
ファイルおよびssl
ディレクトリ) を構成ディレクトリにコピーします。(オプション) キーファイルをパスワードで保護する場合は、keyring_okv キーファイルのパスワード保護 の手順を使用します。
前述の手順を完了したら、MySQL サーバーを再起動します。 keyring_okv
プラグインがロードされ、keyring_okv
は構成ディレクトリ内のファイルを使用して Oracle Key Vault と通信します。
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 ユーザーガイド」のセクションを参照してください。
KeySecure サポートファイルを含む構成ディレクトリを作成し、
keyring_okv_conf_dir
システム変数がそのディレクトリに名前を付けるように設定されていることを確認します (詳細は、一般的な keyring_okv 構成 を参照)。構成ディレクトリで、必要な SSL 証明書およびキーファイルの格納に使用する
ssl
という名前のサブディレクトリを作成します。-
構成ディレクトリで、
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
認証局アクセスの資格証明を持つ管理者として KeySecure 管理コンソールに接続します。
セキュリティ→ローカル CA に移動し、ローカル認証局 (CA) を作成します。
信頼できる CA リストに移動します。 デフォルトを選択し、プロパティをクリックします。 次に、信頼できる認証局リストの編集を選択し、作成した CA を追加します。
CA をダウンロードし、
CA.pem
という名前のファイルとしてssl
ディレクトリに保存します。Security > > Certificate Requests に移動し、証明書を作成します。 その後、証明書 PEM ファイルを含む圧縮 tar ファイルをダウンロードできます。
-
ダウンロードしたファイルから PEM ファイルを抽出します。 たとえば、ファイル名が
csr_w_pk_pkcs8.gz
の場合は、次のコマンドを使用して解凍および解凍します:tar zxvf csr_w_pk_pkcs8.gz
2 つのファイルが抽出操作によって生成されます:
certificate_request.pem
およびprivate_key_pkcs8.pem
。 -
この openssl コマンドを使用して、秘密キーを復号化し、
key.pem
という名前のファイルを作成します:openssl pkcs8 -in private_key_pkcs8.pem -out key.pem
key.pem
ファイルをssl
ディレクトリにコピーします。certificate_request.pem
の証明書リクエストをクリップボードにコピーします。Security > > Local CA に移動します。 以前に作成した CA (
CA.pem
ファイルを作成するためにダウンロードした CA) を選択し、署名リクエストをクリックします。 クリップボードから証明書リクエストを貼り付け、クライアントの証明書の目的 (キーリングは KeySecure のクライアント) を選択して、署名リクエストをクリックします。 その結果、選択した CA で署名された証明書が新しいページに表示されます。署名付き証明書をクリップボードにコピーし、クリップボードの内容を
cert.pem
という名前のファイルとしてssl
ディレクトリに保存します。(オプション) キーファイルをパスワードで保護する場合は、keyring_okv キーファイルのパスワード保護 の手順を使用します。
前述の手順を完了したら、MySQL サーバーを再起動します。 keyring_okv
プラグインがロードされ、keyring_okv
は構成ディレクトリ内のファイルを使用して KeySecure と通信します。
Townsend Alliance Key Manager は KMIP プロトコルを使用します。 keyring_okv
キーリングプラグインは、キーリングストレージの KMIP バックエンドとして Alliance Key Manager を使用できます。 詳細は、「MySQL のアライアンスキーマネージャ」を参照してください。
オプションで、キーファイルをパスワードで保護し、パスワードを含むファイルを指定してキーファイルを復号化できます。 これを行うには、場所を ssl
ディレクトリに変更し、次のステップを実行します:
-
key.pem
キーファイルを暗号化します。 たとえば、次のようなコマンドを使用して、プロンプトで暗号化パスワードを入力します:shell> openssl rsa -des3 -in key.pem -out key.pem.new Enter PEM pass phrase: Verifying - Enter PEM pass phrase:
ssl
ディレクトリのpassword.txt
という単一行のテキストファイルに暗号化パスワードを保存します。-
次のコマンドを使用して、暗号化されたキーファイルを復号化できることを確認します。 復号化されたファイルがコンソールに表示されます:
shell> openssl rsa -in key.pem.new -passin file:password.txt
元の
key.pem
ファイルを削除し、key.pem.new
の名前をkey.pem
に変更します。必要に応じて、新しい
key.pem
ファイルおよびpassword.txt
ファイルの所有権とアクセスモードを変更し、ssl
ディレクトリ内の他のファイルと同じ制限があることを確認します。