- 目标:希望在Test环境中开启Contrast 安全防护;在Prod中不开启。
- 分析:Contrast对项目进行安全防护的原理:The Contrast agent begins securing your code by adding sensors to the entire software stack of your applications - from runtime to custom code - to directly measure vulnerabilities and attacks.因此考虑在构建image之前完成目标要求。
- 解决思路:在构建image的时候,可手动临时设置是否开启Contrast,通过下面设置的两个环境变量曲线救国。
前期必要配置
在构建image之前,需要在gradle.build中添加contrast的依赖,如下:
configurations {
contrastAgent
}
//这里指定了contrast version,因此需要提前把对应版本的contrast下载到指定文件夹,比如:/etc/contrast/java/
def contrast_version = "3.6.3.8220"
dependencies {
contrastAgent "com.contrastsecurity:contrast-agent:${contrast_version}"
}
- . 然后,创建一个image(包含启动contrast)的步骤:
在 ./gradlew clean build之前,先声明下面两个环境变量(第一个变量指定contrast agent的jar包位置,第二个变量指定contrast configuration文件位置)
export CONTRAST_AGENT_JAR="/etc/contrast/java/contrast-agent-3.6.3.8220.jar"
export JAVA_OPTS="$JAVA_OPTS -javaagent:$CONTRAST_AGENT_JAR -Dcontrast.config.path="/etc/contrast/java/contrast_security.yaml
最后再执行build操作,得到image。
- . 创建一个不包含contrast agent的image步骤:直接在项目根目录执行 ./gradlew clean build,得到image。
网友评论