首页 > 代码库 > CloudStack API访问权限控制

CloudStack API访问权限控制

      在我写开始之前,请先看下CS中国社区的一篇文章http://www.cloudstack-china.org/2012/12/1465.html,在第1点里讲了关于权限级别,command属性文件位置等问题。不过4.3现在的除了command.properties外,作者提到的其它properties文件现在好像都没有了,而且command里面现在形如***command=15,“=”后面不再有处理请求命令的类。

      API请求由ApiServlet拦截后,会调用verifyRequest()方法做该用户是否有调用该API的权限验证。

      关键处理逻辑是在StaticRoleBasedAPIAccessChecker类。

      该类实现APIChecker接口,具体看下图:

      

        commandsPropertiesOverrides变量是存放所有command名称的Set,而commandsPropertiesRoleBasedApisMap是RoleType与command对应的Map。

        configure()方法读取出command.properties文件并调用processMapping()将apiName增加到commandsPropertiesOverrides中,将roleType和apiName加到commandsPropertiesRoleBasedApisMap中。