daemon_memcached
如果 MySQL 实例包含敏感数据,则在生产服务器或测试服务器上
部署插件之前请参阅本节
。
由于memcached默认不使用认证机制,可选的SASL认证没有传统DBMS安全措施强,只在使用daemon_memcached
插件的MySQL实例中保留非敏感数据,隔离任何使用此配置的服务器来自潜在的入侵者。不允许memcached从 Internet 访问这些服务器;只允许从有防火墙的内部网访问,最好是从您可以限制成员资格的子网访问。
SASL 支持提供了保护您的 MySQL 数据库免受通过
memcached客户端未经身份验证的访问的能力。本节介绍如何使用daemon_memcached
插件启用 SASL。这些步骤几乎与为传统memcached
服务器启用 SASL 所执行的步骤相同。
SASL 代表“简单身份验证和安全层”,这是一种为基于连接的协议添加身份验证支持的标准。memcached在版本 1.4.3 中添加了 SASL 支持。
SASL 身份验证仅支持二进制协议。
memcached客户端只能访问
InnoDB
在表中注册的
innodb_memcache.containers
表。即使 DBA 可以对此类表进行访问限制,也无法控制通过memcached应用程序进行的访问。为此,提供了 SASL 支持来控制对插件
InnoDB
关联的表的daemon_memcached
以下部分展示了如何构建、启用和测试支持 SASL 的daemon_memcached
插件。
默认情况下,启用 SASL 的daemon_memcached
插件不包含在 MySQL 发布包中,因为启用 SASL 的插件需要使用 SASL 库daemon_memcached
构建memcached 。要启用 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选项 来 构建
daemon_memcached
具有 SASL 功能的插件共享库 。memcached还提供简单的明文密码支持,这有助于测试。要启用简单的明文密码支持,请指定cmake选项。ENABLE_MEMCACHED_SASL=1
ENABLE_MEMCACHED_SASL_PWDB=1
总之,添加以下三个cmake 选项:
cmake ... -DWITH_INNODB_MEMCACHED=1 -DENABLE_MEMCACHED_SASL=1 -DENABLE_MEMCACHED_SASL_PWDB=1
安装
daemon_memcached
插件,如第 14.21.3 节“设置 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 选项 重新启动 MySQL 服务器来启用 SASL :
-S
daemon_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 身份验证,但上述方法是最直接的。