成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

基于 Sharding Sphere,實現數據 “一鍵脫敏”!

數據庫 其他數據庫
在真實業務場景中,數據庫中經常需要存儲某些客戶的關鍵性敏感信息如:身份證號、銀行卡號、姓名、手機號碼等,此類信息按照合規要求,通常需要實現加密存儲以滿足合規要求。

 在真實業務場景中,數據庫中經常需要存儲某些客戶的關鍵性敏感信息如:身份證號、銀行卡號、姓名、手機號碼等,此類信息按照合規要求,通常需要實現加密存儲以滿足合規要求。

痛點一:

通常的解決方案是我們書寫SQL的時候,把對應的加密字段手動進行加密再進行插入,在查詢的時候使用之前再手動進行解密。此方法固然可行,但是使用起來非常不便捷且繁瑣,使得日常的業務開發與存儲合規的細節緊耦合

痛點二:

對于一些為了快速上線而一開始沒有實現合規脫敏的系統,如何比較快速的使得已有業務滿足合規要求的同時,盡量減少對原系統的改造。(通常的這個過程至少包括:1.新增脫敏列的存儲 2.同時做數據遷移 3.業務的代碼做兼容邏輯等)。

Apache ShardingSphere下面存在一個數據脫敏模塊,此模塊集成的常用的數據脫敏的功能。其基本原理是對用戶輸入的SQL進行解析攔截,并依靠用戶的脫敏配置進行SQL的改寫,從而實現對原文字段的加密及加密字段的解密。最終實現對用戶無感的加解密存儲、查詢。

脫敏配置Quick Start——Spring 顯示配置:

以下介紹基于Spring如何快速讓系統支持脫敏配置。Spring Boot 學習筆記,推薦給你學習下。

1.引入依賴 

  1. <!-- for spring namespace -->  
  2. <dependency>  
  3.     <groupId>org.apache.shardingsphere</groupId>  
  4.     <artifactId>sharding-jdbc-spring-namespace</artifactId>  
  5.     <version>${sharding-sphere.version}</version>  
  6. </dependency> 

2.創建脫敏配置規則對象

在創建數據源之前,需要準備一個EncryptRuleConfiguration進行脫敏的配置,以下是一個例子,對于同一個數據源里兩張表card_info,pay_order的不同字段進行AES的加密: 

  1. private EncryptRuleConfiguration getEncryptRuleConfiguration() {  
  2.     Properties props = new Properties();  
  3.     //自帶aes算法需要  
  4.     props.setProperty("aes.key.value", aeskey);  
  5.     EncryptorRuleConfiguration encryptorConfig = new EncryptorRuleConfiguration("AES", props);  
  6.     //自定義算法  
  7.     //props.setProperty("qb.finance.aes.key.value", aeskey);  
  8.     //EncryptorRuleConfiguration encryptorConfig = new EncryptorRuleConfiguration("QB-FINANCE-AES", props);  
  9.     EncryptRuleConfiguration encryptRuleConfig = new EncryptRuleConfiguration();  
  10.     encryptRuleConfig.getEncryptors().put("aes", encryptorConfig);  
  11.     //START: card_info 表的脫敏配置  
  12.     {  
  13.         EncryptColumnRuleConfiguration columnConfig1 = new EncryptColumnRuleConfiguration("", "name", "", "aes");  
  14.         EncryptColumnRuleConfiguration columnConfig2 = new EncryptColumnRuleConfiguration("", "id_no", "", "aes");  
  15.         EncryptColumnRuleConfiguration columnConfig3 = new EncryptColumnRuleConfiguration("", "finshell_card_no", "", "aes");  
  16.         Map<String, EncryptColumnRuleConfiguration> columnConfigMaps = new HashMap<>();  
  17.         columnConfigMaps.put("name", columnConfig1);  
  18.         columnConfigMaps.put("id_no", columnConfig2);  
  19.         columnConfigMaps.put("finshell_card_no", columnConfig3);  
  20.         EncryptTableRuleConfiguration tableConfig = new EncryptTableRuleConfiguration(columnConfigMaps);  
  21.         encryptRuleConfig.getTables().put("card_info", tableConfig);  
  22.     }  
  23.     //END: card_info 表的脫敏配置  
  24.     //START: pay_order 表的脫敏配置  
  25.     { 
  26.          EncryptColumnRuleConfiguration columnConfig1 = new EncryptColumnRuleConfiguration("", "card_no", "", "aes");  
  27.         Map<String, EncryptColumnRuleConfiguration> columnConfigMaps = new HashMap<>();  
  28.         columnConfigMaps.put("card_no", columnConfig1);  
  29.         EncryptTableRuleConfiguration tableConfig = new EncryptTableRuleConfiguration(columnConfigMaps);  
  30.         encryptRuleConfig.getTables().put("pay_order", tableConfig);  
  31.     }  
  32.     log.info("脫敏配置構建完成:{} ", encryptRuleConfig);  
  33.     return encryptRuleConfig;  

說明:

    1. 創建 EncryptColumnRuleConfiguration 的時候有四個參數,前兩個參數分表叫plainColumn、cipherColumn,其意思是數據庫存儲里面真實的兩個列(名文列、脫敏列),對于新的系統,只需要設置脫敏列即可,所以以上示例為plainColumn為”“。

    2. 創建EncryptTableRuleConfiguration 的時候需要傳入一個map,這個map存的value即#1中說明的EncryptColumnRuleConfiguration ,而其key則是一個邏輯列,對于新系統,此邏輯列即為真實的脫敏列。Sharding Shpere在攔截到SQL改寫的時候,會按照用戶的配置,把邏輯列映射為名文列或者脫敏列(默認)如下的示例

3.使用Sharding Sphere的數據源進行管理

把原始的數據源包裝一層 

  1. @Bean("tradePlatformDataSource")   
  2. public DataSource dataSource(  
  3.  @Qualifier("druidDataSource") DataSource ds) throws SQLException {  
  4.  return EncryptDataSourceFactory.createDataSource(ds, getEncryptRuleConfiguration(), new Properties());   

脫敏配置Quick Start——Spring Boot版:

以下步驟使用Spring Boot管理,可以僅用配置文件解決:

1.引入依賴 

  1. <!-- for spring boot -->  
  2. <dependency>  
  3. <groupId>org.apache.shardingsphere</groupId>  
  4.     <artifactId>sharding-jdbc-spring-boot-starter</artifactId>  
  5.     <version>${sharding-sphere.version}</version>  
  6. </dependency>  
  7. <!-- for spring namespace -->  
  8. <dependency>  
  9.     <groupId>org.apache.shardingsphere</groupId>  
  10.     <artifactId>sharding-jdbc-spring-namespace</artifactId>  
  11.     <version>${sharding-sphere.version}</version>  
  12. </dependency> 

2.Spring 配置文件 

  1. spring.shardingsphere.datasource.name=ds  
  2. spring.shardingsphere.datasource.ds.type=com.alibaba.druid.pool.DruidDataSource  
  3. spring.shardingsphere.datasource.ds.driver-class-name=com.mysql.jdbc.Driver  
  4. spring.shardingsphere.datasource.ds.url=xxxxxxxxxxxxx 
  5. spring.shardingsphere.datasource.ds.username=xxxxxxx  
  6. spring.shardingsphere.datasource.ds.password=xxxxxxxxxxxx  
  7. # 默認的AES加密器  
  8. spring.shardingsphere.encrypt.encryptors.encryptor_aes.type=aes  
  9. spring.shardingsphere.encrypt.encryptors.encryptor_aes.props.aes.key.value=hkiqAXU6Ur5fixGHaO4Lb2V2ggausYwW  
  10. # card_info 姓名 AES加密  
  11. spring.shardingsphere.encrypt.tables.card_info.columns.name.cipherColumn=name  
  12. spring.shardingsphere.encrypt.tables.card_info.columns.name.encryptor=encryptor_aes  
  13. # card_info 身份證 AES加密  
  14. spring.shardingsphere.encrypt.tables.card_info.columns.id_no.cipherColumn=id_no  
  15. spring.shardingsphere.encrypt.tables.card_info.columns.id_no.encryptor=encryptor_aes  
  16. # card_info 銀行卡號 AES加密  
  17. spring.shardingsphere.encrypt.tables.card_info.columns.finshell_card_no.cipherColumn=finshell_card_no  
  18. spring.shardingsphere.encrypt.tables.card_info.columns.finshell_card_no.encryptor=encryptor_aes  
  19. # pay_order 銀行卡號 AES加密  
  20. spring.shardingsphere.encrypt.tables.pay_order.columns.card_no.cipherColumn=card_no  
  21. spring.shardingsphere.encrypt.tables.pay_order.columns.card_no.encryptor=encryptor_aes 

另外,關注公眾號Java技術棧,在后臺回復:面試,可以獲取我整理的 Java 系列面試題和答案,非常齊全。 

 

責任編輯:龐桂玉 來源: Java技術棧
相關推薦

2022-05-16 08:50:23

數據脫加密器

2024-07-17 08:29:20

2015-02-09 15:25:52

換膚

2020-11-24 11:00:24

前端

2012-03-01 14:00:08

2021-02-22 11:07:49

Windows 10微軟數據傳輸

2011-09-15 19:05:49

windows 7一鍵關機

2022-07-22 14:32:29

賬號登錄服務鴻蒙

2015-11-03 15:29:49

ONOS開放網絡操作系統SDN

2010-11-08 13:58:14

Check Point互聯網安全移動訪問軟件刀片

2015-07-30 16:18:14

企業網D1Net

2022-07-27 14:59:20

原子化服務鴻蒙

2022-07-04 11:28:14

RancherK8s集群云計算

2023-06-15 10:00:00

Jenkins任務操作

2025-04-17 04:00:00

2022-06-21 14:44:38

接口數據脫敏

2024-11-07 10:55:26

2024-11-08 15:56:36

2021-10-08 08:58:35

MySQL函數脫敏

2020-05-14 12:09:56

Centos7EFK部署
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 巨大荫蒂视频欧美另类大 | 自拍 亚洲 欧美 老师 丝袜 | 国产中文字幕在线 | 午夜天堂精品久久久久 | 欧美激情一区二区三级高清视频 | 超碰在线播| 免费一区二区三区 | 亚洲一级淫片 | 成人视屏在线观看 | 日本精品久久久久久久 | 亚洲综合国产 | 成人看片在线观看 | 国产美女精品 | 日韩av成人在线 | 91一区| 亚洲欧美日韩电影 | 一级午夜aaa免费看三区 | 国产精品久久久久久久久久 | 视频一区二区在线观看 | 国产亚洲精品久久久久久牛牛 | 免费av毛片| 国产美女一区二区 | 操夜夜| 精品99在线 | 色av一区二区 | 欧美成人精品一区二区男人看 | 狠狠爱免费视频 | 人和拘一级毛片c | 在线成人福利 | 91美女在线观看 | 欧美另类视频 | av大片在线观看 | 91视视频在线观看入口直接观看 | 美美女高清毛片视频免费观看 | 91精品国产一区二区三区香蕉 | 亚洲一区二区国产 | 狠狠干狠狠操 | h视频免费在线观看 | 91精品久久久久久久久中文字幕 | 在线观看av不卡 | 日本视频免费观看 |