kafka安全涉及3部份:传输加密,用户认证与授权,ZK开启ACL(Zookeeper存储了kafka的元数据以及用户信息,默认不开启acl所有用户可改,内网环境机器不对外开放可考虑使用默认不开启ZK ACL)。 词汇说明: 认证,即用户登陆。 授权,即管理用户可见的资源。 ACL,Access Control List 访问控制列表 SASL认证与Kerberos认证:SASL资料很多, java的见这里,Kerberos的资料,点这里。 Kafka权限控制指引 支持的认证方式 Kafka支持的认证类别有kerberos(和hadoop一样,大多数公司应该没用kerberos)、ldap(在传统企业中比较普遍)与rbac(这两个是要企业license,基于Confluence的平台组件MDS,自建集群如果没用kafka connect之类的组件,没用conflunece的cli,也用不了)、sasl/plain(用户信息用文件进行管理,修改需重启Kafka,生产大概率不会接受并使用)和sasl/scram(用户信息用api或命令行进行管理,存储在zk上,不需重启)。考虑用哪一种取决于公司自身的情况,这里主要是用sasl/scram。 接入现有认证系统 如果对zk不放心或想对接已有的认证系统,接入kafka权限管控,可参考这个kip-86自定义认证方式,文中有场景列表及sample code。 开启认证主要的关注点 使用者的需求,生产者和消费者都有哪些,场景如何,需求怎样,支持以后需要先验证,对使用方提供技术上的指引文档等。 开启方式,是重启集群还是迁移集群。开启认证不是平滑的,需要短暂中断业务流程。 使用的认证方式:基于现有的环境及实际需要。 运维成本:考虑运维、监控的方式及成本(监控需要admin账号) kafka版本是否需要升级:公司现有的版本是0.10.1,1.1,2.4等,需要升级吗?看使用哪种认证方式,rbac需要2.4+,sasl/scram只要0.9+,本文描述的基于2.4.1版本。 本文主要描述用户认证: 参考: sasl/scram 官方文档 sasl/plain 方式 一、zookeeper sasl开启(可选,内网环境,用户无机器访问权限时) vim zookeeper/conf/zoo.cfg vim zookeeper/conf/zookeeper_jaas.conf Server是ZK SERVER之间, Client是zkclient与zk server之间 vim zookeeper/bin/zkEnv.sh zk启动引入jaas配置 vim zookeeper/conf/adminclient_jaas.conf vim zookeeper/bin/zkCli.sh zkCli命令默认添加jaas 重启zk bin/zkServer.sh restart 验证 bin/zkCli.sh 是否成功,调整密码验证 二、配置kafka […]
本地多版本 本机gradle的安装,可能存在多个版本,例如kafka build要求7.0+,一些android项目使用6.8即可。下载指定版本的包到本地解压即可使用。 下载地址:https://gradle.org/releases/ 引用本地已有maven仓库 默认本地maven仓库地址是~/.m2,该目录下有settings.xml和repo目录。如果maven库不在这个路径,例如我的在~/Documents/software/apache-maven-3.8.3/下,让gradle引用本地maven,直接把自己maven库对应的settings.xml拷贝到~/.m2下替换即可,即通过settings.xml指向相同的maven仓库地址。原理是gradle默认会优先从这个路径找settings.xml,以便定位local maven仓库。 添加国内镜像 与maven一样,gradle默认会放在~/.gradle目录下。例如idea新导入的项目,preference没指定gradle的user home和路径时,会使用默认路径的gradle执行build。这时候,你参考网络上千篇一律的文章,配置镜像地址,发现依赖还是下载很慢。当理解了一件事:和maven一样,也会有多份gradle时,就能知道如何调整了。配置文件是相同的,新建文件:init.gradle,贴如下代码(有诸多的mirror源,这里使用阿里的): 关键在于,看自己使用的是哪个gradle,如果是默认的gradle,将这个文件放在~/.gradle下,如果是其他目录,如我的gradle home为/Users/allen/Documents/software/gradle-7.4,将init.gradle放在这个路径的init.d目录下。重新rebuild project验证一下是否下载速度飞快即可。
英文: The blind tracks/road the Blind Way the blind travel lanes tactile paving 触感的铺路(相对不将人以群分的说法) 城市道路人行道路面上,都会有这种橙色的砖块,有两种类别,砖面为点状的或条横壮。突起的,走在上面大家会感觉突兀,有点避而远之的感觉。实际上,它是盲道,有明文规定各公共场所及道路需要依据标准设置盲道,它作用很大,像手语一样。 线条标志着前行方向,点状标志着遇到拐点,偶尔需要拐弯了,如遇到道路上的树木。
近年来,大多数互联网公司,后端B/S工程大多数都使用Vue构建响应式web应用,例如开发平台、管理后台、分析平台等。在看某些Vue页面template代码时,是否会对<style scoped>产生疑惑? scoped是什么 指的是给css style加个作用范围。 翻阅官方链接:这里,文档指出是预处理器对css样式和template的标签做了转化,添加唯一id属性。相当于dom加了个标记,css选择器也带了这个标记。这样对指定dom设置了样式。 使用场景 在项目中,常见是所有页面共用一个vue实例。 前端code经过npm或yarm打包之后,如果一个页面的style没有指定scoped,则这个页面下添加的style作用域是全局所有页面。 ?!!某一天新增了1个页面的代码,加了组件样式,没使用scoped,上线后发现整个后台其他页面都受到影响~ 实现原理 vue预处理时,在template的dom元素中,添加唯一性id的属性,如下图: 相应的css也添加同一个id属性,如下图: 但值得注意的是,vue预处理器仅会对template中的标签添加id属性,不会对生成的dom元素添加 例如,使用js初始化生成html的组件,如echart、codemirror等,组件生成的div是不经过预处理的,不会带这个id。 以codemirror经过预处理的状态变化为例: 解决方法: 这类场景需弃用scoped,使用css选择器。 例如添加仅在本页面生效的全局唯一id或class,作为css选择器的parent。
激动人心的一天!开始在这里记录生活的点滴,向前看。