美文网首页程序员大数据
Storm对DRPC权限控制Version1.0.1

Storm对DRPC权限控制Version1.0.1

作者: 木木与呆呆 | 来源:发表于2019-01-21 16:20 被阅读4次

对Storm的DRPC进行权限控制,
并且设计相应的测试验证。

1.集群安装

请参考Storm集群安装Version1.0.1

2.使用DRPC功能

请参考Storm集群使用DRPC功能Version1.0.1
预置如下数据:
在Strom集群上面启动DRPC进程,
并且提交了DRPC的topology,
方法名称为exclamation。

3.开启DRPC的权限控制

storm.yaml文件中开启DRPC的权限控制:

drpc.authorizer: "org.apache.storm.security.auth.authorizer.DRPCSimpleACLAuthorizer"
drpc.authorizer.acl.filename: "drpc-auth-acl.yaml"
drpc.authorizer.acl.strict: true

在conf目录下新建drpc-auth-acl.yaml文件,
配置内容如下:

drpc.authorizer.acl:
  "exclamation":
    "client.users":
      - "alice"
      - "kafka"
    "invocation.user": "stormna"

说明,配置用户kafka和alice可以通过客户端调用drpc的方法exclamation,
client.users指定的用户可以执行的操作为operation:execute,
invocation.user可以执行的操作operation:failRequest,fetchRequest,result,
当drpc.authorizer.acl.strict为false时,
意为permissive宽容,
即没有配置权限控制的方法可以被任意用户执行,
而在配置文件中指定了控制权限的方法还需要匹配才能执行。
当drpc.authorizer.acl.strict为ture时,
只有在配置文件中的用户才能执行,
不在则拒绝,即为严格的白名单。

4.重启Storm集群

配置完成后重新启动storm集群,包括nimbus,drpc,
登陆Storm UI管理台可以看到新的配置项已经生效。

5.客户端验证

使用DRPCClientTest.java类中对于exclamation的客户端调用代码,
具体代码请参考Storm集群使用DRPC功能Version1.0.1的第7章节,
打成名称为drpctest.jar的jar包,
然后上传到Linux的storm用户下面,
执行如下测试命令:
java -jar drpctest.jar hi
未授权用户会抛出异常:

Exception in thread "main" AuthorizationException(msg:DRPC request 'execute' for 'unknown' user is not authorized)
    at org.apache.storm.generated.DistributedRPC$execute_result$execute_resultStandardScheme.read(DistributedRPC.java:1231)
    at org.apache.storm.generated.DistributedRPC$execute_result$execute_resultStandardScheme.read(DistributedRPC.java:1200)
    at org.apache.storm.generated.DistributedRPC$execute_result.read(DistributedRPC.java:1134)
    at org.apache.storm.thrift.TServiceClient.receiveBase(TServiceClient.java:86)
    at org.apache.storm.generated.DistributedRPC$Client.recv_execute(DistributedRPC.java:106)
    at org.apache.storm.generated.DistributedRPC$Client.execute(DistributedRPC.java:92)
    at org.apache.storm.utils.DRPCClient.execute(DRPCClient.java:60)
    at test.zte.storm.drpc.DRPCClientTest.main(DRPCClientTest.java:28)

登陆到kafka用户,
执行同样的测试命令:
java -jar drpctest.jar hi
正常返回结果:

input:hi, result:hi!

用户kafka执行成功,而storm执行失败,
是因为我们在drpc-auth-acl.yaml给kafka配置了权限,
而没有给storm用户权限。

相关文章

  • Storm对DRPC权限控制Version1.0.1

    对Storm的DRPC进行权限控制,并且设计相应的测试验证。 1.集群安装 请参考Storm集群安装Version...

  • Storm集群使用DRPC功能Version1.0.1

    在Storm集群上开启DRPC功能,基于Storm的1.0.1版本,并且执行简单的例子测试。 1.DRPC概念 D...

  • storm drpc

    客户端:用来发起DRPC的调用 DRPC Server:实现与客户端的对接,传递参数给Storm,返回结果给客户端...

  • 42.Storm drpc及kafka

    DRPC (Distributed RPC) remote procedure call分布式远程过程调用 DR...

  • Storm集群安装Version1.0.1

    Storm集群安装,基于版本1.0.1,使用apache-storm-1.0.1.tar.gz安装包。 1.安装规...

  • SHIRO源码解读——Authorizer权限校验

    权限控制可以描述为:“谁”对“什么”进行什么”操作"。通过权限控制,我们可以有效控制用户的行为操作,进而做到对资源...

  • Storm集群安装Version1.0.1开启Kerberos

    Storm集群安装,基于版本1.0.1,同时开启Kerberos安全认证,使用apache-storm-1.0.1...

  • laravel 之用户授权使用讲解

    版本 laravel5.2 应用场景 控制对资源的访问权限,这个权限不同于RBAC(角色的权限访问控制),比如,只...

  • odoo 对字段权限控制技巧

    odoo 的权限可以分为对模型,对记录,对字段,但是对字段的权限仅仅只能控制字段的只读,隐藏,必填,无法做到按权限...

  • Vue权限控制

    需求 页面级别权限控制1.URL路由权限控制2.导航菜单权限控制3.超链接权限控制 元素界别权限控制1.按钮元素权...

网友评论

    本文标题:Storm对DRPC权限控制Version1.0.1

    本文链接:https://www.haomeiwen.com/subject/ztgcjqtx.html