权限管理

权限管理的主要功能如下:

  • 能够根据URL限制用户对数据的访问,比如管理员如果想让一个用户有管理集群配置参数的权限,那么可以把/_cluster/setting 这个URL的POST 权限授权给这个用户即可。
  • 能够根据Index限制用户对数据的读写操作。

创建用户

curl -u username:password -XPOST 'host:port/_user/create'
{
    "username" : "test",
    "password" : "test123",
    "get_path" : ["/test-", "/online-", "/_cat/health"],
    "put_path" : ["/test-"],
    "post_path" : ["/test-"],
    "del_path" : ["/test-"],
    "read_index": ["test-", "online-"],
    "write_index": ["test-"]
}

以上命令创建一个test用户,登录密码为“test123”,对 test- 开头的索引有put、post、get和 delete 权限,对 online- 开头的索引有 get 权限,分别对应 Restful API 的四种操作。

  1. path 中为前缀匹配的访问路径,分别对应了HTTP中的PUT,POST,GET,DELETE 4 个请求方法。
  2. read_index 和 write_index 分别表示了该用户可以执行读取操作和写入操作的index的列表,也是根据前缀匹配,权限插件会根据用户访问的API自动判定这个访问时读取操作还是写入操作。
  3. 只有superuser可以执行create user的指令,其他用户在任何情况下都不能执行。

修改用户

curl -u username:password -XPOST 'host:port/_user/alter'
{
    "username" : "test",
    "password" : "test321",
    "get_path" : ["/test-", "/_cat/health"],
    "read_index": ["test-"]
}
  1. 这个API可以修改用户的访问权限,同时也可以修改用户的密码。
  2. 消息体中出现的字段会全部覆盖原有字段内容,未出现的字段会保留原来的内容,比如这里没有出现 write_index,那么表示用户对index的write权限不变,但是 read index 的权限只有 test-xxx 这类了。
  3. 只有root和superuser可以执行这个API。

删除用户

curl -u username:password -XPOST 'host:port/_user/delete'
{
    "username" : "test"
}

显示用户信息

curl -u username:password -XPOST 'host:port/_user/show’
{
  "size" : 20
}
  1. 该API需要在创建普通用户时加入其权限路径,这样普通用户才可查看自己的用户信息。
  2. 如果执行该API的是root或者superuser,那么显示所有的用户。
  3. size表示返回的用户个数,不写的话默认是10

重置密码

curl -u username:password -XPOST 'host:port/_user/resetpasswd’
{
    "password" : "test123"
}
  1. 该API需要在创建普通用户时加入其权限路径,这样普通用户才可修改自己的密码
  2. 管理员修改普通用户密码时请使用更新用户的API。