对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的更多相关文章

  1. 基于SqlSugar的开发框架循序渐进介绍(9)-- 结合Winform控件实现字段的权限控制

    字段的权限控制,一般就是控制对应角色人员对某个业务对象的一些敏感字段的可访问性:包括可见.可编辑性等处理.本篇随笔结合基于SqlSugar的开发框架进行的字段控制管理介绍. 在设计字段权限的时候,我们 ...

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

    Storm集群安装,基于版本1.0.1, 同时开启Kerberos安全认证, 使用apache-storm-1.0.1.tar.gz安装包. 1.安装规划 角色规划 IP/机器名 安装软件 运行进程 ...

  3. OAuth2.0 原理流程及其单点登录和权限控制

    2018年07月26日 07:21:58 kefeng-wang 阅读数:5468更多 所属专栏: Java微服务构架   版权声明:[自由转载-非商用-非衍生-保持署名]-转载请标明作者和出处. h ...

  4. 权限控制终于来了!Redis 6.0新特性——ACLs

    在2019年纽约的Redis Day上,Salvatore Sanfilippo(AKA Antirez)介绍了即将发布的Redis 6.0的新特性.以下是关于ACLs的内容. ACLs简介 在过去的 ...

  5. android:Android 6.0权限控制代码封装

    新建的Activity类可以继承这个Activity,这个类封装了关于新版的权限处理相关的代码 使用方法: package com.glsite.phone; import android.conte ...

  6. yii2.0 引入权限控制插件

    权限控制:"mdmsoft/yii2-admin": "~2.0" 教程:http://www.cnblogs.com/zyf-zhaoyafei/p/5825 ...

  7. Atlas 2.1.0 实践(4)—— 权限控制

    Atlas的权限控制非常的丰富,本文将进行其支持的各种权限控制的介绍. 在atlas-application.properties配置文件中,可以设置不同权限的开关. atlas.authentica ...

  8. AgileConfig轻量级配置中心1.3.0发布,支持多用户权限控制

    AgileConfig 当初是设计给我自己用的一个工具,所以只设置了一道管理员密码,没有用户的概念.但是很多同学在使用过后都提出了需要多用户支持的建议.整个团队或者整个公司都使用同一个密码来管理非常的 ...

  9. yii2.0权限控制 ACF权限

    ACF是一种通过yii\filters\AccessControl类来实现的简单授权 有两种角色 ?:未经认证的游客用户 @:已认证的用户 ACF可同过对角色设置权限控制访问 1)记得引入yii\fi ...

随机推荐

  1. Dubbo多注册中心

    一.创建提供者08-provider-registers (1) 创建工程 直接复制05-provider-group工程,并命名为08-provider-registers (2) 修改配置文件 二 ...

  2. maven根据profile,resources,filters来区分部署环境

    项目过程中,在不同的阶段,分别需要部署开发环境,测试环境,线上环境.如果都用一套配置文件,很容易弄乱,所以维持多套配置文件很有必要. maven提供了一组属性以供开发人员灵活搭配,可以根据环境来打包, ...

  3. Mycat的事务异常:Caused by: java.sql.SQLException: Transaction error, need to rollback.Distributed transaction is disabled!

    工作中踩到的一个坑 ,一个报错,导致整个服务不能用.工程部署四个节点,请求是按轮询机制分发的,所以请求四次报错,整个系统瘫痪.记录下 . 项目环境:spring +Mybaties +mycat +D ...

  4. AOP切入点的配置

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  5. 【简】题解 P4297 [NOI2006]网络收费

    传送门:P4297 [NOI2006]网络收费 题目大意: 给定一棵满二叉树,每个叶节点有一个状态(0,1),任选两个叶节点,如果这两个叶节点状态相同但他们的LCA所管辖的子树中的与他们状态相同的叶节 ...

  6. shell脚本 Linux系统巡检

    一.简介 源码地址 日期:2018/4/12 介绍:非常详细的Linux系统巡检脚本,截图为一部分输出 效果图: 二.使用 适用:centos6+ 语言:中文 注意:无 下载 wget https:/ ...

  7. 发布iOS应用(xcode5)到App Store(苹果商店) 详细解析

    发布iOS应用(xcode5)到App Store(苹果商店) 详细解析 作者:Memory 发布于:2014-8-8 10:44 Friday IOS 此教程可能不太适合,请移步至最新最全的:201 ...

  8. Java Record 的一些思考 - 默认方法使用以及基于预编译生成相关字节码的底层实现

    快速上手 Record 类 我们先举一个简单例子,声明一个用户 Record. public record User(long id, String name, int age) {} 这样编写代码之 ...

  9. apscheduler 设置python脚本定时任务

    理论概念:https://zhuanlan.zhihu.com/p/95563033 BlockingScheduler与BackgroundScheduler区别 :https://www.jian ...

  10. MySQLs数据库建外键时自动跑到缩影处,真奇怪

    MySQLs数据库建外键时自动跑到缩影处,真奇怪MyISAM引擎不支持外键:InnoDB存储引擎支持外键.如何解决的,把表修改成innodb类型吧用的工具是SQLyog Ultimate如图所示: