Почему-то необходимо рассмотреть проблему десенсибилизации данных, но не только не хочется влиять на работоспособность данных из-за десенсибилизации, но и нужно надежно защитить какую-то конфиденциальную информацию. Поэтому, только что решив поставленную задачу, я начал исследовать различные методы десенсибилизации и искать наиболее подходящее решение десенсибилизации для текущей ситуации.
Для уже запущенных предприятий: как добиться беспрепятственной трансформации десенсибилизации прозрачным, безопасным способом с низким уровнем риска без изменения бизнес-логики и бизнес-SQL?
В поле моего зрения попала Apache ShardingSphere. Apache ShardingSphere — это экосистема, состоящая из промежуточного программного решения для распределенной базы данных с открытым исходным кодом. Она состоит из трех независимых моделей: Sharding-JDBC, Sharding-Proxy и Sharding-Sidecar (в планах). быть смешаны и развернуты с составом продукта. Все они могут обеспечивать стандартизированное разделение данных, распределенные транзакции и функции распределенного управления и могут применяться к различным сценариям приложений, таким как изоморфизм Java, гетерогенные языки, контейнеры и облачные среды.
Сейчас бизнес запущен, а открытый текст раньше хранился в базе данных. По некоторым причинам необходимо снизить чувствительность и исправить онлайн-бизнес. Чтобы решить эту проблему, необходимо рассмотреть три вопроса:
-
1. Как снизить чувствительность большого количества исторических данных.
-
2,Как десенсибилизировать вновь добавленные данные и сохранить их в базе данных без изменения бизнес-SQL и логики.
-
3. Как безопасно осуществить миграцию бизнес-системы между открытым текстом и данными зашифрованного текста.
Существуют профессиональные методы десенсибилизации для десенсибилизации статического бизнеса, в том числе некоторые инструменты десенсибилизации или использование сценариев SPL или хранимых процедур для десенсибилизации биржевых данных. Поэтому на этот раз мы в основном изучаем, как выполнять добавочную десенсибилизацию данных, не затрагивая бизнес-логику.
Во-первых, принцип десенсибилизации данных
Encrypt-JDBC, предоставляемый ShardingSphere, развертывается вместе с бизнес-кодом. Бизнес-стороне необходимо выполнить программирование JDBC для Encrypt-JDBC. Поскольку Encrypt-JDBC реализует все стандартные интерфейсы JDBC, бизнес-код можно использовать совместимо без дополнительных модификаций. На этом этапе все взаимодействия между бизнес-кодом и базой данных возложены на Encrypt-JDBC. Предприятиям нужно только предоставить правила десенсибилизации.В качестве моста между бизнес-кодом и базовой базой данных Encrypt-JDBC может перехватывать поведение пользователя и взаимодействовать с базой данных после изменения поведения..
Encrypt-JDBC перехватывает SQL, инициированный пользователем, анализирует его с помощью синтаксического анализатора SQL, понимает поведение SQL, а затем выясняет поля, которые необходимо десенсибилизировать, и шифрование и дешифрование, используемые целью, в соответствии с правилами десенсибилизации, переданными в пользователем.После того, как поле зашифровано и расшифровано, оно взаимодействует с базовой базой данных. ShardingSphere шифрует открытый текст, запрошенный пользователем, и сохраняет его в базовой базе данных, а когда пользователь делает запрос, зашифрованный текст извлекается из базы данных, расшифровывается и возвращается конечному пользователю. ShardingSphere защищает десенсибилизированную обработку данных, поэтому пользователям не нужно воспринимать процесс обработки синтаксического анализа SQL, шифрования и дешифрования данных, а также использовать десенсибилизированные данные так же, как обычные данные.
Во-вторых, конфигурация десенсибилизации
Мы можем напрямую использовать конфигурацию yaml, чтобы объяснить настройку правил десенсибилизации.
1, конфигурация источника данных
Относится к конфигурации источника данных.
spring:
application:
name: sharding-jdbc-examples
main:
allow-bean-definition-overriding: true
shardingsphere:
datasource: #数据源配置
names: ds
ds:
url: jdbc:mysql://127.0.0.1:3306/test1?useSSL=false&useUnicode=true&serverTimezone=UTC
type: com.alibaba.druid.pool.DruidDataSource
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
2. Конфигурация шифратора
Это относится к тому, какая стратегия шифрования используется для шифрования и дешифрования. В настоящее время ShardingSphere имеет две встроенные стратегии шифрования и дешифрования: AES/MD5. Пользователи также могут самостоятельно реализовать набор алгоритмов шифрования и дешифрования, реализовав интерфейс, предоставляемый ShardingSphere.
encrypt:
encryptors:
encryptor_aes:
type: aes #加解密器类型,可自定义或选择内置类型:MD5/AES
props:
aes.key.value: 123456* #属性配置, 注意:使用AES加密器,需要配置AES加密器的KEY属性:aes.key.value
qualifiedColumns: t_user.password
3. Конфигурация стола десенсибилизации
Он используется, чтобы указать ShardingSphere, какой столбец в таблице данных используется для хранения данных зашифрованного текста (cipherColumn), какой столбец используется для хранения данных открытого текста (plainColumn) и какой столбец пользователь хочет использовать для записи SQL (logicColumn).
tables:
t_user:
columns:
passowrd: #logicColumn
plainColumn: passowrd #plainColumn
cipherColumn: newpassowrd #cipherColumn
encryptor: encryptor_aes #加密器配置
4. Настройка свойств запроса
Когда данные открытого текста хранятся в базовой таблице базы данных, данные зашифрованного текста используются для принятия решения о том, возвращать ли данные открытого текста в таблицу базы данных или данные зашифрованного текста запроса возвращаются после расшифровки с помощью Encrypt-JDBC.
props:
# 打印SQL
sql.show: true
check:
table:
metadata: true
# 是否在启动时检查分表元数据一致性
enabled: true
query:
with:
cipher:
# 选择使用明文或者密文字段进行查询,true为密文
column: true
Когда эта информация настроена, шифрование данных может быть завершено.
5. Процесс десенсибилизации
Теперь давайте воспользуемся созданной ранее конфигурацией для проведения простого теста.
После теста мы видим, что с помощью конфигурации десенсибилизации, предоставленной пользователем, данные находят logicColumn, поэтому логический столбец и соответствующие ему данные в виде открытого текста десенсибилизированы. Как можно заметитьShardingSphere преобразует ориентированные на пользователя логические столбцы и базовые столбцы открытого текста и зашифрованного текста, ориентированные на базу данных, в имена столбцов и десенсибилизирующее отображение данных.
Понять логику новых данных, запрос данных, модифицировать также аналогичный принцип. В то же время, когда запрос также выберете использовать раздел текстового текста или шифра для поиска.
3. Новый бизнес и старый бизнес
1. Новый бизнес
Если старое бизнес-преобразование не используется, поле plainColumn можно опустить и использовать cipherColumn напрямую.
2. Старый бизнес
Для задач, которые уже были запущены, поскольку в базе данных имеется большое количество открытых текстовых данных, как очистить существующие данные и одновременно зашифровать новые данные, чтобы бесшовно соединить две системы, — это проблема, которую нам нужно решить.
1. Перед переносом задачи
Перед очисткой данных используем настроенный до меня, CRUD продолжаем использовать простой, просто добавляем поле для хранения зашифрованных данных в БД,Не действуйте самостоятельно перед очисткой стоковых данных.
2. Миграция задач
Недавно добавленные данные были сохранены в столбце зашифрованного текста Encrypt-JDBC, а открытый текст в столбце открытого текста.После того, как исторические данные зашифрованы и очищены деловой стороной, зашифрованный текст также сохраняется в столбце зашифрованного текста. То есть текущая база данных содержит как открытый текст, так и зашифрованный текст. В то же время мы можем в любое время изменить, являются ли запрашиваемые данные открытым текстом или зашифрованным текстом, путем настройки.
Перед проверкой надежности системы и правильности данных не удаляйте непосредственно данные открытого текста, на всякий случай.
2. После переноса задачи
Благодаря требованиям кафедры аудита безопасности, в целом невозможно для бизнес-систем сохранить столбцы открытого текста и столбцов зашифрованного текста базы данных синхронно и навсегда. Нам нужно удалить данные столбца на открытом воздухе после того, как система стабильна. После этого наша конфигурация таблицы десенсибилизации также может быть изменена. (Конечно, в особых случаях данные на открытом тексте также могут быть оставлены для резервного копирования, что следует учитывать фактическую ситуацию)
tables:
t_user:
columns:
passowrd: #logicColumn
cipherColumn: newpassowrd #cipherColumn
encryptor: encryptor_aes #加密器配置
4. Причины выбора ShardingSphere для десенсибилизации
- 1. ShardingSphere обеспечивает автоматизированный и прозрачный процесс десенсибилизации данных, и нам не нужно обращать внимание на детали промежуточной реализации десенсибилизации.
- 2 Предоставляет множество встроенных сторонних (AKS) стратегий десенсибилизации, которые можно использовать с простой настройкой.
- 3. Обеспечить API-интерфейс стратегии десенсибилизации, пользователи могут реализовать интерфейс для использования пользовательской стратегии десенсибилизации для десенсибилизации данных.
- 4. Поддержка переключения между различными стратегиями десенсибилизации.
- 5. Для онлайн-бизнеса данные открытого текста и данные зашифрованного текста могут храниться синхронно, а столбец открытого текста или столбец зашифрованного текста можно использовать для запроса через конфигурацию. Он может реализовать безопасную и прозрачную миграцию данных до и после шифрования без изменения бизнес-запроса SQL.
Конечно, использование функции десенсибилизации + функция подтаблицы подбиблиотеки, часть специального SQL не поддерживает, правительство также предоставило спецификацию для запросов SQL дляканонический адрес
Всем привет,я Нанджу практикую джаву два с половиной года.Следующее мой WeChat.Друзья,кому нужны предыдущие карты или хотят обменяться опытом,могут общаться друг с другом.
Нуждающиеся студенты могут добавить мой официальный аккаунт, последние статьи в будущем будут в нем впервые, или вы можете попросить у меня ментальную карту