当录制生产上真实流量时,在涉及客户安全数据或者一些商业性敏感数据的情况下,我们往往需要针对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。
目前 AREX 可以在进行数据落库时对数据进行脱敏,以保护敏感信息的安全性。具体实现方式是通过 SPI 机制,加载外挂 JAR 包,动态加载加密方式。
AREX 提供了默认的加密 JAR 包,该 JAR 包使用 AES 加密算法实现数据加密,在 System Setting 页面,填写加密 JAR 包的 URL 链接,例如 Maven 仓库中的 JAR 包下载链接。填写完成后,需要重启 arex-storage 和 arex-schedule 服务才能使加密生效。如果使用系统提供的加密 JAR 包,则还需要配置 AES 密钥文件。
接上,在使用系统提供的加密 JAR 包时,需要进行密钥文件的配置,arex-storage 服务和 arex-schedule 服务需要读取 AES 算法的密钥,以确保服务能够正确地进行加密操作。
将 AES 密钥文件 aesKey.bin 存放在 deployments 文件夹中的 arex-extension/arex-storage 和 arex-extension/arex-schedule 目录中。需要注意的是,存放密钥文件的位置和文件名需要严格按照要求进行,否则服务可能无法正确读取密钥文件。
在生成密钥文件时,文件名和后缀名是固定的,不能更改。生成代码如下:
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.io.File;
import java.io.FileOutputStream;
public class AesKeyWriter {
private static final String AES_KEY_FOLDER_PATH = "./extension";
private static final String AES_KEY_FILE_PATH = AES_KEY_FOLDER_PATH + "/aesKey.bin";
private static void writeAesKey(String keyFilePath) {
try {
File extensionFolder = new File(AES_KEY_FOLDER_PATH);
extensionFolder.mkdirs();
// AES key generation
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
// The key length can be adjusted as needed. aes only supports 128-bit, 192-bit or 256-bit keys
keyGenerator.init(256);
SecretKey secretKey = keyGenerator.generateKey();
byte[] keyBytes = secretKey.getEncoded();
// write key to file
FileOutputStream fos = new FileOutputStream(keyFilePath);
fos.write(keyBytes);
fos.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
writeAesKey(AES_KEY_FILE_PATH);
}
}
修改 docker-compose.yml 文件,将 arex-extension/arex-storage 目录映射到 arex-storage 服务所在容器的 extension 目录,将 arex-extension/arex-schedule 目录映射到 arex-schedule 服务所在 extension 目录。这样,服务就可以正确地读取密钥文件并进行加密操作了。
相关链接:https://github.com/arextest/arex/issues/327
现在可以对回放失败的用例进行快捷调试。
在回放报告中,点击 Case 列表数据中某条数据行的 Debug,可以在本地调试该用例。新跳转的页面类似于接口请求,AREX 会自动填充接口的调用地址和路径,需要添加具体的 IP 和端口,补全 URL 后,即可点击 Send 进行调试。
相关链接:https://github.com/arextest/arex/issues/325
Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端。AREX 目前已新增 Apollo 等配置中心的录制和回放。
相关链接:https://github.com/arextest/arex/issues/305
对于某些 Json 报文,由于 Base64 编码的原因,无法直接将录制和回放的报文进行比对。
因此新版本中,我们对 Schedule Service 中的报文进行了 Base64 解码,然后判断解码后的数据是否为 Json 格式。如果解码后的数据是 Json 格式,就保留解码后的 Json 数据;否则,保留原始的 Base64 编码数据。这样做可以更加准确和有效地进行报文比对。
相关链接:https://github.com/arextest/arex/issues/398
对于企业用户,如需使用企业用户权限,即对企业范围内的用户访问权限进行正式管理,可以在 docker-compose.yml 文件中 arex-report-service 加入以下配置项:
--Darex.oauth.gitlab.clientid=7dbc52caab4eb3d452c39***********2ccb349d01dd5e9d214c496c //GitLab 的 Client ID
-Darex.oauth.gitlab.secret=29e33cfabbca6df3429************6ce17d88b6f7c46f40dfc3 // GitLab 的 密钥
-Darex.oauth.gitlab.redirecturi=http://10.5.153.1:8088/auth // 固定配置,用于回调到 AREX 前端验证页面
-Darex.oauth.gitlab.uri=http://git.dev.sh.***.com // 公司内部部署的 GitLab 的地址
以上仅为示例,配置项可以根据实际情况进行修改。
完整配置如下所示:
arex-report-service:
image: arexadmin01/arex-report:$AREX_VERSION
container_name: arex-report
restart: always
ports:
- '8090:8080'
volumes:
- ./arex-logs/arex-report:/usr/local/tomcat/logs
environment:
- JAVA_OPTS=-Darex.report.mongo.uri=mongodb://arex:iLoveArex@mongodb:27017/arex_storage_db
-Darex.redis.uri=redis://redis:6379/
-Darex.storage.service.url=http://arex-storage-service:8080
-Darex.ui.url=http://arex:8080
-Darex.oauth.gitlab.clientid=7dbc52caab4eb3d452c39***********2ccb349d01dd5e9d214c496c
-Darex.oauth.gitlab.secret=29e33cfabbca6df3429************6ce17d88b6f7c46f40dfc3
-Darex.oauth.gitlab.redirecturi=http://10.5.153.1:8088/auth
-Darex.oauth.gitlab.uri=http://git.dev.sh.***.com
depends_on:
- mongodb
- redis
相关链接:https://github.com/arextest/arex/issues/363
可以在前端页面直接删除已搭载 Agent 的录制机器,前往 Replay > Setting > Record 进行设置,删除后将停止录制该机器。
前往 Replay 页面点击应用名右侧的设置按钮,进行录制设置、回放设置、比对忽略、数组乱序比对、删除应用等操作。
相关链接:https://github.com/arextest/arex/issues/336
之前的版本中,邀请链接 arex:8080
需要根据本地部署的实际情况进行手动修改才能进行访问,目前该问题已修复。
相关链接:https://github.com/arextest/arex/issues/383
回放报告页面中,应用名右上角显示的用例录制数量点击刷新后无反应,需要刷新整个页面才更新,目前已修复。
相关链接:https://github.com/arextest/arex/issues/345
新建/修改环境变量后,需要重新切换至当前环境才生效,目前已修复。
进入 docker-compose.yml 所在目录,更新前需先停止原有服务:
cd deployments
docker-compose down -v
更新 deployments 仓库,重新启动 AREX:
git pull
docker-compose up -d
推荐适配 0.3.8 版本的 AREX Java Agent。