Jenkins插件之Script Security Plugin
2018-07-15
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/
页面中可以配置允许该方法运行。
尝试使用其他的方法(推荐) #
尝试使用白名单中的其他方法代替该方法,如前面的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)