权限管理

到目前为止,我们一直在使用superuser用户进行操作。superuser用户相当于集群的管理员,拥有集群所有的权限。可以使用superuser用户创建普通用户,并把指定表的读或写权限赋予新用户。

创建用户

curl -u username:password -XPOST 'host:port/_user/create'
{
    "username" : "test",
    "password" : "test123",
    "ip_whitelist" : ["192.168.1.1", "192.168.2.*"],
    "put_path" : ["/test-index", "/nuomi-"],
    "post_path" : ["/test-index", "/nuomi-"],
    "get_path" : ["/test-index", "/nuomi-", "/_cat/health"],
    "del_path" : ["/test-index", "/nuomi-"]
}

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

1.path 中为前缀匹配的访问路径。
2.只有在 ip_whitelist 中的IP地址才可访问集群,否则即使用户名密码正确也无法访问。如果不限制IP白名单,可以填["*"],不可为空。
3.可以通过只赋予用户 get 权限,且用户的所有查询都通过 GET 操作来实现只读权限。

修改用户

curl -u username:password -XPOST 'host:port/_user/alter'
{
    "username" : "test",
    "password" : "test321",
    "ip_whitelist" : ["192.168.1.1"],
    "put_path" : ["/test-index"],
    "post_path" : ["/test-index"],
    "get_path" : ["/test-index", "/_cat/health"],
    "del_path" : ["/test-index"]
}

消息体中出现的字段会全部覆盖原有字段内容,未出现的字段会保留原来的内容。

删除用户

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

显示用户信息

curl -u username:password -XPOST 'host:port/_user/show’

该API需要在创建普通用户时加入其权限路径,这样普通用户才可查看自己的用户信息。

重置密码

curl -u username:password -XPOST 'host:port/_user/resetpasswd’
{
    "password" : "test123"
}

该API需要在创建普通用户时加入其权限路径,这样普通用户才可修改自己的密码,管理员修改普通用户密码时请使用更新用户的API。

匿名用户

  1. 所有不带用户名和密码的访问都将被视为anonymous用户。

  2. 管理员可以通过配置anonymous用户来开通可匿名访问的路径,密码任意,添加到匿名用户权限列表中的路径在访问是可以不指定用户名和密码。