大规模部署
Last updated
Last updated
百度内部主要是 Java/PHP 两种语言,其中Java服务器主要是 tomcat。目前,我们只提供了 Java + Tomcat 环境的批量安装脚本,可在源代码仓库里找到:
批量安装脚本会执行如步骤:
遍历所有名字为 "java" 的进程
获取进程相关信息
进程检查: 获取启动参数、环境变量信息,检查是否为 tomcat 进程,如果不是,跳过
端口检查: 尝试获取 tomcat 一个可用的 HTTP 端口,如果找不到跳过当前进程
权限检查: 如果用户为root,使用su进行安装;否则检查进程UID是否和当前用户一致,不一致跳过
用户检查: 检查是否能否获取到当前用户名,获取不到就跳过
版本检查: 检查 tomcat/jdk 是否为支持的范围,不支持就跳过
冲突检查: 检查是否有其他的 javaagent 参数,如果发现且不为 openrasp,就跳过
安装流程
首先执行 RaspInstall.jar 进行安装,如果出错进入回滚流程
然后尝试关闭 tomcat 服务器,最多等待30s
之后尝试启动 tomcat 服务器,并不断尝试访问之前找到的 URL 地址,最多尝试60次
如果失败,进入回滚流程
回滚流程
执行卸载操作,然后启动 tomcat 服务器
如果无法启动,打印错误
最后上传完整的脚本日志,包括安装和回滚(如果有)
对于 alpine 容器,需要增加如下内容
如果不能运行,请尝试增加软连接
Tomcat 示例
假设 tomcat 安装路径为 /tomcat/,在服务器启动之前增加 ADD + RUN 命令即可:
SpringBoot 示例
假设 springboot 打包后的jar为 /springboot.jar,请先解压缩 rasp 相关文件,然后修改 JVM 启动参数:
请在 apache/php-fpm 启动前增加如下命令
当然,在实际上线的过程中,我们还编写了一个打包脚本,用来生成单文件的安装包。有兴趣可以参考 相关脚本。
容器部署通常都需要定制。在百度内部,我们一般是修改 Dockerfile,并在发布镜像时集成 OpenRASP。在执行下面的命令之前,请先。
更多内容可参考
更多内容可参考