Consult this section before deploying thedaemon_memcached
plugin on a production server, or even on a test server if the MySQL instance contains sensitive data.
Becausememcacheddoes not use an authentication mechanism by default, and the optional SASL authentication is not as strong as traditional DBMS security measures, only keep non-sensitive data in the MySQL instance that uses thedaemon_memcached
plugin, and wall off any servers that use this configuration from potential intruders. Do not allowmemcachedaccess to these servers from the Internet; only allow access from within a firewalled intranet, ideally from a subnet whose membership you can restrict.
SASL support provides the capability to protect your MySQL database from unauthenticated access throughmemcachedclients. This section explains how to enable SASL with thedaemon_memcached
plugin. The steps are almost identical to those performed to enabled SASL for a traditionalmemcachedserver.
SASL stands for“Simple Authentication and Security Layer”, a standard for adding authentication support to connection-based protocols.memcachedadded SASL support in version 1.4.3.
SASL authentication is only supported with the binary protocol.
memcachedclients are only able to accessInnoDB
tables that are registered in theinnodb_memcache.containers
table. Even though a DBA can place access restrictions on such tables, access throughmemcachedapplications cannot be controlled. For this reason, SASL support is provided to control access toInnoDB
tables associated with thedaemon_memcached
plugin.
The following section shows how to build, enable, and test an SASL-enableddaemon_memcached
plugin.
By default, an SASL-enableddaemon_memcached
plugin is not included in MySQL release packages, since an SASL-enableddaemon_memcached
plugin requires buildingmemcachedwith SASL libraries. To enable SASL support, download the MySQL source and rebuild thedaemon_memcached
plugin after downloading the SASL libraries:
Install the SASL development and utility libraries. For example, on Ubuntu, useapt-getto obtain the libraries:
sudo apt-get -f install libsasl2-2 sasl2-bin libsasl2-2 libsasl2-dev libsasl2-modules
Build the
daemon_memcached
plugin shared libraries with SASL capability by addingENABLE_MEMCACHED_SASL=1
to yourcmakeoptions.memcachedalso providessimple cleartext password support, which facilitates testing. To enable simple cleartext password support, specify theENABLE_MEMCACHED_SASL_PWDB=1
cmakeoption.In summary, add following threecmakeoptions:
cmake ... -DWITH_INNODB_MEMCACHED=1 -DENABLE_MEMCACHED_SASL=1 -DENABLE_MEMCACHED_SASL_PWDB=1
Install the
daemon_memcached
plugin, as described inSection 15.20.3, “Setting Up the InnoDB memcached Plugin”.Configure a user name and password file. (This example usesmemcachedsimple cleartext password support.)
In a file, create a user named
testname
and define the password astestpasswd
:echo "testname:testpasswd:::::::" >/home/jy/memcached-sasl-db
Configure the
MEMCACHED_SASL_PWDB
environment variable to informmemcached
of the user name and password file:export MEMCACHED_SASL_PWDB=/home/jy/memcached-sasl-db
Inform
memcached
that a cleartext password is used:echo "mech_list: plain" > /home/jy/work2/msasl/clients/memcached.conf export SASL_CONF_PATH=/home/jy/work2/msasl/clients
使SASL通过重启ing the MySQL server with thememcached
-S
option encoded in thedaemon_memcached_option
configuration parameter:mysqld ... --daemon_memcached_option="-S"
To test the setup, use an SASL-enabled client such asSASL-enabled libmemcached.
memcp --servers=localhost:11211 --binary --username=testname --password=passwordmyfile.txt memcat --servers=localhost:11211 --binary --username=testname --password=passwordmyfile.txt
If you specify an incorrect user name or password, the operation is rejected with a
memcache error AUTHENTICATION FAILURE
message. In this case, examine the cleartext password set in thememcached-sasl-db
file to verify that the credentials you supplied are correct.
There are other methods to test SASL authentication withmemcached, but the method described above is the most straightforward.