2013-03-15

SimpleRPC授权

作为SimpleRPC框架的一部分,授权系统保证了对代理和动作的细粒度控制。结合连接安全性、集中化审计以及加密签名消息,这一系列重要的功能组合允许大公司对MCollective集群进行精确控制。

客户端在请求中将会包括运行客户端进程的UID而授权函数能够获得这个请求的访问权限。


编写授权插件

编写授权插件很容易,下面的例子允许将只允许RPC调用UID=500,这是一个称为Action Policy的示例插件。

module MCollective::Agent
    class Service<RPC::Agent
        authorized_by :authorize_it

        # ...
    end
end

这个类的任何异常都会导致消息不会被处理或者审计。通过把这些类放在libdir路径下的Util目录下来安装这些插件。在代理中使用:

module MCollective::Agent
    class Service<RPC::Agent
        authorized_by :authorize_it
        # ...
    end
end

调用authorizedby :authorizeit将会告诉代理使用MCollective::Util::AuthorizeIt类来做授权。

启用全局RPC审计

可以在server.cfg中针对所有代理启用某一特定插件,如果这样做了而某个代理又指定有特定插件,则代理将会优先考虑指定的授权。

rpcauthorization = yes
rpcauthprovider = action_policy

如果设置rpcauthorization = no并不会禁用所有的代理的授权插件,注意这是个全局操作,针对某个代理特定的授权并没有因此而禁用。



blog comments powered by Disqus