intra-mart Accel Platform / Cassandra管理员指南

第8版 2014-04-01

«  6. Cassandra 的集群构筑   ::   Contents   ::   8. Cassandra 的操作  »

7. 连接到 Cassandra 的认证设定

在此,对于连接到 Cassandra 时,通过连接用户名以及密码来进行认证设定的方法进行介绍。

警告

7.1. 取得和展开认证库

获得全部 Cassandra 用的认证库。
可通过下述URL下载认证库。
在任意路径展开所获得的文件。

7.2. 配置库和设定文件

展开全部认证库,即成为存放的文件。
  1. ./lib/cassandra_simple_auth-1.0.0.jar

    存放了连接认证以及访问控制实现类的库文件。
  2. ./conf/passwd.properties

    用于记述在连接认证中需要的连接用户名和密码的设定文件。
  3. ./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.propertiespasswd.properties 的路径。
在此,对每种OS的启动参数的设定方法进行说明。

7.4.1. for Windows

在编辑器中打开<%CASSANDRA_HOME%/bin/cassandra.bat>文件。
参考下述示例,补记 access.propertiespasswd.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.propertiespasswd.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个内容。
  1. 键空间的编辑权限

    <modify-keyspaces> : 可生成/删除键空间的权限。

    警告

    • Apache Cassandra 1.1.12中无法使用modify-keyspaces。
  2. 键空间的访问权限

    键空间名.<rw> : 只可浏览及变更键空间内列族的权限。
    键空间名.<ro> : 只可浏览键空间内列族的权限。
  3. 访问键空间内列族的权限

    键空间名.列族名.<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 时需要认证。
在此,假想进行的是通过标准设定文件进行认证设定。
  1. 启动 Cassandra 。

  2. 确认 Cassandra 已启动,并启动cassandra-cli。

    • OS是Windows时,双击<%CASSANDRA_HOME%/bin/cassandra-cli.bat>。

    • OS是Linux时,使用下述命令启动。

      /usr/local/cassandra/bin/cassandra-cli
      
  3. 启动控制台后,请输入下述命令。

    connect localhost/9160;
    
    由于未指定认证信息,会输出下述消息且连接会失败。
    Login failure. Did you specify 'keyspace', 'username' and 'password'?
    
    连接到本地环境的 Cassandra 时,在cassandra-cli启动时也会输出上述消息。
  4. 输入下述命令,结束cassandra-cli。。

    quit;
    
  5. 接下来,指定认证信息并启动cassandra-cli。

    • OS是Windows时,启动命令提示,并执行下述命令。

      %CASSANDRA_HOME%/bin/cassandra-cli -u admin -pw admin_pwd
      
    • OS是Linux时,使用下述命令启动。

      /usr/local/cassandra/bin/cassandra-cli -u admin -pw admin_pwd
      

      注解

      -u 是指定连接用户名的参数。
      -pw 是指定密码的参数。
  6. 启动控制台后,请输入下述命令。

    connect localhost/9160;
    
    会显示下述消息,可确认连接已成功。
    Connected to: "IMBox Cluster" on localhost/9160
    

警告

通过 intra-mart Accel Platform 2014 Spring(Granada) 使用连接认证时,需要事先创建键空间
关于键空间的创建、添加,请参照“ Cassandra 的操作 ”的“ 键空间的生成方法 ”,“ 键空间的生成方法(有认证设定时) ”。

«  6. Cassandra 的集群构筑   ::   Contents   ::   8. Cassandra 的操作  »