Jenkins用户手册-配置

JNLP TCP Port

Jekins使用一个TCP端口同通过JNLP协议启动的代代理通信。

如果管理员希望使用基于JNLP的代理,选择使用端口有两咱方案:

  • Random: 端口随机,以避免同Jenkins主服务端口冲突。缺陷是随机分配JNLP端口发生在Jenkins主服务引导期间,使得很难设置有效的防火墙规则以允许JNLP端口的通过。

  • Fixed:由管理员指定,可避免Random方案中的缺陷,但需小心端口的冲突。

Access Control

访问控制是安全隔离Jenkins非授权使用的重要机制,在Jenkins中,如下两方面配置是很有必要配置于访问配置的:

  • Security Realm:配置用户来源。

  • Authorization:配置某个用户可以访问哪些内容。

另外,一些插件比如插件:role-strategy[Role-based Authorization Strategy]插件可以扩展Jenkins的访问控制扩展功能。

Security Realm

Jenkins默认支持的Security Realms:

  • Delegate to servlet container:委托运行Jenkins主服务的servlet容器认证,比如Jetty.如果使用此选项,请参阅servlet容器的认证文档。

  • Jenkins’s own user database:此模式在Jenkins2.0及之后版本为默认。自身验证,不委托外部系统。适用于小量情景。

  • LDAP:委托所有的认证给配置的LDAP服务器,包括所有的用户和所有的组。适用于大量情景,此功能由插件:ldap[LDAP plugin]插件扩展。

  • Unix User/group database:委托给运行Jenkins服务的Unix系统的用户数据库。此种模式允许重用unix系统组。

  • 其他一些可用插件:

    • plugin:active-directory[Active Directory]
    • plugin:github-oauth[GitHub Authentication]
    • plugin:crowd2[Atlassian Crowd2]

Authorization

Security Realm搞定了谁可以访问Jenkins环境,而Authorization则搞定了用户在Jenkins环境中可以访问的内容。默认情况下,Jenkins支持的授权选项:

  • Anyone can do anything:也就是任意人可干任何事,即所有人都有Jenkins的全部权限,包括尚未登录的匿名用户。那义乌如果不是本地内部测试,不要使用此选项。

  • Legacy mode:管理员角色的用户拥有全部的权限,其他用户包括匿名用户只有Read访问权限。同样非本地内部测试,不推荐使用。

  • Logged in users can do anything:即登录的用户可以干任意事。即只要登录就有所有的权限。使用一个高级选项,可以使匿名登录用户只有Read访问权限或者没有访问权限,可以强制用户在操作前先登录,以便于追踪用户操作。

  • Matrix-based security:此方案允许细粒度的控制哪些用户和组在Jenkins中可以执行哪些操作。

  • Project-based Matrix Authorization Strategy:是矩阵安全方案的扩展方案,允许定义每个项目的的权限访问列表,这就使得分配特定用户和组只能访问指定项目成为现实。

注:Matrix-based security和Project-based Matrix Authorization Strategy由插件:matrix-auth[Matrix Authorization Strategy Plugin]提供。

注:强列推荐Prevent Cross Site Request Forgery exploits(阻止跨域请求模仿)保持启用。

Agent -> Master Access Control

Jenkins主服务在关于客户端可以发送什么样的命令是非常严格的。很不幸,这使得一些插件功能无法正常工作,因为那插件没有指定哪些命令可以运行,哪些不能。伴随着插件开发对于此的修改,管理员可以标记一些可以被客户端发送的命令(白名单)。

管理员也可以通过在JENKINS_HOME/secrets/whitelisted.d/目录下创建.conf结尾的文件设置白名单。白名单中命令名称需单行显示。

Jenkins会读取此目录下所有.conf结尾的文件并合并后创建一个包含所有安全命令的default.conf的文件,default.conf文件在每次Jenkins启动时都被重写。

Jenkins也管理着whitelisted-callables.d目录下的一个叫做gui.conf的文件,是通过Web UI写入的白各命令存储文件,如果要标用可将些文件置空,设置Jenkins不可写权限。

File Access Rules

文件访问规则用于验证文件访问请求,每个规则都由以下三部分组成:

  • allow/deny:如果现有请求匹配下面两个参数,那么allow表示允许,deny表示拒绝。

  • operation:请求的操作类型,可以是一个也可以是多个由逗号分隔的如下类型值(或者以all表示以下所有):

    • read:读取文件内容或者查看目录列表。
    • write:写入文件内容
    • mkdirs:创建文件目录
    • create:在已存在目录中创建文件
    • delete:删除文件或者目录
    • stat:读取文件或者目录的元数据,如时间戳、长度、文件访问模型等
  • file path:文件路径,正则匹配,同时支持如下映射:

    • :可用做匹配主服务的JENKINS_HOME目录。
    • :可用做匹配构建记录目录,如/var/lib/jenkins/job/foo/builds/2014-10-17_12-34-56
    • :匹配构建ID,时间戳格式,像2014-10-17_12-34-56

文件访问规则是有序的,优先匹配,最先匹配到的执行,比如如下规则表示允许访问JENKINS_HOME目录下的除secrets目录外的秘有文件:

deny all <JENKINS_HOME>/secrets/.*
allow all <JENKINS_HOME>/.*

顺序很重要,如下第二条规则将永远都不会执行:

allow all <JENKINS_HOME>/.*
deny all <JENKINS_HOME>/secrets/.*

另外管理员也可以通过在JENKINS_HOME/secrets/filepath-filters.d/目录下创建以.conf结尾的文件来添加文件访问规则,Jenkins自身生成的默认规则存储在此目录下的名叫30-default.conf文件中,如果要禁用此默认设置的规则,可清空则文件,设置些文件为Jenkins启动用户Jenkins不可写。

每次启动,Jenkins都会按字母顺序读取filepath-filters.d目录下所有的.conf文件,因此在以某种规则命名.conf文件来预示他们的加载顺序是一种非常好的选择。

filepath-filters目录下还有个被Jenkins管理的文件叫50-gui.conf,是通过Web UI写入的文件访问规则存储地。如果要限制管理员通过Web UI改变文件访问规则,可以在此目录下放一个空的50-gui.conf文件,同样设置些文件为Jenkins启动用户Jenkins不可写。

注:管理员可以通过Web UI的Configure Global Security页面禁用Agent/Master Access Control,也可以在JENKINS_HOME/secrets目录中创建一个叫slave-to-master-security-kill-switch的文件,添加内容true,然后重启以禁用Agent/Master Access Control.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值