7. 连接到 Cassandra 的认证设定¶
在此,对于连接到 Cassandra 时,通过连接用户名以及密码来进行认证设定的方法进行介绍。警告
进行了连接认证设定时,需要在安装 intra-mart Accel Platform 时设定认证信息。详细信息请参照“ 安装指南 - Apache Cassandra (使用IMBox时)(日文) ”。 构筑由多台 Cassandra 构成的集群时,需要对全部节点进行设定。
项目
7.1. 取得和展开认证库¶
获得全部 Cassandra 用的认证库。可通过下述URL下载认证库。在任意路径展开所获得的文件。
7.2. 配置库和设定文件¶
展开全部认证库,即成为存放的文件。
./lib/cassandra_simple_auth-1.0.0.jar
存放了连接认证以及访问控制实现类的库文件。./conf/passwd.properties
用于记述在连接认证中需要的连接用户名和密码的设定文件。./conf/access.properties
用于记述每位连接用户的访问权控制设定的设定文件。将各个文件复制到与%CASSANDRA_HOME%内相对路径相应的目录。将 ./lib/cassandra_simple_auth-1.0.0.jar 复制到 <%CASSANDRA_HOME%/lib/>将 ./conf/passwd.properties 复制到 <%CASSANDRA_HOME%/conf/>将 ./conf/access.properties 复制到 <%CASSANDRA_HOME%/conf/>
7.3. 变更使用的认证类¶
在编辑器中打开<%CASSANDRA_HOME%/conf/cassandra.yaml>文件。Cassandra 标准设定中,设定了下述连接认证以及访问控制类。# authentication backend, implementing IAuthenticator; used to identify users authenticator: org.apache.cassandra.auth.AllowAllAuthenticator # authorization backend, implementing IAuthority; used to limit access/provide permissions authority: org.apache.cassandra.auth.AllowAllAuthority标准设定中,如名称Allow All的意思一样,不进行连接认证和访问控制,许可全部连接。如下所述进行修正,指定所下载认证库内的类。# authentication backend, implementing IAuthenticator; used to identify users # authenticator: org.apache.cassandra.auth.AllowAllAuthenticator authenticator: org.apache.cassandra.auth.SimpleAuthenticator # authorization backend, implementing IAuthority; used to limit access/provide permissions # authority: org.apache.cassandra.auth.AllowAllAuthority authority: org.apache.cassandra.auth.SimpleAuthority这样就能替换连接认证以及访问控制类的实现。警告
本公司网站所提供的认证库内的 SimpleAuthority 对于 Cassandra 所提供的示例实现进行了定制,可通过**access.properties**来批量设定对键空间内全列族的访问权。
7.4. 认证设定的添加¶
对于在上一段替换的实现类,需要在启动参数中指定设定文件 access.properties 和 passwd.properties 的路径。在此,对每种OS的启动参数的设定方法进行说明。
7.4.1. for Windows¶
在编辑器中打开<%CASSANDRA_HOME%/bin/cassandra.bat>文件。参考下述示例,补记 access.properties 和 passwd.properties 属性。补记前... -XX:+UseCMSInitiatingOccupancyOnly^ -Dcom.sun.management.jmxremote.port=7199^ ...补记后... -XX:+UseCMSInitiatingOccupancyOnly^ -Daccess.properties=%CASSANDRA_HOME%/conf/access.properties^ -Dpasswd.properties=%CASSANDRA_HOME%/conf/passwd.properties^ -Dcom.sun.management.jmxremote.port=7199^ ...
7.4.2. for Linux¶
在编辑器中打开</usr/local/cassandra/conf/cassandra-env.sh>文件。参考下述示例,补记 access.properties 和 passwd.properties 。补记前... # Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See # http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: # comment out this entry to enable IPv6 support). JVM_OPTS="$JVM_OPTS -Djava.net.preferIPv4Stack=true" # jmx: metrics and administration interface ...补记后... # Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See # http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: # comment out this entry to enable IPv6 support). JVM_OPTS="$JVM_OPTS -Djava.net.preferIPv4Stack=true" # set authentication parameter properties path. JVM_OPTS="$JVM_OPTS -Daccess.properties=$CASSANDRA_HOME/conf/access.properties" JVM_OPTS="$JVM_OPTS -Dpasswd.properties=$CASSANDRA_HOME/conf/passwd.properties" # jmx: metrics and administration interface ...警告
构筑集群并在多个Cassandra上将认证设为有效时,需要在集群内的全部节点使用相同设定。 各个集群有着自己的认证设定的有效/无效设定,所以同一集群内的全部键空间是认证设定的对象。 将认证设定设为有效时,可为每个键空间变更连接用户名及密码。
7.5. 设定文件解说¶
在此,对设定文件的设定值进行说明。
7.5.1. 连接认证设定 (passwd.properties)¶
标准 passwd.properties 中,设定了假设是管理员的 admin 和只进行参照操作的用户 user 。下面是省略了备注行的设定值。admin=admin_pwd user=user_pwd设定值的格式是“%连接用户名%=%密码%”。
7.5.2. 访问权设定 (access.properties)¶
设定值的格式是“%访问权%=%连接用户名%”。访问权中定义了下述3个内容。
键空间的编辑权限
<modify-keyspaces> : 可生成/删除键空间的权限。警告
Apache Cassandra 1.1.12中无法使用modify-keyspaces。键空间的访问权限
键空间名.<rw> : 只可浏览及变更键空间内列族的权限。键空间名.<ro> : 只可浏览键空间内列族的权限。访问键空间内列族的权限
键空间名.列族名.<rw> : 只可浏览及变更键空间内特定列族内数据的权限。键空间名.列族名.<ro> : 只可浏览键空间内特定列族内数据的权限。通过在 列族名 中指定 *,可指定全列族。由于在今后的功能扩展中有添加列族的可能性,请为在cassandra-cnofig.xml记述的连接用户设定全列族的变更权限。标准的 access.properties 中为 passwd.properties 中指定的各用户设定了下述权限。admin
- 键空间编辑权限
- default键空间的Read&Write权限
- default键空间全列族的Read&Write权限
user
- default键空间的ReadOnly权限
- default键空间内全列族的ReadOnly权限
下面是省略了部分备注行的设定值。# The magical '<modify-keyspaces>' property lists users who can modify the # list of keyspaces: all users will be able to view the list of keyspaces. <modify-keyspaces>=admin # Access to Keyspace 'default' default.<rw>=admin default.<ro>=user # Access to all ColumnFamily default.*.<rw>=admin default.*.<ro>=user警告
使用intra-mart Accel Platform 2014 Spring(Granada) 之前的版本时
cassandra-config.xml中设定的连接用户需要持有全部变更权限。 编辑cassandra-config.xml变更了键空间名时,以及进行在多个键空间上的运行时,请变更对键空间以及键空间内列族的访问权的设定值。使用intra-mart Accel Platform 2014 Spring(Granada) 之后的版本时
安装Tenant环境时设定的Cassandra连接信息的认证用户名需要持有全部变更权限。 编辑cassandra-config.xml变更了键空间名时,以及进行在多个键空间上的运行时,请变更对键空间以及键空间内列族的访问权的设定值。
7.6. 连接认证的确认方法¶
确认连接到 Cassandra 时需要认证。在此,假想进行的是通过标准设定文件进行认证设定。
启动 Cassandra 。
确认 Cassandra 已启动,并启动cassandra-cli。
OS是Windows时,双击<%CASSANDRA_HOME%/bin/cassandra-cli.bat>。
OS是Linux时,使用下述命令启动。
/usr/local/cassandra/bin/cassandra-cli启动控制台后,请输入下述命令。
connect localhost/9160;由于未指定认证信息,会输出下述消息且连接会失败。Login failure. Did you specify 'keyspace', 'username' and 'password'?连接到本地环境的 Cassandra 时,在cassandra-cli启动时也会输出上述消息。输入下述命令,结束cassandra-cli。。
quit;接下来,指定认证信息并启动cassandra-cli。
OS是Windows时,启动命令提示,并执行下述命令。
%CASSANDRA_HOME%/bin/cassandra-cli -u admin -pw admin_pwdOS是Linux时,使用下述命令启动。
/usr/local/cassandra/bin/cassandra-cli -u admin -pw admin_pwd注解
-u 是指定连接用户名的参数。-pw 是指定密码的参数。启动控制台后,请输入下述命令。
connect localhost/9160;会显示下述消息,可确认连接已成功。Connected to: "IMBox Cluster" on localhost/9160警告
通过 intra-mart Accel Platform 2014 Spring(Granada) 使用连接认证时,需要事先创建键空间