啟用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認證
來自:http://my.oschina.net/u/127806/blog/318190