本番サーバー、または MySQL インスタンスに機密データが含まれている場合はテストサーバーに daemon_memcached
プラグインをデプロイする前に、このセクションを参照してください。
memcached ではデフォルトで認証メカニズムが使用されず、オプションの SASL 認証は従来の DBMS セキュリティ対策ほど強力ではないため、daemon_memcached
プラグインを使用する MySQL インスタンス内の機密性のないデータのみを保持し、潜在的な侵入者からこの構成を使用するすべてのサーバーからウォールオフにします。 インターネットからこれらのサーバーへの 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
プラグインを構築、有効化、およびテストする方法を示します。
SASL 対応の daemon_memcached
プラグインでは SASL ライブラリを使用して memcached を構築する必要があるため、デフォルトでは、SASL 対応の daemon_memcached
プラグインは MySQL リリースパッケージに含まれていません。 SASL サポートを有効にするには、MySQL ソースをダウンロードし、SASL ライブラリのダウンロード後に daemon_memcached
プラグインを再構築します:
-
SASL 開発およびユーティリティライブラリをインストールします。 たとえば、Ubuntu では、apt-get を使用してライブラリを取得します:
sudo apt-get -f install libsasl2-2 sasl2-bin libsasl2-2 libsasl2-dev libsasl2-modules
-
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
セクション15.20.3「InnoDB memcached プラグインの設定」 の説明に従って、
daemon_memcached
プラグインをインストールします。-
ユーザー名とパスワードファイルを構成します。 (この例では、memcached の簡易クリアテキストパスワードサポートを使用します。)
-
ファイルで、
testname
という名前のユーザーを作成し、パスワードをtestpasswd
として定義します:echo "testname:testpasswd:::::::" >/home/jy/memcached-sasl-db
-
memcached
にユーザー名とパスワードファイルを通知するように、MEMCACHED_SASL_PWDB
環境変数を構成します:export MEMCACHED_SASL_PWDB=/home/jy/memcached-sasl-db
-
クリアテキストパスワードが使用されていることを
memcached
に通知します:echo "mech_list: plain" > /home/jy/work2/msasl/clients/memcached.conf export SASL_CONF_PATH=/home/jy/work2/msasl/clients
-
-
daemon_memcached_option
構成パラメータでエンコードされた memcached-S
オプションを使用して MySQL サーバーを再起動し、SASL を有効にします:mysqld ... --daemon_memcached_option="-S"
-
設定をテストするには、「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 認証をテストする方法は他にもありますが、前述の方法は最も簡単です。