DS加密字段用户指南
1.DataStore服务端相关配置
DataStore服务端默认是关闭加密相关功能的,如果需要使用DataStore的加密功能,要配置相关环境变量。
1.1 使用本地密钥管理
ENCRYPT_ENABLE=trueENCRYPT_TYPE=LCOALENCRYPT_LOCAL_SUPERKEY=超级密钥ENCRYPT_LOCAL_SUPERKEY需要自己设置
1.2 使用KMS密钥管理
ENCRYPT_ENABLE=trueENCRYPT_TYPE=KMSENCRYPT_KMS_REGIONID=KMS区域IDENCRYPT_KMS_ACCESSKEYID=AccessKeyENCRYPT_KMS_SECRET=SecretENCRYPT_KMS_KEYALIAS=key别名上面配置中除ENCRYPT_ENABLE和ENCRYPT_TYPE外,其他参数的值需要去阿里云KMS控制台开通KMS服务并创建密钥后获取。

1.3 自定义当前明文密钥和盐值
ENCRYPT_ENABLE=trueENCRYPT_TYPE=LCOALENCRYPT_LOCAL_SUPERKEY=超级密钥LOCAL_AES_KEY=自定义的明文密钥LOCAL_IVPARAMETER=自定义的盐值使用自定义的明文密钥和盐值时,ENCRYPT_TYPE必须为LOCAL,此外,一旦使用该模式,代表使用DS的所有租户都将使用该密钥和盐值。 该方式不符合加密功能的正常流程,非特殊情况下不建议使用。
2. 设置模型字段为加密字段
例如有员工Staff模型,Staff中有两个属性,姓名和薪资,薪资保存到数据库中时需要加密存储,这时只需要在薪资属性上添加@Encrypted注解即可。 上报模型元信息并发布成功后就可以生效。
@Model(name = "员工")public class Staff extends BaseModel<Long> {
@Field(name = "Item name") private String name;
@Encrypted @Field(name = "工资") private String salary;}发布成功后,交付控制台会显示该字段是否为加密字段。
上图片中的AES_256为超级密钥加密明文密钥的算法,不是真正用来加密业务数据的算法,加密业务数据使用的是AES_128。
3.加密字段的增删改查操作
由于DS的加密功能对业务方来说是无感知的,所以加密字段的增删改查操作和普通字段无异,但要注意加密字段的一些使用限制:
- 已存在的加密字段在存在数据的情况下不能转为非加密字段
- 已存在的非加密字段在存在数据的情况下不能转为加密字段(后续支持)
- 字段指令@Encrypted与@Field中的defaultValue属性不能共存,即加密字段不可设置默认值
- 加密字段的数据类型支持所有数值和字符类型,如int,String等
- 加密字段只支持等值查询操作,不支持范围查询等其他操作。
- 如果没有配置加密相关的环境变量或者环境变量不可用,无法操作加密字段