ACL授权的特点
  • 授权或撤销授权时,要求Grantee(如User或Role)和Object(如Table)必须已经存在。这点与Oracle授权特性相似,可以避免删除并重建同名对象所带来的安全风险。
  • 删除一个对象时,自动撤销与该对象关联的所有授权。
  • 仅支持Allow(白名单)授权,不支持Deny(黑名单)授权。
  • 使用经典的Grant、Revoke授权命令进行授权。命令简单,使用时不易出错。不支持带限制条件的授权。
  • 适合于简单的授权需求:授权不带限制条件,不需要Deny,并只需要对已存在对象进行授权。
Policy授权的特点
  • 授权或撤销授权时,不关心Grantee或Object存在与否。授权对象可以支持以通配符引号("")来表达。例如,projects/tbproj/tables/taobao,表示项目空间tbproj中所有以taobao开头的表。这点与MySQL授权特性相似,允许对不存在的对象授权,授权者应考虑到删除并重建同名对象所带来的安全风险。
  • 删除一个对象时,与该对象关联的Policy授权不会被删除。
  • 同时支持Allow(白名单)和Deny(黑名单)授权。当Allow和Deny授权同时存在时,遵循Deny优先原则。
  • 支持带限制条件的授权。授权者可以对Allow或Deny授权施加条件限制(目前支持20种条件操作)。例如,允许请求者的IP为指定的IP地址范围,同时访问时间必须在2017-11-11 23:59:59之前。
  • 适合于相对复杂的授权需求:带授权限制条件,有Deny授权需求,希望支持对未来的对象授权。
  • 使用Policy授权命令进行授权,命令较为复杂。