14.21.4 InnoDB 内存缓存插件的安全注意事项

Caution

如果将daemon_memcached插件部署到生产服务器或 MySQL 服务器上包含敏感数据的测试服务器上,请查阅本节。

由于 memcached 默认情况下不使用身份验证机制,并且可选的 SASL 身份验证不如传统的 DBMS 安全措施那么强,因此只能将非敏感数据保留在使用daemon_memcached插件的 MySQL 实例中,并关闭所有来自潜在入侵者的使用此配置的服务器。不允许 memcached 从 Internet 访问这些服务器;仅允许从受防火墙保护的 Intranet 内部访问,最好是允许您限制其成员资格的子网的访问。

使用 SASL 保护密码的内存缓存

SASL 支持提供了保护您的 MySQL 数据库免受通过 memcached Client 端未经身份验证的访问的功能。本节说明如何使用daemon_memcached插件启用 SASL。这些步骤几乎与为传统 memcached 服务器启用 SASL 所执行的步骤相同。

SASL 代 table“简单身份验证和安全层”,该标准用于向基于连接的协议添加身份验证支持。 memcached 在 1.4.3 版中添加了 SASL 支持。

仅二进制协议支持 SASL 身份验证。

memcached Client 端只能访问在innodb_memcache.containerstable 中注册的InnoDBtable。即使 DBA 可以在此类 table 上设置访问限制,也无法控制通过 memcached 应用程序的访问。因此,提供了 SASL 支持来控制对与daemon_memcached插件关联的InnoDBtable 的访问。

以下部分显示了如何构建,启用和测试启用了 SASL 的daemon_memcached插件。

使用 InnoDB memcached 插件构建和启用 SASL

默认情况下,MySQL 发行包中不包括启用 SASL 的daemon_memcached插件,因为启用 SASL 的daemon_memcached插件需要使用 SASL 库构建 memcached 。要启用 SASL 支持,请在下载 SASL 库后下载 MySQL 源并重建daemon_memcached插件:

sudo apt-get -f install libsasl2-2 sasl2-bin libsasl2-2 libsasl2-dev libsasl2-modules

总之,添加以下三个 cmake 选项:

cmake ... -DWITH_INNODB_MEMCACHED=1 -DENABLE_MEMCACHED_SASL=1 -DENABLE_MEMCACHED_SASL_PWDB=1
echo "testname:testpasswd:::::::" >/home/jy/memcached-sasl-db
export MEMCACHED_SASL_PWDB=/home/jy/memcached-sasl-db
echo "mech_list: plain" > /home/jy/work2/msasl/clients/memcached.conf
export SASL_CONF_PATH=/home/jy/work2/msasl/clients
mysqld ... --daemon_memcached_option="-S"
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 身份验证,但是上述方法是最简单的方法。

首页