首页 文章 精选 留言 我的

精选列表

搜索[统一认证平台],共10000篇文章
优秀的个人博客,低调大师

实现hive proxy1-hive认证实现

扩展HadoopDefaultAuthenticator类的setConf方法,实现可以代理用户运行的功能,主要需求如下: 1.不传入参数时,按本用户执行 2.传入参数时,按传入参数执行 3.对设置为hdfs用户进行限制 主要更改HiveConf类和HadoopDefaultAuthenticator类 HiveConf增加: 1 2 HIVE_USE_CUSTOM_PROXY( "use.custom.proxy" , false ), HIVE_CUSTOM_PROXY_USER( "custom.proxy.user" , "" ), 更改HadoopDefaultAuthenticator 的setConf方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 protected StringproxyUser; .... public void setConf(Configurationconf){ UserGroupInformationugi= null ; if (HiveConf.getBoolVar(conf,HiveConf.ConfVars.HIVE_USE_CUSTOM_PROXY)){ proxyUser=HiveConf.getVar(conf,HiveConf.ConfVars.HIVE_CUSTOM_PROXY_USER); if (( "" ).equals(proxyUser)||proxyUser== null ||( "hdfs" ).equals(proxyUser)){ throw new RuntimeException( "Userproxyuser,butsetthewrongusername[" +proxyUser+ "]" ); } try { ugi=ShimLoader.getHadoopShims().createRemoteUser(proxyUser, null ); } catch (Exceptione){ throw new RuntimeException(e); } if (ugi== null ){ throw new RuntimeException( "CannotinitializeProxyUserAuthenticatorforuser[" +proxyUser+ "]" ); } this .userName=ShimLoader.getHadoopShims().getShortUserName(ugi); if (ugi.getGroupNames()!= null ){ this .groupNames=Arrays.asList(ugi.getGroupNames()); } } else { try { ugi=ShimLoader.getHadoopShims().getUGIForConf(conf); } catch (Exceptione){ throw new RuntimeException(e); } if (ugi== null ){ throw new RuntimeException( "CannotinitializeHadoopDefaultAuthenticator." ); } this .userName=ShimLoader.getHadoopShims().getShortUserName(ugi); if (ugi.getGroupNames()!= null ){ this .groupNames=Arrays.asList(ugi.getGroupNames()); } } } 使用方法: hive -hiveconf use.custom.proxy=true -hiveconf custom.proxy.user=xxx 1)use.custom.proxy默认值为false,即使用登录用户做权限验证 2)custom.proxy.user不能设置为空和hdfs 测试结果: 1 2 3 4 5 hive>showgrantuserericniondatabase default ; //用权限的用户 OK default ericniUSERSelect false 1417681722000 hdfs hive>showgrantuserericni1ondatabase default ; //无权限的用户 OK 有权限的用户proxy到无权限用户测试,报没有权限错误: 1 2 3 4 5 hive-i/home/hdfs/.hiverc2-hiveconfhive.root.logger=WARN,console -hiveconfuse.custom.proxy= true -hiveconfcustom.proxy.user=ericni1 14 / 12 / 05 15 : 10 : 35 WARNExecReducer:inShimLoadergetHadoopShimshadoopShimsis class org.apache.hadoop.hive.shims.Hadoop23Shims Authorizationfailed:Noprivilege 'Select' found for inputs{database: default ,table:dual}.UseSHOWGRANTtogetmoredetails. 14 / 12 / 05 15 : 10 : 36 ERRORql.Driver:Authorizationfailed:Noprivilege 'Select' found for inputs{database: default ,table:dual}.UseSHOWGRANTtogetmoredetails. 无权限的用户proxy到有权限用户测试,查询正常: 1 2 3 4 hive>select 1 from default .dual; //没有设置proxy的时候,没有权限查询 Authorizationfailed:Noprivilege 'Select' found for inputs{database: default ,table:dual}.UseSHOWGRANTtogetmoredetails. hive-hiveconfuse.custom.proxy= true -hiveconfcustom.proxy.user=ericni //设置代理后,查询正常 仍然存在的问题: 1)Hive向hdfs写入数据的用户和这个用户是分开的,暂时这块代码还没有动,后面继续跟进 2)代理用户运行任务会有安全的问题,需要加个map,限制用户可以代理的用户 本文转自菜菜光 51CTO博客,原文链接:http://blog.51cto.com/caiguangguang/1587251,如需转载请自行联系原作者

优秀的个人博客,低调大师

使用 TLS 认证远程访问 Docker 【已翻译100%】

通常情况下Docker只在 UNIX socket下生效. 一般只有本地调用生效. 如果要远程调用可以有以下三种方式: 使用nginx转发通讯到Docker 用SSH和socat处理链路 创建Docker daemon监听开放的端口 第一种实现起来比较繁琐. 第二种需要在客户端服务端安装 socat. 由于其连接未加密,任何人都可以拦截Docker的通讯信息. 直到有了 Docker implemented TLS auth in 0.10才完美的解决了这个问题. 有三种简单的方式来实现: I. 生成证书 需要生成三种证书类型: CA 证书用来生成客户端和服务端证书 远端Docker使用的客户端生疏 服务端使用的Docker daemon证书 我用Ruby写了生成这三种证书的代码.你只需要拷贝相关的代码 clone this repository 并运行下面的命令: $ gem install certificate_authority $ ruby certgen.rb example.com CA certificates are in ~/.docker/ca Client certificates are in ~/.docker Server certificates are in ~/.docker/example.com 证书都生成在~/.dockerpath下. II. 拷贝服务端证书到远端 脚本生成 Docker daemon需要的键值和证书~/.docker/example.com(example.com 是你的域名). 在服务端拷贝到~/.dockerdirectory下: rsync -ave ssh ~/.docker/example.com/ root@example.com:~/.docker/ III. 在远端配置Docker Docker daemon在0.10后支持--tlsverify 来提供加密的远端连接 假设你是用的是 Ubuntu 12.04 LTS并已经安装了Docker .其它环境下可能有些不同. 只需要在/etc/default/docker加入下面配置: DOCKER_OPTS="--tlsverify -H=unix:///var/run/docker.sock -H=0.0.0.0:4243 --tlscacert=/root/.docker/ca.pem --tlscert=/root/.docker/cert.pem --tlskey=/root/.docker/key.pem" 之后重启 Docker daemon: service docker restart 如果有错Docker daemon就会启动不了. 可以通过 under/var/log/upstart/docker.log来调试. 就是这么简单! 现在通过--tlsverify就能连接到远端Docker实例了: docker --tlsverify -H tcp://example.com:4243 images 它会使用 ~/.docker下的证书来验证连接. 如果使用的是其他的类型, 可以通过--tls* 来查询docker --help的帮助文档 documentation. 官方的TLS创建网址在这里 can be found on Docker site.

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册