addAccessControl
语法
addAccessControl(table)
详情
参数
table 共享表或者流数据引擎对象。
例子
创建一组用户,进行权限管理。
login(`admin, `123456)
createUser(`u1, "111111");
createUser(`u2, "222222");
createUser(`u3, "333333");
例1:限制其他用户访问流数据引擎
- 用户 u1 创建流数据引擎
agg1。
login(`u1, "111111") share streamTable(1000:0, `time`sym`volume, [TIMESTAMP, SYMBOL, INT]) as trades output1 = table(10000:0, `time`sym`sumVolume, [TIMESTAMP, SYMBOL, INT]) agg1 = createTimeSeriesEngine(name="agg1", windowSize=60000, step=60000, metrics=<[sum(volume)]>, dummyTable=trades, outputTable=output1, timeColumn=`time, useSystemTime=false, keyColumn=`sym, garbageSize=50, useWindowStartTime=false) subscribeTable(tableName="trades", actionName="agg1", offset=0, handler=append!{agg1}, msgAsTable=true); - 给引擎 agg1
添加访问限制。
addAccessControl(agg1) - 用户 u2 注入数据到引擎 agg1 或删除引擎 agg1
时报错。
// 以用户 u2 的身份登录服务器 login(`u2, "222222") // 注入数据 insert into trades values(2018.10.08T01:01:01.785,`A,10) // OK! insert into agg1 values(2018.10.08T01:01:01.785,`A,10) // ERROR: No access to table [agg1] // 注销引擎 dropStreamEngine("agg1") // No access to drop stream engine agg1 - 给用户 u2 赋予引擎 agg1
的写入权限。
如果在集群中,权限对象必须为 "nodeAlias:tableName",例如引擎 agg1 在节点 dnode1 中。login(`admin, `123456) grant("u2", TABLE_WRITE, "agg1")grant("u2", TABLE_WRITE, "dnode1:agg1") - 此时用户 u2 可以成功注入数据到引擎
agg1。
insert into agg1 values(2018.10.08T01:01:01.785,`A,10)
例2:限制其他用户访问流数据引擎
login(`u1, "111111")
t = table(take(`a`b`c`, 10) as sym, 1..10 as val)
share t as st;
addAccessControl(`st)
login(`u3, "333333")
select * from st # ERROR: No access to shared table [st]
insert into st values(`a, 4) // ERROR: No access to shared table [st]
