• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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支持来控制对InnoDBdaemon_memcached插件关联的表的访问。

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

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

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

    1. 安装SASL开发和实用程序库。例如,在Ubuntu上,使用apt-get获取库:

      sudo apt-get -f install libsasl2-2 sasl2-bin libsasl2-2 libsasl2-dev libsasl2-modules
      
    2. daemon_memcached通过添加ENABLE_MEMCACHED_SASL=1到您的cmake选项来构建具有SASL功能的插件共享库。memcached还提供简单的明文密码支持,从而简化了测试。要启用简单的明文密码支持,请指定ENABLE_MEMCACHED_SASL_PWDB=1cmake选项。

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

      cmake ... -DWITH_INNODB_MEMCACHED=1 -DENABLE_MEMCACHED_SASL=1 -DENABLE_MEMCACHED_SASL_PWDB=1
      
    3. daemon_memcached按照“设置InnoDB memcached插件”中所述安装插件。
    4. 配置用户名和密码文件。(此示例使用memcached简单明文密码支持。)

      1. 在文件中,创建一个名为的用户testname,并将密码定义为testpasswd

        echo "testname:testpasswd:::::::" >/home/jy/memcached-sasl-db
        
      2. 配置MEMCACHED_SASL_PWDB环境变量以通知memcached用户名和密码文件:

        export MEMCACHED_SASL_PWDB=/home/jy/memcached-sasl-db
        
      3. 通知memcached使用明文密码:

        echo "mech_list: plain" > /home/jy/work2/msasl/clients/memcached.conf
        export SASL_CONF_PATH=/home/jy/work2/msasl/clients
        
    5. 通过使用配置参数中编码的memcached-S选项重新启动MySQL服务器,以启用SASL daemon_memcached_option

      mysqld ... --daemon_memcached_option="-S"
      
    6. 要测试设置,请使用启用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身份验证,但是上述方法最简单。