基于Bigtable行的访问控制模式

时间:2017-04-19 15:24:27

标签: acl bigtable google-cloud-bigtable

我想使用角色为Bigtable实现基于行的访问控制,以便每行可以允许一个到多个角色。我不知道如何轻松地把它变成钥匙。

有哪些模式可用于实现此类内容?

我当前的用例是使用我的其他索引作为密钥的一部分进行前缀范围查找。

2 个答案:

答案 0 :(得分:3)

不幸的是,当前Bigtable不支持基于行的本机ACL功能。这实际上取决于您的用例,但是有几种方法可以自己实现。以下您会发现一些可能的建议:

  • Apache Accumulo是HBase的包装,它实现了基于行的ACL。
  • 在表之前的代理层可以查询表本身的“权限”,或者辅助权限表是可行的,但是实现您自己却非常复杂。据我了解,这可能是您可以采用的解决方案,但是请记住,警告是您还必须对复杂查询进行检查,这可能使其效率非常低(并且随着新功能的到来而难以维护) 。

答案 1 :(得分:0)

roles := []bigtable.Filter{bigtable.ColumnFilter("public"),
                   bigtable.ColumnFilter("admin")}

acl := bigtable.InterleaveFilters(roles...)

table.ReadRows(context.Background(), rr, func(r bigtable.Row) bool {
   // do something
}, bigtable.RowFilter(acl))