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


MySQL 8.0 リファレンスマニュアル  /  ...  /  keyring_aws Amazon Web Services キーリングプラグインの使用

6.4.4.5 keyring_aws Amazon Web Services キーリングプラグインの使用

注記

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

keyring_aws キーリングプラグインは、キー生成のバックエンドとして Amazon Web Services Key Management Service (AWS KMS) と通信し、キーの格納にローカルファイルを使用します。 すべてのキーリングデータは、AWS サーバーによってのみ生成され、keyring_aws によっては生成されません。

keyring_aws は、次のプラットフォームで使用できます:

  • EL7

  • macOS 10.13 および 10.14

  • SLES 12

  • Ubuntu 14.04 および 16.04

  • Windows

ここでの説明は、AWS 全般および KMS に精通していることを前提としています。 いくつかの関連情報ソース:

次の各セクションでは、keyring_aws キープラグインの構成および使用方法について説明します:

keyring_aws 構成

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

プラグインライブラリファイルには、keyring_aws プラグインと、keyring_aws_rotate_cmk() および keyring_aws_rotate_keys() の 2 つのユーザー定義関数 (UDF) が含まれます。

keyring_aws を構成するには、AWS KMS と通信するための資格証明を提供する秘密アクセスキーを取得し、それを構成ファイルに書き込む必要があります:

  1. AWS KMS アカウントを作成します。

  2. AWS KMS を使用して、秘密アクセスキー ID および秘密アクセスキーを作成します。 アクセスキーは、アイデンティティおよびアプリケーションのアイデンティティを検証するために機能します。

  3. AWS KMS アカウントを使用して、顧客マスターキー (CMK) ID を作成します。 MySQL の起動時に、keyring_aws_cmk_id システム変数を CMK ID 値に設定します。 この変数は必須であり、デフォルトはありません。 (この値は、必要に応じて SET GLOBAL を使用して実行時に変更できます。)

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

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

    MySQL の起動時に、keyring_aws_conf_file システム変数を/usr/local/mysql/mysql-keyring/keyring_aws_conf に設定して、構成ファイルの場所をサーバーに示します。

  5. 次の 2 つの行を含む keyring_aws 構成ファイルを準備します:

    • 明細 1: 秘密アクセスキー ID

    • 明細 2: 秘密アクセスキー

    たとえば、キー ID が wwwwwwwwwwwwwEXAMPLE で、キーが xxxxxxxxxxxxx/yyyyyyy/zzzzzzzzEXAMPLEKEY の場合、構成ファイルは次のようになります:

    wwwwwwwwwwwwwEXAMPLE
    xxxxxxxxxxxxx/yyyyyyy/zzzzzzzzEXAMPLEKEY

サーバーの起動プロセス中に使用できるようにするには、--early-plugin-load オプションを使用して keyring_aws をロードする必要があります。 keyring_aws_cmk_id システム変数は必須であり、AWS KMS サーバーから取得した顧客マスターキー (CMK) ID を構成します。 keyring_aws_conf_file および keyring_aws_data_file システム変数は、オプションで、keyring_aws プラグインが構成情報およびデータ記憶域に使用するファイルの場所を構成します。 ファイルの場所変数のデフォルト値はプラットフォーム固有です。 場所を明示的に構成するには、起動時に変数値を設定します。 たとえば、サーバー my.cnf ファイルで次の行を使用して、プラットフォームの .so 接尾辞とファイルの場所を必要に応じて調整します:

[mysqld]
early-plugin-load=keyring_aws.so
keyring_aws_cmk_id='arn:aws:kms:us-west-2:111122223333:key/abcd1234-ef56-ab12-cd34-ef56abcd1234'
keyring_aws_conf_file=/usr/local/mysql/mysql-keyring/keyring_aws_conf
keyring_aws_data_file=/usr/local/mysql/mysql-keyring/keyring_aws_data

keyring_aws プラグインを正常に起動するには、構成ファイルが存在し、前述のように初期化された有効な秘密アクセスキー情報が含まれている必要があります。 ストレージファイルが存在する必要はありません。 そうでない場合、keyring_aws はそれを (必要に応じて親ディレクトリとともに) 作成しようとします。

keyring_aws プラグインの構成に使用されるシステム変数の詳細は、セクション6.4.4.13「キーリングシステム変数」 を参照してください。

MySQL サーバーを起動し、keyring_aws プラグインに関連付けられた UDF をインストールします。 これはワンタイム操作で、次のステートメントを実行して、プラットフォームの .so 接尾辞を必要に応じて調整します:

CREATE FUNCTION keyring_aws_rotate_cmk RETURNS INTEGER
  SONAME 'keyring_aws.so';
CREATE FUNCTION keyring_aws_rotate_keys RETURNS INTEGER
  SONAME 'keyring_aws.so';

keyring_aws UDF の詳細は、セクション6.4.4.11「プラグイン固有のキーリングキー管理関数」 を参照してください。

keyring_aws 操作

プラグインの起動時に、keyring_aws プラグインは AWS 秘密アクセスキー ID とキーをその構成ファイルから読み取ります。 また、記憶域ファイルに含まれる暗号化されたキーをメモリー内キャッシュに読み取ります。

操作中、keyring_aws は暗号化されたキーをインメモリーキャッシュに保持し、記憶域ファイルをローカル永続記憶域として使用します。 各キーリング操作はトランザクション型です: keyring_aws では、メモリー内キーキャッシュとキーリングストレージファイルの両方が正常に変更されるか、操作が失敗してキーリングの状態は変更されません。

正しい鍵リングストレージファイルが存在する場合にのみ鍵が確実にフラッシュされるように、keyring_aws は鍵リングの SHA-256 チェックサムをファイルに格納します。 ファイルを更新する前に、プラグインは、予想されるチェックサムが含まれていることを確認します。

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

例 (UDF を使用):

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

また、keyring_aws_rotate_cmk() および keyring_aws_rotate_keys() UDF は、標準のキーリングサービスインタフェースでカバーされていない AWS 関連の機能を提供するために、キーリングプラグインインタフェースを extend に提供します。 これらの機能には、UDF を呼び出すことによってのみアクセスできます。 対応する C 言語キーサービス関数はありません。

keyring_aws で許可されるキータイプの詳細は、セクション6.4.4.8「サポートされているキーリングキーのタイプと長さ」 を参照してください。

keyring_aws 資格証明の変更

keyring_aws プラグインがサーバーの起動時に適切に初期化されていると仮定すると、AWS KMS との通信に使用される資格証明を変更できます:

  1. AWS KMS を使用して、新しい秘密アクセスキー ID および秘密アクセスキーを作成します。

  2. 新しい資格証明を構成ファイル (keyring_aws_conf_file システム変数で指定されたファイル) に格納します。 ファイル形式は前述のとおりです。

  3. keyring_aws プラグインを再初期化して、構成ファイルを再読み込みします。 新しい資格証明が有効であると仮定すると、プラグインは正常に初期化されます。

    プラグインを再初期化するには、2 つの方法があります:

    • サーバーを再起動します。 これは単純で副作用はありませんが、できるだけ再起動が少ないサーバーの停止時間を最小限に抑えるインストールには適していません。

    • 次のステートメントを実行して、必要に応じてプラットフォームの .so 接尾辞を調整し、サーバーを再起動せずにプラグインを再初期化します:

      UNINSTALL PLUGIN keyring_aws;
      INSTALL PLUGIN keyring_aws SONAME 'keyring_aws.so';
      注記

      INSTALL PLUGIN では、実行時にプラグインをロードするだけでなく、プラグインを mysql.plugin システムテーブルに登録するという副作用もあります。 このため、keyring_aws の使用を停止する場合は、サーバーの起動に使用される一連のオプションから --early-plugin-load オプションを削除するだけでは不十分です。 これにより、プラグインの早期ロードは停止されますが、サーバーは、mysql.plugin に登録されているプラグインをロードする起動シーケンス内のポイントに到達したときに、プラグインのロードを試行します。

      したがって、AWS KMS 資格証明を変更するために説明した UNINSTALL PLUGININSTALL PLUGIN の順序を実行した場合、keyring_aws の使用を停止するには、--early-plugin-load オプションの削除に加えて、UNINSTALL PLUGIN を再度実行してプラグインを登録解除する必要があります。


関連キーワード:  keyring, キー, 構成, 変数, サーバー, 関数, インストール, 認証, アクセス, パスワード