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


MySQL 8.0 リファレンスマニュアル  /  ...  /  InnoDB memcached プラグインのセキュリティーに関する考慮事項

15.20.5 InnoDB memcached プラグインのセキュリティーに関する考慮事項

注意

本番サーバー、または MySQL インスタンスに機密データが含まれている場合はテストサーバーに daemon_memcached プラグインをデプロイする前に、このセクションを参照してください。

memcached ではデフォルトで認証メカニズムが使用されず、オプションの SASL 認証は従来の DBMS セキュリティ対策ほど強力ではないため、daemon_memcached プラグインを使用する MySQL インスタンス内の機密性のないデータのみを保持し、潜在的な侵入者からこの構成を使用するすべてのサーバーからウォールオフにします。 インターネットからこれらのサーバーへの memcached アクセスを許可しないでください。ファイアウォール付きイントラネット内 (メンバーシップを制限できるサブネットからのみ) からのアクセスを許可してください。

SASL を使用した memcached のパスワード保護

SASL サポートは、memcached クライアントを介した認証されていないアクセスから MySQL データベースを保護する機能を提供します。 このセクションでは、daemon_memcached プラグインを使用して SASL を有効にする方法について説明します。 これらのステップは、従来の memcached サーバーで SASL を有効にするために実行されるステップとほぼ同じです。

SASL は、接続ベースのプロトコルに認証サポートを追加するための標準である「Simple Authentication and Security レイヤー」を表します。memcached は、バージョン 1.4.3 で SASL サポートを追加しました。

SASL 認証はバイナリプロトコルでのみサポートされます。

memcached クライアントは、innodb_memcache.containers テーブルに登録されている InnoDB テーブルにのみアクセスできます。DBA はこのようなテーブルにアクセス制限を設定できますが、memcached アプリケーションを介したアクセスは制御できません。 このため、SASL サポートは、daemon_memcached プラグインに関連付けられた InnoDB テーブルへのアクセスを制御するために提供されます。

次のセクションでは、SASL 対応 daemon_memcached プラグインを構築、有効化、およびテストする方法を示します。

InnoDB memcached プラグインを使用した SASL の構築と有効化

SASL 対応の daemon_memcached プラグインでは SASL ライブラリを使用して memcached を構築する必要があるため、デフォルトでは、SASL 対応の daemon_memcached プラグインは MySQL リリースパッケージに含まれていません。 SASL サポートを有効にするには、MySQL ソースをダウンロードし、SASL ライブラリのダウンロード後に daemon_memcached プラグインを再構築します:

  1. SASL 開発およびユーティリティライブラリをインストールします。 たとえば、Ubuntu では、apt-get を使用してライブラリを取得します:

    sudo apt-get -f install libsasl2-2 sasl2-bin libsasl2-2 libsasl2-dev libsasl2-modules
  2. cmake オプションに ENABLE_MEMCACHED_SASL=1 を追加して、SASL 機能を持つ daemon_memcached プラグイン共有ライブラリを構築します。memcached には、テストを容易にする簡易クリアテキストパスワードのサポートも用意されています。 簡易クリアテキストパスワードサポートを有効にするには、ENABLE_MEMCACHED_SASL_PWDB=1 cmake オプションを指定します。

    要約すると、次の 3 つの cmake オプションを追加します:

    cmake ... -DWITH_INNODB_MEMCACHED=1 -DENABLE_MEMCACHED_SASL=1 -DENABLE_MEMCACHED_SASL_PWDB=1
  3. セクション15.20.3「InnoDB memcached プラグインの設定」 の説明に従って、daemon_memcached プラグインをインストールします。

  4. ユーザー名とパスワードファイルを構成します。 (この例では、memcached の簡易クリアテキストパスワードサポートを使用します。)

    1. ファイルで、testname という名前のユーザーを作成し、パスワードを testpasswd として定義します:

      echo "testname:testpasswd:::::::" >/home/jy/memcached-sasl-db
    2. memcached にユーザー名とパスワードファイルを通知するように、MEMCACHED_SASL_PWDB 環境変数を構成します:

      export MEMCACHED_SASL_PWDB=/home/jy/memcached-sasl-db
    3. クリアテキストパスワードが使用されていることを memcached に通知します:

      echo "mech_list: plain" > /home/jy/work2/msasl/clients/memcached.conf
      export SASL_CONF_PATH=/home/jy/work2/msasl/clients
  5. daemon_memcached_option 構成パラメータでエンコードされた memcached -S オプションを使用して MySQL サーバーを再起動し、SASL を有効にします:

    mysqld ... --daemon_memcached_option="-S"
  6. 設定をテストするには、「SASL 対応 libmemcached」などの SASL 対応クライアントを使用します。

    memcp --servers=localhost:11211 --binary  --username=testname
      --password=password myfile.txt
    
    memcat --servers=localhost:11211 --binary --username=testname
      --password=password myfile.txt

    間違ったユーザー名またはパスワードを指定すると、操作は拒否され、memcache error AUTHENTICATION FAILURE メッセージが表示されます。 この場合、memcached-sasl-db ファイルに設定されているクリアテキストパスワードを調べて、指定した資格証明が正しいことを確認します。

memcached を使用して SASL 認証をテストする方法は他にもありますが、前述の方法は最も簡単です。


関連キーワード:  InnoDB, テーブル, SASL, 構成, 圧縮, スペース, ロック, インデックス, INFORMATION, SCHEMA