启用MemCached的SASL认证
MemCached从1.4.3版本开始,能支持SASL认证。比较适合多个应用共用一个MemCached集群,需要在编译时,加上–enable-sasl选项。
启动memcached时,增加-S的选项
“
./configure –prefix=%{datadir} –enable-sasl
/usr/local/bin/memcached -S -d -u nobody
”
SASL认证也可以有很多种认证机制,比如pam,shadow,ldap等
下面配置成使用shadow方式去认证
“
#修改/etc/sysconfig/saslauthd文件
MECH=shadow
#设置用户的SASL认证密码
saslpasswd2 -c -a memcached memuser
#最终生成的DB文件在/etc/下
-rw-r—– 1 root root 12288 Mar 6 11:52 /etc/sasldb2
#可以查看当前的SASL用户
sasldblistusers2
”
下面配置成通过pam-mysql使用mysql数据库的方式去认证
“
#首先安装pam-mysql
wget "http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz"
./configure –with-mysql=/opt/apps_install/mysql-5.5.17
make & make install
#增加一个软链接
ln -s /lib/security/pam_mysql.so /lib64/security/pam_mysql.so
#修改saslauthd配置
MECH=pam
#编辑pam.d的memcached配置
auth sufficient pam_mysql.so user=sasl passwd=saslpwd host=xxx db=dbname table=t_app_info usercolumn=appid passwdcolumn=secret crypt=0 sqllog=1 verbose=1
account required pam_mysql.so user=sasl passwd=saslpwd host=xxx db=dbname table=t_app_info usercolumn=appid passwdcolumn=secret crypt=0 sqllog=1 verbose=1
#新增加memcached的配置文件/etc/sasl2/memcached.conf
pwcheck_method: saslauthd
#重启saslauthd
/etc/init.d/saslauthd restart
#测试saslauthd认证已经成功
/usr/sbin/testsaslauthd -s /etc/pam.d/memcached -u 10000 -p pwd
0: OK "Success."
”
memcached的java client,如spymemcached和xmemcached都已经支持SASL认证了
“
#xmemcached认证示例
MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("10.x.xx.xx:11211"));
builder.addAuthInfo(AddrUtil.getOneAddress("10.x.xx.xx:11211"), AuthInfo.plain("10000", "pwd"));
builder.setCommandFactory(new BinaryCommandFactory());
client=builder.build();
String v = client.get("test2");
”
python版本的pylibmc也支持SASL认证