zno2

国密信安NetEDS实操demo

1.准备工作

1.1 安装

解压 “08-国密改造.zip”

 

解压 “08-国密改造\信安NetEDS安全中间件(JAVA)2.0.2.5_Linux_Windows_build20220630.zip”

 

解压 “08-国密改造\信安NetEDS安全中间件(JAVA)2.0.2.5_Linux_Windows_build20220630\DEMO\ SDK-DEMO.tar.gz”

 

执行SDK-DEMO\sql\crebas_mysql.sql (该sql创建了一个数据库和一张表,如果在已有数据库中建表可以仅执行 create table 不执行 create database)

 

1.2 数据库配置和加密字段

本次demo验证的数据库配置和加密字段如下:

地址:1.119….:33060
数据库:db_dev_qishi
用户:dev_qishi_rw
密码:oweBohC0wze…
表:sdk_person
加密字段:phone

 

补充:数据库地址需要外网访问,信安应用加密网关要通过以上配置获取数据库元数据,其中涉及create 和 drop 等高级权限,是为了生成sdk.aoe 配置。如果不能连外网或者权限不足是无法正常加解密的。

1.3 配置SDK-DEMO\conf\sdk.properties

 

要保证应用网关地址可访问;appId和secretKey是被集成方提供数据库连接等配置给信安,然后由信安提供;如果未启用ssl无需配置证书。

 

本次验证的实例:

 

sdk.server.host=113.57.xxx
sdk.server.port=8216
# Local Encryption 离线加解密 ,Online Encryption 在线加解密, TEST Encryption 测试模式
#sdk.scenario=TEST Encryption
sdk.scenario=Local Encryption
sdk.socket.timeout = 10
sdk.secretKey=5d7629ac3fd0426ba1b…
sdk.appId=fg6D4F155D0…
sdk.target.driverClass=com.mysql.cj.jdbc.Driver
#sdk.target.driverClass=dm.jdbc.driver.DmDriver
sdk.ssl.enable=false
sdk.TrustCertificatePath=/opt/SDK-DEMO/cert

1.3 配置 SDK-DEMO\conf\application.yml

 

这个配置只需修改mysql驱动部分,其他配置不变,

本次验证实例:

app:
  datasource:
    mysql:
      enable: true
# cn.com.infosec.neteds.sdk.jdbc.CipherDriver
# com.mysql.cj.jdbc.Driver
      driver-class-name: cn.com.infosec.neteds.sdk.jdbc.CipherDriver
      jdbc-url: jdbc:mysql://1.119.xxx:33060/db_dev_qishi?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&generateSimpleParameterMetadata=true
      username: dev_xxx
      password: oweBohC0wze…

1.4 配置 SDK-DEMO\conf\logback-spring.xml

可以自定义 <property name="LOG_HOME" value="/logs/tablego-springboot"/>这是存放日志文件的目录

 

修改appender

    <root level="INFO">
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </root>

 

2.验证步骤

2.1 运行SDK-DEMO\bin\sdk-integration-test.jar

不要直接执行restart.sh ,首先这个是linux脚本,再次这里面开启了jvm调试

直接cmd进入 bin 所在目录,执行一下命令:

java -jar -Xbootclasspath/a:../conf sdk-integration-test.jar

 

成功启动最后一行会有以下提示

 

2.2 访问 http://localhost:8080

 

 

2.3 添加用户数据

点开左侧 测试数据1 – 用户信息 – 添加

 

 

填写姓名、性别、邮箱、电话(该字段是加密字段)

 

 

成功提示

 

 

数据库字phone 已经是密文

 

 

前端展示是明文

 

 

原始sql未收到影响,复杂sql尚需验证

 

3.QA

3.1 获取加密配置失败: HTTP error:connect timed out

 

答:这个问题是 加密网关地址不通,可以向信安工人人员获取最新网关地址

3.2 获取加密配置失败: 25057SIGN值校验失败

 

答:这个问题是appId 配置错误,可以向信安工作人员提供数据库加密字段等配置后,由工作人员注册成功后提供

3.3 对方配置加密字段失败

 

答:这个问题是因为提供的数据库账户权限不足,需要有create和drop等高级权限

3.4 获取加密配置失败: get aoe Config error

 

 

答:这个问题是信安尚未配置加密信息,等配置完毕后再试

3.5 cipher Driver register success

 

 

答:恭喜你,获取加密配置成功,一切正常,可以体验demo加解密了

 

数据结构:

 

{
	"code": 0,
	"msg": "成功",
	"data": [
		{
			"dbName": "db_dev_qishi",
			"tableName": "sdk_person",
			"columnId": "318d0403dfa3498aa7xxx",
			"columnName": "PHONE",
			"encryptPolicyId": "3",
			"algorithm": "SM4_128",
			"cmkId": "f0d761c6b0a24a05937a4xxx",
			"isFpe": 1,
			"fpeModel": 1,
			"isFuzzyQuery": 0
		}
	]
}

 

 

补充:这个插件是在jdbc层面对敏感数据进行加解密,并不会入侵代码

 

posted on 2023-06-01 16:17  zno2  阅读(325)  评论(0编辑  收藏  举报

导航