前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0582-5.16.1-1.4.2-后台脚本无感知为CDSW用户绑定Kerberos账号(keytab认证)

0582-5.16.1-1.4.2-后台脚本无感知为CDSW用户绑定Kerberos账号(keytab认证)

作者头像
Fayson
发布2019-04-28 18:05:00
6370
发布2019-04-28 18:05:00
举报
文章被收录于专栏:Hadoop实操

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

Fayson的github: https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1

文档编写目的

在前面的文章Fayson介绍了在CDSW用户无感知的情况下通过API接口以密码的方式为不同的业务用户绑定Kerberos账号,CDSW的Hadoop Authentication认证方式提供密码和Keytab两种方式。本篇文章Fayson主要介绍通过API接口以keytab的方式为用户绑定Kerberos账号。

  • 测试环境

1.RedHat7.4

2.CDSW版本为1.4.2

3.CM和CDH版本为5.16.1

2

涉及API接口

在这篇文章中Fayson主要介绍通过API接口以keytab的方式为不同的业务用户绑定Kerberos账号,本篇文章涉及到的API接口如下:

  • 为指定用户创建一个上传keytab的flow upload id接口
代码语言:javascript
复制
请求地址:http://{cdsw_domain}/api/v1/users/{user}/upload
请求类型:POST
请求参数:{"uploadType":"kerberosCredentials","kerberosCredentials":{"principal":"fayson","clusterId":1}}
返回值:{"flowUploadId":"f08771dbff8c560a91d0dc690d0104989d874af2fb2049bbbf66483270218308"}
  • 为指定用户上传keytab文件接口
代码语言:javascript
复制
请求地址:http://{cdsw_domain}/api/v1/users/{user}/upload/chunk
请求类型:POST
请求参数:
flowUploadId:上一步请求返回的flow upload id
flowChunkNumber:1
flowChunkSize:5 * 1024 * 102
flowCurrentChunkSize:498(keytab文件大小)
flowTotalSize:498(keytab文件大小)
flowIdentifier:{filesize}-fayson.keytab(重命名keytab文件名)
flowFilename:fayson.keytab(keytab文件名)
flowRelativePath:fayson.keytab(keytab文件名)
file:@/root/fayson.keytab(指定本地keytab文件路径,主要“@”)
flowTotalChunks:1
返回值:{"status": "OK"}
  • 获取绑定状态API接口
代码语言:javascript
复制
请求地址:http://{cdsw_domain}/api/v1/users/admin/upload/downstream-result?flowUploadId={flowUploadId}
请求类型:GET
返回值:{"status": "success","content": "xxx”}
  • 注销Kerberos绑定
代码语言:javascript
复制
请求地址:http://{cdsw_domain}/api/v1/users/{user}/kerberos-credentials?clusterId=1
请求类型:DELETE

3

绑定Kerberos账号

本章节测试主要使用curl命令方式调用API接口,为不同的业务用户绑定Kerberos账号。

1.准备一个fayson.keytab文件

2.admin用户绑定Kerberos账号之前

3.在命令行执行如下命令创建一个flow upload id

代码语言:javascript
复制
[root@cdsw ~]# curl -u 'admin:123456' -X POST -H "Content-Type:application/json" -d '{"uploadType":"kerberosCredentials","kerberosCredentials":{"principal":"fayson","clusterId":1}}' 'http://cdsw.fayson.com/api/v1/users/admin/upload'

4.通过指定flow upload id及keytab文件大小等信息调用上传keytab接口

代码语言:javascript
复制
curl -u 'admin:123456' -X POST -F "flowUploadId=f08771dbff8c560a91d0dc690d0104989d874af2fb2049bbbf66483270218308" \
 -F "flowChunkNumber=1" \
 -F "flowChunkSize=5242880" \
 -F "flowCurrentChunkSize=1002" \
 -F "flowTotalSize=1002" \
 -F "flowIdentifier=1002-faysonkeytab" \
 -F "flowFilename=fayson.keytab" \
 -F "flowRelativePath=fayson.keytab" \
 -F "file=@/root/fayson.keytab" \
 -F "flowTotalChunks=1" \
"http://cdsw.fayson.com/api/v1/users/admin/upload/chunk"

5.keytab上传成功后,通过如下接口获取绑定结果

代码语言:javascript
复制
curl -u 'admin:123456' -X GET http://cdsw.fayson.com/api/v1/users/admin/upload/downstream-result?flowUploadId=f08771dbff8c560a91d0dc690d0104989d874af2fb2049bbbf66483270218308

6.登录admin用户查看Kerberos绑定成功

7.启动一个Session进行测试

Yarn上查看Spark作业运行成功

4

总结

1.通过keytab的认证方式绑定相较于之前的密码认证方式绑定会复杂些,API的调用需要按照顺序,先获取flow upload id后才可以上传keytab文件,最后通过接口获取绑定结果。

2.在API请求地址中注意,如果需要为某个业务用户设置Kerberos账号则将请求地址中的{user}修改为相应的用户即可。

3.在上传keytab文件时,需要注意文件的大小要根据实际文件大小进行设置,否则会报错。

4.上传文件时file属性指定本地文件前需要加“@”,否则会报文件路径异常问题。

5.这里的API接口有个漏洞,并未做严格的用户权限控制,只要是认证通过的用户均可以随意为其它用户进行Kerberos账号绑定及注销操作。

疑问:关于上传keytab的API接口中,ChunkNumber和flowTotalChunks参数设置为1,暂不没搞懂该值如何生成,目前keytab文件不特别大设置为1不会出现问题。

https://blog.csdn.net/coloriy/article/details/47293525

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档