Script Security Plugin方法白名单

Jenkins Script Security Plugin是一个用于保障Jenkins脚本安全的插件。 该插件定义了一个白名单,只有在白名单内的方法和静态方法才能能在Jenkins的Groovy sandbox中运行。 具体可以查看https://github.com/jenkinsci/script-security-plugin/blob/master/src/main/resources/org/jenkinsci/plugins/scriptsecurity/sandbox/whitelists/generic-whitelist

例如当前的版本在pipeline中中使用java.time.Instant.parse("2019-07-15T07:24:29.830388369Z")方法,就会报下面的错误:

1org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use staticMethod java.time.Instant parse java.lang.CharSequence
2	at org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.StaticWhitelist.rejectStaticMethod(StaticWhitelist.java:276)
3	at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onStaticCall(SandboxInterceptor.java:188)

这是因为Script Security Plugin

遇到Pipeline脚本中调用的方法执行被Script Security Plugin拒绝时有下面两种解决方式:

配置Script Security Plugin允许执行(不推荐)

gin插件的白名单中并没有java.time.Instant.parse方法。在Jenkins中http://<jenkins-url>//scriptApproval/页面中可以配置允许该方法运行。

script-approval.png

尝试使用其他的方法(推荐)

尝试使用白名单中的其他方法代替该方法,如前面的Instant.parse考虑使用java.time.LocalDateTime.parse('2019-07-15T07:24:29.830388369Z', DateTimeFormatter.ISO_DATE_TIME),这个方法在Script Security Plugin的白名单中。

参考

  • [script-security-plugin]https://github.com/jenkinsci/script-security-plugin)