进程内的脚本批准

必威国际有限公司Jenkins和许多插件允许用户执行Groovy脚本必威国际有限公司詹金斯。这些脚本功能由:

为了保护Jenkins必威国际有限公司免受恶意脚本的执行,这些插件在一个Groovy沙箱限制了内部api的可访问性。此保护由脚本安全插件.一旦在任何脚本中使用了不安全的方法,“进程内脚本批准”操作应该出现在“管理Jenkins”中,以允许管理员决定在Jenkins环境中应该允许哪些不安全的方法。必威国际有限公司

进入进程内脚本审批配置

开始

脚本安全插件是由安装后安装向导,尽管最初没有批准使用其他脚本或操作。

这个插件的旧版本使用可能不安全。请查看上面的安全警告脚本安全插件页面为了保证脚本安全插件是最新的。

进程内脚本的安全性由两种不同的机制提供:Groovy沙箱脚本的批准.第一个是Groovy沙箱,默认为启用必威国际有限公司詹金斯管道允许用户提供的脚本和声明式管道在不需要管理员干预的情况下执行。第二个是脚本审批,它允许管理员审批或拒绝非沙箱脚本,或者允许沙箱脚本执行其他方法。

在大多数情况下,Groovy沙箱和脚本安全的内置列表已批准的方法签名,将是足够的。强烈建议管理员仅在绝对必要时才偏离这些默认值。

Groovy沙箱

为了减少管理员的手工干预,默认情况下,大多数脚本都将在Groovy沙箱中运行,包括所有脚本必威国际有限公司詹金斯管道.沙箱只允许在未经事先批准的情况下执行Groovy方法的一个子集,这些方法被认为对“不可信”的访问足够安全。使用Groovy沙箱的脚本是所有受同样的限制,因此由管理员编写的管道与由非管理员用户授权的管道一样受这些限制。

当脚本尝试使用沙箱未授权的特性或方法时,脚本将立即停止,如下面的Jenkins Pipeline所示必威国际有限公司

沙箱法拒绝
图1所示。在运行时通过蓝海拒绝未经授权的方法签名

上面的管道在管理员之前不会执行批准方法签名通过进程内的脚本批准页面。

除了添加已批准的方法签名外,用户还可以完全禁用Groovy沙箱,如下所示。禁用Groovy沙箱需要整个脚本必须被审查和手动批准由管理员。

创建脚本管道并取消“使用Groovy沙箱”选项
图2。为管道禁用Groovy沙箱

脚本的批准

管理员对整个脚本或方法签名的手工批准为管理员提供了额外的灵活性,以支持进程内脚本的更高级用法。当Groovy沙箱禁用,或者调用内置列表之外的方法,脚本安全插件将检查管理员管理的已批准脚本和方法列表。

的外部执行的脚本Groovy沙箱,则管理员必须批准整个脚本的进程内的脚本批准页面:

批准非沙箱脚本化管道
图3。批准非沙箱脚本化管道

的脚本Groovy沙箱,但希望执行当前未批准的方法签名也将被Jenkins暂停,并要求管理员在脚本被允许执行之前批准特定的方法签名:必威国际有限公司

批准新方法签名
图4。批准新方法签名

批准假定的权限检查

脚本审批提供三个选项:Approve、Deny和“Approve假设权限检查”。虽然前两种方法的目的是不言而喻的,但第三种方法需要额外理解哪些内部数据脚本能够访问,以及Jenkins函数中的权限如何检查。必威国际有限公司

考虑一个访问该方法的脚本hudson.model.AbstractItem.getParent (),它本身是无害的,并将返回一个对象,该对象包含包含当前正在执行的Pipeline或Job的文件夹或根项目。在方法调用之后,执行hudson.model.ItemGroup.getItems (),它将列出文件夹或根项目中的项目,需要工作/读许可。

这可能意味着批准hudson.model.ItemGroup.getItems ()方法签名将允许脚本绕过内置的权限检查。

相反,点击通常更可取批准假定的权限检查这将导致脚本批准引擎允许方法签名,假设运行脚本的用户具有执行方法的权限,例如工作/读权限。



这个页面有用吗?

请通过这个提交你对这个页面的反馈快速形成

或者,如果您不希望完成快速表单,您可以简单地指出,如果您觉得这个页面有帮助?


看到现有的反馈在这里