cassandra权威指南读书笔记--安全
认证和授权
driver,JMX和cassandra服务器支持SSL/TLS,cassandra节点间也支持SSL/TLS.
密码认证器
cassandra还支持自定义,可插拔的认证机制。
默认的认证器:org.apache.cassandra.auth.AllowAllAuthenticator
密码认证:org.apache.cassandra.auth.PasswordAuthenticator
配置在cassandra.yaml 的authenticator,cassandra 2.2及以后的版本,就得带上CassandraRoleManager.
Cassandra还通过IInternodeAuthenticator接口实现节点之间的可插拔认证机制(默认是AllowAllInternodeAuthenticator,不需要任何认证)
配置cqlsh自动登录
在安装主目录下创建一个名为.cqlshrc的文件。通过以下类似代码输入登录凭证:
;Sample ~/.cqlshrc file.
[authentication]
username = xxxxx
password = xxxxx
确保文件安全
可以在cqlsh中使用login切换用户
cassandra@cqlsh> login username 'password'
username@cqlsh>
也可不输入密码,shell会提示,然后隐藏输入。所有的输入都会保存在.cassandra/cqlsh_history
客户端驱动认证
客户端认证需要实现com.datastax.driver.core.AuthProvider接口。默认实现是PlainTextAuthProvider。调用Cluster.Builder.withCredentials()时会注册PlainTextAuthProvider的实例。
授权
默认授权:org.apache.cassandra.auth.AllowAllAuthorizer
基于角色的访问控制:org.apache.cassandra.auth.CassandraAuthorizer
配置在cassandra.yaml 的authorizer
同样是可插拔的
cassandra支持给某个用户赋予另一个用户的所有权限:grant xxx to xxx
cassandra把用户和角色存储在system_auth中.
加密
3.0开始,才支持客户端与服务器的加密,以及服务器之间的加密来保护数据安全。
cassandra使用TLS(Transport Layer Security)对传输数据加密。TLS是一种加密协议,保护通信安全,防窃听和篡改。TLS使用非对称加密(公钥私钥,密钥交换算法)。
客户端发送自己支持的密码套件,服务器选择一个生成对称密钥,用于通信。
可以自签名证书配置在服务器客户端(公私钥)。
cassandra提供密钥库和密钥对的密码配置,还提供LDAP(LightWeight Directory Access Protocol)
一般默认安全的配置就够了,有需要看官方文档。
JMX安全性
默认只开启本机访问。
修改cassandra-env.sh,把LOCAL_JMX设置为yes,添加
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl=false"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=xxx"
jmxremote.access 可以配置权限,比如读写MBean权限
xxx readonly
xxx readwrite \
create javax.management.monitor.*,javax.management.timer.* \
修改完重启cassandra
SSL配置
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl=true"
JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStore=xxx"
JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStorePassword=xxx"
JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.trustStore=xxx"
JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.trustStorePassword=xxx"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl.need.client.auth=true"
PermissionsCacheMBean
默认,cassandra会缓存角色和权限相关信息。缓存配置在cassandra.yaml 的permission_validity_in_ms,默认2秒。PermissionsCacheMBean允许你覆盖这个值,另外还提供一个命令取消缓存中的所有权限(当改变集群中的权限时,想要立即生效,就可以这样清除缓存)
最新文章
- UVa 1391 Astronauts (2SAT)
- Android之ADB指令
- 每天一个linux命令(38):vmstat命令
- linq的简单查询 和 组合查询
- C#.Net 如何动态加载与卸载程序集(.dll或者.exe)1----C#中动态加载和卸载DLL
- 把硬盘格式化成ext格式的cpu占用率就下来了
- 2014.6.14模拟赛【bzoj1592】[Usaco2008 Feb]Making the Grade 路面修整
- 将DataTable 数据插入 SQL SERVER 数据库
- 23.Django基础
- Jvm虚拟机结构与机制
- echarts折线图
- 浅谈SFTP和FTP的区别
- logback-spring.xml 博客分享
- 笔记 : win8系统中的VM虚拟机的Ubuntu搭建samba服务
- Spark核心RDD:combineByKey函数详解
- jquery 事件委托(利用冒泡)
- C#------如何使用Swagger调试接口
- C#Delegate.Invoke、Delegate.BeginInvoke And Control.Invoke、Control.BeginInvoke
- 浅谈ASP.NET ---- 系列文章
- ZOJ 3687 The Review Plan I 容斥原理