开源测试工具 新增流量脱敏 | 流量回放平台 AREX 0.5.0 发布

lijing-22 · 2023年09月01日 · 最后由 陈恒捷 回复于 2023年09月02日 · 2500 次阅读

新增功能

1. 增加流量脱敏功能

当录制生产上真实流量时,在涉及客户安全数据或者一些商业性敏感数据的情况下,我们往往需要针对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。

目前 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 目录。这样,服务就可以正确地读取密钥文件并进行加密操作了。

2. 增加一键 Debug 功能

相关链接:https://github.com/arextest/arex/issues/327

现在可以对回放失败的用例进行快捷调试。

在回放报告中,点击 Case 列表数据中某条数据行的 Debug,可以在本地调试该用例。新跳转的页面类似于接口请求,AREX 会自动填充接口的调用地址和路径,需要添加具体的 IP 和端口,补全 URL 后,即可点击 Send 进行调试。

3. 支持 Apollo 等配置中心的录制和回放

相关链接:https://github.com/arextest/arex/issues/325

Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端。AREX 目前已新增 Apollo 等配置中心的录制和回放。

4. 比对前对报文进行 Base64 解码

相关链接:https://github.com/arextest/arex/issues/305

对于某些 Json 报文,由于 Base64 编码的原因,无法直接将录制和回放的报文进行比对。

因此新版本中,我们对 Schedule Service 中的报文进行了 Base64 解码,然后判断解码后的数据是否为 Json 格式。如果解码后的数据是 Json 格式,就保留解码后的 Json 数据;否则,保留原始的 Base64 编码数据。这样做可以更加准确和有效地进行报文比对。

5. 支持使用 GitLab OAuth 进行用户身份验证和授权

相关链接: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

6. 支持删除已搭载 Agent 的机器

相关链接:https://github.com/arextest/arex/issues/363

可以在前端页面直接删除已搭载 Agent 的录制机器,前往 Replay > Setting > Record 进行设置,删除后将停止录制该机器。

优化

应用设置移动至回放测试中

前往 Replay 页面点击应用名右侧的设置按钮,进行录制设置、回放设置、比对忽略、数组乱序比对、删除应用等操作。

问题修复

1. 修复邀请链接无效的问题

相关链接:https://github.com/arextest/arex/issues/336

之前的版本中,邀请链接 arex:8080 需要根据本地部署的实际情况进行手动修改才能进行访问,目前该问题已修复。

2. 修复用例录制数量刷新无反应的问题

相关链接:https://github.com/arextest/arex/issues/383

回放报告页面中,应用名右上角显示的用例录制数量点击刷新后无反应,需要刷新整个页面才更新,目前已修复。

3. 修复新建环境变量后无法立即生效的问题

相关链接:https://github.com/arextest/arex/issues/345

新建/修改环境变量后,需要重新切换至当前环境才生效,目前已修复。

更新 AREX

1. 安装 AREX

进入 docker-compose.yml 所在目录,更新前需先停止原有服务:

cd deployments
docker-compose down -v

更新 deployments 仓库,重新启动 AREX:

git pull
docker-compose up -d

2. 部署 AREX Agent

推荐适配 0.3.8 版本的 AREX Java Agent。


共收到 1 条回复 时间 点赞

点赞!AREX 功能越来越完善了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册