InnoDB内存缓存插件的安全注意事项
警告如果将
daemon_memcached
插件部署在生产服务器上,或者如果MySQL实例包含敏感数据,则在测试服务器上部署插件之前,请查阅本节。
由于默认情况下memcached不使用身份验证机制,并且可选的SASL身份验证不如传统的DBMS安全措施那么强,因此仅将非敏感数据保留在使用该daemon_memcached
插件的MySQL实例中,并关闭所有使用此配置的服务器来自潜在的入侵者。不允许通过内存缓存从Internet访问这些服务器;仅允许从受防火墙保护的Intranet内部访问,最好是允许从其成员可以限制的子网访问。
使用SASL的密码保护memcached
SASL支持提供了保护您的MySQL数据库免受通过memcached客户端未经身份验证的访问的功能。本节说明如何使用daemon_memcached
插件启用SASL 。这些步骤几乎与为传统的内存缓存服务器启用SASL所执行的步骤相同。
SASL代表“简单身份验证和安全层”,该标准是向基于连接的协议添加身份验证支持的标准。memcached在1.4.3版中添加了SASL支持。
仅二进制协议支持SASL身份验证。
Memcached客户端只能访问在InnoDB
表中注册的innodb_memcache.containers
表。即使DBA可以在此类表上设置访问限制,也无法控制通过内存缓存的应用程序进行的访问。因此,提供了SASL支持来控制对InnoDB
与daemon_memcached
插件关联的表的访问。
以下部分显示了如何构建,启用和测试启用了SASL的daemon_memcached
插件。
使用InnoDB memcached插件构建和启用SASL
默认情况下,启用daemon_memcached
MySQL的插件不包含在MySQL发行包中,因为启用SASL的daemon_memcached
插件需要使用SASL库构建内存缓存。要启用SASL支持,请下载MySQL源并daemon_memcached
在下载SASL库后重建插件:
安装SASL开发和实用程序库。例如,在Ubuntu上,使用apt-get获取库:
sudo apt-get -f install libsasl2-2 sasl2-bin libsasl2-2 libsasl2-dev libsasl2-modules
daemon_memcached
通过添加ENABLE_MEMCACHED_SASL=1
到您的cmake选项来构建具有SASL功能的插件共享库。memcached还提供简单的明文密码支持,从而简化了测试。要启用简单的明文密码支持,请指定ENABLE_MEMCACHED_SASL_PWDB=1
cmake选项。总之,添加以下三个cmake选项:
cmake ... -DWITH_INNODB_MEMCACHED=1 -DENABLE_MEMCACHED_SASL=1 -DENABLE_MEMCACHED_SASL_PWDB=1
daemon_memcached
按照“设置InnoDB memcached插件”中所述安装插件。配置用户名和密码文件。(此示例使用memcached简单明文密码支持。)
在文件中,创建一个名为的用户
testname
,并将密码定义为testpasswd
:echo "testname:testpasswd:::::::" >/home/jy/memcached-sasl-db
配置
MEMCACHED_SASL_PWDB
环境变量以通知memcached
用户名和密码文件: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
通过使用配置参数中编码的memcached
-S
选项重新启动MySQL服务器,以启用SASLdaemon_memcached_option
:mysqld ... --daemon_memcached_option="-S"
要测试设置,请使用启用SASL的客户端,例如启用SASL的libmemcached。
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身份验证,但是上述方法最简单。