Jenkins基础:API:4:API Token的使用方式

在前面的文章中,使用了用户名和密码的方式进行用户身份验证,可以操作API进行Job的创建等动作,在这篇文章中,将介绍另外一种更为安全的通用的认证方式:API Token。

Jenkins环境

由于从Jenkins 2.129版本, API token的功能发生了变化。以下为LTS 2.73.3的Jenkins的API使用截图:
在这里插入图片描述
使用起来特点为:

  • User ID无法修改
  • 可以随时查看API Token信息
  • 可以通过Change API Token进行Token信息的更换
  • 只可以保存一个固定为User ID的token信息,如果有多个应用都通过Token与Jenkins相连,只能使用同一个token。

而在LTS 2.164.3中,使用截图如下所示
在这里插入图片描述
使用起来特点为:

  • 可以使用创建和管理多个token
  • 只有创建的时候可以查看API Token内容信息
  • 可以对生成的token进行删除

本文示例的Jenkins的API Token是基于LTS 2.164.3版本进行演示。详细的环境构建可参看:

Token的使用方式

创建Token

创建Token时使用如下方式传入newTokenName即可

liumiaocn:jenkins liumiao$ curl -u root:liumiaocn -H Jenkins-Crumb:5955de6dcdcdb990b7341ead1045eb64 'http://localhost:32002/user/root/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' --data 'newTokenName=test-token1' 2>/dev/null |jq .
{
  "status": "ok",
  "data": {
    "tokenName": "test-token1",
    "tokenUuid": "9665926b-c951-46a6-bfae-67c1df377290",
    "tokenValue": "117ca6900013ecd92b37feaba0211406a5"
  }
}
liumiaocn:jenkins liumiao$

注意:Token只有在创建时候才可以查询,创建的时候请注意获取上述的显示信息,一旦忘记,可以通过再次创建来实现,相同的newTokenName可以对应多个tokenValue。

在这里插入图片描述

删除Token

使用revoke则可删除token,只需要指定tokenUuid即可

liumiaocn:jenkins liumiao$ curl -u root:liumiaocn -H Jenkins-Crumb:5955de6dcdcdb990b7341ead1045eb64 http://localhost:32002/user/root/descriptorByName/jenkins.security.ApiTokenProperty/revoke --data 'tokenUuid=9665926b-c951-46a6-bfae-67c1df377290'
liumiaocn:jenkins liumiao$

实践经验总结

API Token并不是Jenkins 的API所独特提供的功能,关于如何更好的使用API Token,为了保证API Token在使用上的安全性与灵活性:

  • 粒度:不同的应用使用不同的Token,这样的好处在于对于应用级别的权限进行回收等需求的时候不至于影响到其他应用。
  • 获取:token的信息只有在创建的时候才能看到一次,忘记了token的信息等于忘记了密码,不建议提供查看token具体信息的功能,因为这样相当于有一个权限可以查看到所有用户的token,此用户权限一旦丢失,相当于所有用户的token信息都存在丢失的风险,而且用户本身无法察觉。一旦忘记,删除此token,重新生成token进行使用。
    存在其他用户在token未被重置的情况下
  • 更新:定期的更新(比如每半年,需要根据实际的安全需求)token,token在使用期限上进行管理,这种方式会更加安全。
  • 保护:Token就等同于用户的密码,获得token就获得了以所属用户身份进行操作的权限,自然对于token的保护也要像你的密码一样谨慎。
  • 回收:对于不再使用的token,建议及时地回收,可以预防安全上的风险。
淼叔 CSDN认证博客专家 神经网络 TensorFlow NLP
资深架构师,PMP、OCP、CSM、HPE University讲师,EXIN DevOps Professional与DevOps Master认证讲师,曾担任HPE GD China DevOps & Agile Leader,帮助企业级客户提供DevOps咨询培训以及实施指导。熟悉通信和金融领域,有超过十年金融外汇行业的架构设计、开发、维护经验,在十几年的IT从业生涯中拥有了软件开发设计领域接近全生命周期的经验和知识积累,著有企业级DevOps技术与工具实战。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页