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允许你覆盖这个值,另外还提供一个命令取消缓存中的所有权限(当改变集群中的权限时,想要立即生效,就可以这样清除缓存)
cassandra权威指南读书笔记--安全的更多相关文章
- cassandra权威指南读书笔记--客户端
DataStax驱动最成熟.默认,驱动程序会使用第一个连接的节点作为支持的版本协议.如果集群存在高低版本的节点(比如升级场景),如果驱动先连接不同不同版本的节点,可能会出现不兼容.驱动支持压缩客户端和 ...
- cassandra权威指南读书笔记--性能调优
cassandra自带测试工具cassandra-stress.nodetool proxyhistograms可以在多个节点运行,发现最慢的协调节点.nodetool tablehistograms ...
- cassandra权威指南读书笔记--监控&维护
cassandra SLF4J API记录日志,具体采用Logback实现.在终端启动cassandra时,可以向程序输入-f,就能在终端看到这个输出.Java Mangement Extension ...
- cassandra权威指南读书笔记--读写数据
写cassandra除了轻量级事务,不支持别的事务.cassandra是追加写,写的速度非常快.cassandra还有hint日志,这个数据库总是可写的,而且单个列的写操作是原子的.hint并不是一定 ...
- cassandra权威指南读书笔记--配置cassadnra
配置集群时,要求所有节点的集群名,分区器,snitch必须相同.种子节点最好相同. 种子节点:最好每个DC,配置2个,这样即使一个DC中一个种子节点挂了,仍然有一个中子节点可用.种子节点被认为是最先加 ...
- cassandra权威指南读书笔记--Cassandra架构(3)
分阶段事件驱动架构 SEDASEDA(Staged Event-Driven Architecture)的核心思想是把一个请求处理过程分成几个Stage,不同资源消耗的Stage使用不同数量的线程来处 ...
- cassandra权威指南读书笔记--Cassandra架构(2)
环和令牌cassandra的数据管理是用一个环来表示.为环中的每个节点分配一or多个数据范围,用token描述.token由64位整数ID表示,范围-2^(63)~2^(63)-1.使用对分区键进行一 ...
- cassandra权威指南读书笔记--Cassandra架构(1)
结构 集群-->数据中心-->机架-->节点. cassandra尽可能将数据副本存在多个数据中心,然后读取(查询路由到)尽可能在本地数据中心. 为了去中心化和分区容错性,使用gos ...
- cassandra权威指南读书笔记--数据建模
没有join操作.有轻量级事务和批处理,但是没有外键等.反规范化.3.0支持物化视图,允许在一个表上创建数据的多个物化视图.使用cassandra要从查询入手,而不是先从数据模型开始.先对查询建模,然 ...
随机推荐
- mysql数据库限制多次登录失败,限定用户重试时间
前言 最近的项目开始进行安全测试,其中有一个安全问题是这样的. 应该增加用户登录失败处理功能,限制非法登录次数. 建议是增加mysql数据库的登陆失败的锁定功能. 相信大家也都会遇到这样的问题,在这里 ...
- 5.汇编实现裸机LED
首先:操作LED就要操作GPIO alpha的芯片是NXP的IMX6ULL 其GPIO和STM32的命名有所区别 可以看到IMX6ULL的GPIO以其功能进行命名,对应上图中PAD之后的部分 即G ...
- 域名解析 看Cname 信息
CMD 命令: nslookup -q=cname www.yuzhentan.com
- Hadoop伪分布式模式
搭建在单一服务器 基于官方文档 http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SingleCluster ...
- Itranswarp 搭建个人 Wiki
www.swack.cn - 原文链接:Itranswarp 搭建个人 Wiki 从零开始 搭建个人Wiki站点 Itranswarp.js 是一款基于nodejs开发的博客系统,通过Apache L ...
- 【MyBatis】MyBatis 延迟加载策略
MyBatis 延迟加载策略 文章源码 什么是延迟加载 延迟加载,就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据,也被成为懒加载. 好处:先从单表查询,需要时再从关联表去关联查询,大大提 ...
- LeetCode105 从前序和中序序列构造二叉树
题目描述: 根据一棵树的前序遍历与中序遍历构造二叉树. 注意:你可以假设树中没有重复的元素. 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9 ...
- self-taught CS resouce recommendation
https://github.com/keithnull/TeachYourselfCS-CN/blob/master/TeachYourselfCS-CN.md#%E8%AE%A1%E7%AE%97 ...
- ThinkPHP5表单令牌刷新
制作登录页面的时候,加入了表单令牌,账号和密码输入错误后,再登录的话,会提示表单令牌错误, 这是因为旧的令牌已经过期了,我们要处理下前端的token,修复的办法,在路由文件下加入 //刷新表单令牌,然 ...
- kubernets之服务资源
一 服务集群内部或者客户端与pod的通信桥梁 kubernets集群的内部pod访问为啥不能使用传统的IP:PORT的形式? pod是短暂的,它们会随时启动或者关闭,原因可能是pod所在的节点下 ...