Шифрование данных в OpenEdge
Transparent Data Encryption в OpenEdge
Как часть общей стратегии безопасности, Transparent Data Encryption в OpenEdge обеспечивает конфиденциальность данных, пока данные «неактивны» в базе данных. В приложении OpenEdge существует множество уровней безопасности, и прозрачное шифрование данных представляет собой самый внутренний уровень, как показано на следующем рисунке:
Контроль доступа к личным данным, когда они «неактивны» (то есть хранятся на диске в вашей базе данных), является ядром OpenEdge Transparent Data Encryption. Поддержка прозрачного шифрования данных встроена в СУБД и во все языковые клиенты. OpenEdge сочетает в себе различные алгоритмы шифрования и длины ключей шифрования, безопасное хранение ключей шифрования и средства управления доступом пользователей к вашим ключам шифрования, чтобы гарантировать, что шифрование ваших данных не может быть отменено кем-либо, кроме лиц, которым предоставлен доступ.
Прозрачное шифрование данных обеспечивает защиту от злоумышленников, пытающихся получить доступ к личным данным. Злоумышленники делятся на две категории: внутренние и внешние. Внутренний злоумышленник – это сотрудник, который злоупотребляет выданными разрешениям на доступ к данным. Внутренним злоумышленником может быть системный администратор, который имеет возможность обратиться к базе данных, даже если он не является администратором базы данных или администратором безопасности. Внешний злоумышленник – это тот, кто пытается получить доступ к данным из-за пределов вашей компании.
Внешние злоумышленники могут попытаться взломать сетевую безопасность вашей компании или получить копию базы данных другими способами. Вероятными внешними злоумышленниками могут быть люди, которые:
- Получили доступ к внутренней сети компании через вирус или ботнет через VPN в WAN / LAN.
- Получили доступ к украденному компьютеру с копией вашей базы данных.
- Смогли получить копию резервного носителя.
- Получили имя пользователя и пароль доступа путем обмана, например, выдавая себя за сотрудника и запрашивая изменение пароля.
Если злоумышленник получит копию зашифрованной базы данных, то он не сможет получить защищенные шифрованием данные без ключей шифрования.
Каждая зашифрованная база данных имеет единственный уникальный главный ключ базы данных (DMK). DMK создается и управляется администратором базы данных и хранится в хранилище ключей, которое отделено от базы данных. Хранилище ключей – это независимый объект, который обеспечивает безопасное хранение ключей шифрования и контролирует доступ в форме учетных записей пользователей.
Шифрование объектов базы данных управляется с помощью политик шифрования. Вы определяете, какие объекты должны быть зашифрованы, и шифр для объекта. Политики хранятся в базе данных в специальной области хранения политик шифрования. Ни один клиент не может обратиться к области политик шифрования. Политики объектов используют ключи шифрования виртуальных данных, полученные из DMK и указанного шифра. Ключ шифрования для каждого зашифрованного объекта базы данных уникален.
Далее рассмотрим процесс работы с зашифрованной базой данных от A до Я на примере стандартной базы данных для тестов sports2000 в каталоге $WRKDIR.
Подготовка базы данных sports2000
Для того чтобы иметь возможность шифровать отдельные объекты базы данных, эти объекты должны находиться в области второго типа (Type II). Поэтому в первую очередь мы подготовим базу данных sports2000 используя бинарный Dump&Load.
Выполните команду proenv для открытия командной строки OpenEdge. По умолчанию proenv переходит в рабочий каталог OpenEdge, как правило это /usr/wrk. Чтобы узнать ваш рабочий каталог проверьте содержимое переменной среды окружения $WRKDIR. В моём случае это каталог /PSC/122/wrk.
proenv>echo $WRKDIR /PSC/122/wrk
Создайте здесь каталог dbtde, перейдите в него:
proenv> mkdir dbtde proenv> cd dbtde
Скопируйте базу данных sports2000 в каталог dbtde:
proenv> prodb sports2000 sports2000 Procopy session begin for root on /dev/pts/1. (451) Database copied from /PSC/122/dlc/sports2000. (1365) Procopy session end. (334)
Создайте каталог bindump для бинарной выгрузки:
proenv> mkdir bindump
Выполнение Dump&Load
Создайте в каталоге dbtde файл create_dl.p со следующим кодом:
DEFINE VARIABLE dbase AS CHARACTER INIT "sports2000". DEFINE VARIABLE dmpdir AS CHARACTER INIT "./bindump". DEFINE STREAM dumpcmds. DEFINE STREAM loadcmds. OUTPUT STREAM dumpcmds TO dump.sh. OUTPUT STREAM loadcmds TO load.sh. FOR EACH _file WHERE _file-num > 0 AND _file-num < 32768 NO-LOCK. PUT STREAM dumpcmds UNFORMATTED "_proutil " + dbase + " -C dump " + _file-name + " " + dmpdir SKIP. PUT STREAM loadcmds UNFORMATTED "_proutil " + dbase + " -C load " + dmpdir + "/" + _file-name + ".bd" SKIP. END. OUTPUT STREAM dumpcmds CLOSE. OUTPUT STREAM loadcmds CLOSE. MESSAGE "Binary dump&load scripts created!" VIEW-AS ALERT-BOX. QUIT.
Выполните create_dl.p в базе sports2000 из каталога dbtde:
proenv> pro sports2000 -p create_dl.p ┌───────────── Message ─────────────┐ │ Binary dump&load scripts created! │ │ ───────────────────────────────── │ │ OK │ └───────────────────────────────────┘
В каталоге dbtde будут созданы два скрипта, один для выгрузки данных (dump.sh), второй для загрузки данных в новую базу данных (load.sh). Выдайте этим скриптам права на исполнение:
proenv> chmod 755 *.sh
Выполните скрипт dump.sh для бинарной выгрузки данных:
proenv> ./dump.sh
В каталоге bindump должны появиться файлы бинарной выгрузки для каждой таблицы из базы данных sports2000.
Выгрузите описание таблиц и значения секвенций из базы данных. См. тренинг Основы администрирования СУБД OpenEdge:
# b . # d "Schema Area":6,32;1 . # d "Employee":7,32;64 . f 320 d "Employee":7,32;64 . # d "Inventory":8,32;64 . f 640 d "Inventory":8,32;64 . # d "Cust_Data":9,32;64 . f 320 d "Cust_Data":9,32;64 . # d "Cust_Index":10,32;8 . f 320 d "Cust_Index":10,32;8 . # d "Order":11,32;64 . f 1280 d "Order":11,32;64 . # d "Misc":12,32;64 . f 320 d "Misc":12,32;64 .
Создайте контейнер из базы данных empty с именем базы данных sports2000:
proenv> prodb sports2000 empty Procopy session begin for root on /dev/pts/1. (451) Database copied from /PSC/122/dlc/empty. (1365) Procopy session end. (334)
Подключитесь к базе sports2000 в Data Dictionary в однопользовательском режиме и загрузите описание таблиц и значения секвенций, см. тренинг Основы администрирования СУБД OpenEdge.
Выполните старт базы данных в режиме No Integrity (-i):
proenv> proserve sports2000 -i OpenEdge Release 12.2.3 as of Thu Oct 29 18:13:27 EDT 2020 15:46:36 BROKER The startup of this database requires 28Mb of shared memory. Maximum segment size is 1024Mb. 15:46:36 BROKER 0: Multi-user session begin. (333) 15:46:36 BROKER 0: ** This session is being run with the no-integrity (-i) option. (512) 15:46:36 BROKER 0: Before Image Log Initialisation at block 92 offset 78. (15321) 15:46:36 BROKER 0: Login by root on /dev/pts/1. (452)
Выполните скрипт load.sh для загрузки бинарных данных:
proenv> ./load.sh
После завершения загрузки остановите базу данных и выполните полную переиндексацию:
proenv> proshut sports2000 -by
proenv> proutil sports2000 -C idxbuild all -B 512 -SG 64 -TB 64 -TM 32 -TMB 4096 -TF 80 -datascanthreads 8 -mergethreads 8 ... ... 184 indexes were rebuilt. (11465) Index rebuild complete. 0 error(s) encountered. Elapsed time: 12.449
Создайте резервную копию базы данных в офлайн:
proenv> probkup sports2000 sports2000.bak -com
База данных готова к шифрованию.
Активация шифрования
Когда будете готовы включить TDE, вам необходимо выполнить два обязательных шага:
- Добавить область шифрования
- Выполнить команду ENABLEENCRYPTION
Создайте структурный файл с именем encrypt.st и описанием одной области Encryption Policy Area:
e "Encryption Policy Area":120,32;64 .
Проверьте правильность файла:
proenv> prostrct add sports2000 encrypt.st -validate
Добавьте области в базу данных:
proenv> prostrct add sports2000 encrypt.st
proenv> prostrct list sports2000
Включите TDE в базе данных.
DMK по умолчанию использует шифр AES-CBC-128 как оптимальный в отношении сложности и производительности. Тем не менее, если ваши требования более или менее строгие, то вы можете указать другой шифр. Список поддерживаемых шифров:
----------- DMK Cipher Selection ----------- ----ID----Cipher---Mode---Size----Key type-- 1 AES CBC 128 binary 2 AES CBC 192 binary 3 AES CBC 256 binary 4 DES CBC 56 binary 5 DES3 CBC 168 binary 11 AES CBC 128 PBE 12 AES CBC 256 PBE --------- Object Cipher Selection ---------- ----ID----Cipher---Mode---Size----Key type-- 0 NULL NULL N/A N/A 1 AES CBC 128 binary 2 AES CBC 192 binary 3 AES CBC 256 binary 4 DES CBC 56 binary 5 DES3 CBC 168 binary ----- Binary Dump File Cipher Selection ---- ----ID----Cipher---Mode---Size----Key type-- 6 DES CBC 56 PBE 11 AES CBC 128 PBE 12 AES CBC 256 PBE
Проверить список доступных шифров можно после включения шифрования командой proutil db-name -C epolicy info.
Все шифры являются отраслевыми стандартами. Шифр задаётся параметром -Cipher с указанием ID шифра.
Включите шифрование с шифром по умолчанию:
proenv> proutil sports2000 -C enableencryption -Autostart user Area Encryption Policy Area/120 contains Encryption Schema (17287) Cipher specification being set to default AES_CBC_128 (15423) Autostart option has been selected. (15424) Key store administrator passphrase [required]:
Помните, TDE предъявляет строгие требования к парольным фразам. Введите парольную фразу для администратора TDE, для примера, GAgk2E1ukP{.
Key store user passphrase [optional]:
Введите парольную фразу для пользователя TDE, для примера, FUDgUxp,9u9.
The BI file is being automatically truncated. (1526) BI encryption enabled successfully. (15204) Encryption has been successfully enabled. (19389)
Шифрование в базе данных активировано, но само шифрование ещё не происходит, для этого необходимо создать политики шифрования.
Выполните старт базы данных:
proenv> proserve sports2000
Старт будет успешным потому что при активации шифрования мы указали параметр для автоматического старта базы данных от имени пользователя TDE, -Autostart user. Если бы мы этого не сделали, то с каждым стартом базы данных было бы необходимо вводить парольную фразу либо администратора TDE, либо пользователя TDE.
Попробуйте остановить базу данных, переименовать файл хранилища ключей (sports2000.ks) и стартовать базу снова. У вас не получится этого сделать, так как база обнаружит отсутствие хранилища ключей.
Internal security service error {2} (dksp) Key store load failed Internal security service error {2} (keystore) missing key-store file {02020c06}
По этой причине никогда не храните файл хранилища ключей рядом с резервной копией базы данных.
Создания политик шифрования EPOLICY MANAGE
Шифрование объектов базы данных управляется с помощью политик шифрования. Вы определяете какие объекты зашифрованы и шифр для объекта. Политики хранятся в базе данных в специальной области для политик шифрования. Политики объектов используют ключи шифрования виртуальных данных, полученные из вашего DMK и указанного шифра. Ключ шифрования для каждого зашифрованного объекта базы данных уникален.
Зашифруйте таблицу Customer в базе данных sports2000. При этом, поскольку мы используем старт базы с парольной фразой пользователя TDE, любая команда управления TDE будет требовать от вас ввода парольной фразы администратора TDE. Для этого в качестве дополнительного параметра необходимо указать параметр -Passphrase.
proenv> proutil sports2000 -C epolicy manage table encrypt Customer -Passphrase Enter the key store passphrase for database sports2000 : Encryption policy setting for Table Customer in Area 9. (15629) Cipher specification setting to AES_CBC_128 completed. (15491)
Посмотрите сколько блоков сейчас зашифровано в таблице Customer:
proenv> proutil sports2000 -C epolicy scan table Customer -Passphrase Enter the key store passphrase for database sports2000 : TABLE Customer / 4 CURRENT AES_CBC_128 V:0 23 of 64 blocks encrypted
Обратите внимание на количество зашифрованных блоков. Оставшиеся блоки могут быть зашифрованы либо естественным путём во время обычной работы базы данных, либо принудительно в онлайн.
Выполните принудительное шифрование оставшихся блоков в таблице Customer.
proenv> proutil sports2000 -C epolicy manage table update Customer -Passphrase Enter the key store passphrase for database sports2000 : TABLE Customer / 4 CURRENT AES_CBC_128 V:0 41 of 64 blocks encrypted
Оставшиеся 41 блок были зашифрованы. Проверьте:
proenv> proutil sports2000 -C epolicy scan table Customer -Passphrase Enter the key store passphrase for database sports2000 : TABLE Customer / 4 CURRENT AES_CBC_128 V:0 64 of 64 blocks encrypted
Создания политик шифрования Data Dictionary
Для выбора объектов шифрования можно использовать Data Dictionary. В этом задании мы зашифруем таблицу Order.
Откройте Data Dictionary с подключением к базе данных sports2000:
proenv> mpro sports2000 -p _dict.p -Passphrase
Выберите пункт Admin > Security > Encryption Policies > Edit Encryption Policy
Database Schema Admin DataServer Utilities PRO/SQL Tools ┌────────────────────────────────────────┐ │ Dump Data and Definitions -> │ │ Load Data and Definitions -> │ │ Database Identification -> │ │ Security -> │ │ ┌─────────────────────────────────┐ │ │ │ Edit User List... │ │ │ │ Change Your Password... │... │ │ │ Edit Data Security... │ │ │ │ Edit Audit Permissions... │ │ │ │ Security Administrators... │ │ └─│ Disallow Blank Userid Access... │────┘ │ User Report... │ │ ─────────────────────────────── │ │ Domain Maintenance -> │ │ Encryption Policies -> │ └─┌──────────────────────────────┐┘ │ Edit Encryption Policy... │ │ Generate Encryption Keys... │ │ Encryption Policy History... │ └──────────────────────────────┘
В исходном представлении отображаются таблицы и индексы с включённым и отключённым шифрованием.
┌───────────────────────────────Object Selector───────────────────────────────┐ │ Select one or more objects with the [SPACEBAR] key. │ │ Press [F1] to go to the next screen. │ │ │ │┌──────────────────────────────────────────────────────────────────────────┐ │ ││ Benefits Tbl │ │ ││ Benefits.EmpNo Idx │ │ ││ BillTo Tbl │ │ ││ BillTo.custnumbillto Idx │ │ ││ Bin Tbl │ │ ││ Bin.BinNum Idx │ │ ││ Bin.ItemNum Idx │ │ │└──────────────────────────────────────────────────────────────────────────┘ │ │┌──────────────────────────────────────────────────────────────────────────┐ │ ││[x]Show Indexes Show Encryption: [x]Enabled [x]Disabled │ │ ││[ ]Show LOBs [ ]Filter Cipher │ │ │└──────────────────────────────────────────────────────────────────────────┘ │ │ OK Cancel │ └─────────────────────────────────────────────────────────────────────────────┘
Клавишей TAB перейдите в область списка таблиц и найдите таблицу Order. Выделите таблицу Order и все её индексы, нажимая пробел на каждом объекте. После выделения объекта слева от него появится символ >.
┌──────────────────────────────────────────────────────────────────────────┐ │ >Order Tbl │ │ >Order.CustOrder Idx │ │ >Order.OrderDate Idx │ │ >Order.OrderNum Idx │ │ >Order.OrderStatus Idx │ │ >Order.SalesRep Idx │ │ OrderLine Tbl │ └──────────────────────────────────────────────────────────────────────────┘
Нажмите клавишу F1 для продолжения.
Откроется окно для настройки политики шифрования:
┌───────────────────────────Edit Encryption Policy────────────────────────────┐ │ Objects (* = changed policy): │ │┌───────────────────────────────────────────────────────────────────────────┐│ ││ >Order ││ ││ Order.CustOrder ││ ││ Order.OrderDate ││ ││ Order.OrderNum ││ ││ Order.OrderStatus ││ ││ Order.SalesRep ││ ││ ││ │└───────────────────────────────────────────────────────────────────────────┘│ │┌───────────────────────────────────────────────────────────────────────────┐│ ││ [ ]Encryption enabled [ ]New encryption key Object Type: Table ││ ││ ││ ││ Cipher: ││ ││ Passphrase: ││ ││ Verify Passphrase: ││ │└───────────────────────────────────────────────────────────────────────────┘│ │ Commit Cancel Review │ └─────────────────────────────────────────────────────────────────────────────┘
Выберите объект и установите флажок Encryption enabled . Выбран шифр по умолчанию, AES_CBC_128. При желании измените шифр. Нажмите Save, чтобы сохранить изменение, или Reset, чтобы отменить изменение. Изменение не фиксируется в базе данных, пока вы не нажмите Commit.
Сделайте это для объекта Order.
Когда вы сохранили изменение, активируется кнопка Copy. Нажмите на неё чтобы применить изменения сразу к нескольким объектам.
┌──────────────────────Copy Encryption Policy Settings To──────────────────────┐ │ If you want to copy the settings from the encryption policy of the current │ │ object to other object(s), select them on the list below. │ │ │ │ Select Some... Deselect Some... │ │┌───────────────────────────────────────────────────────────────────────────┐ │ ││ >Order.CustOrder Idx │ │ ││ >Order.OrderDate Idx │ │ ││ >Order.OrderNum Idx │ │ ││ >Order.OrderStatus Idx │ │ ││ >Order.SalesRep Idx │ │ ││ │ │ ││ │ │ │└───────────────────────────────────────────────────────────────────────────┘ │ │ │ │ OK Cancel │ └──────────────────────────────────────────────────────────────────────────────┘
Выделите все индексы таблицы Order и нажмите OK.
Теперь сохраните политики шифрования нажав на кнопку Commit.
Создания политик шифрования SQL DDL
Язык определения данных OpenEdge SQL можно использовать для включения прозрачного шифрования данных. Эта функция предоставляет только администратору баз данных или администратору безопасности, который также имеет права администратора хранилища ключей.
В этом задании мы зашифруем таблицу OrderLine.
Остановите базу sports2000:
proenv> proshut sports2000
И выполните её старт с сетевыми параметрами с использованием парольной фразы администратора TDE:
proenv> proserve sports2000 -n 50 -S 12345 -Mn 10 -Ma 10 -Mi 5 -Passphrase
Откройте Data Dictinary и создайте пользователя sysprogress с одноименным паролем, при создании укажите что это только SQL-пользователь.
┌─────────────────────────────────Add User─────────────────────────────────┐ │ User ID: sysprogress │ │ Domain Name: Select Domain... │ │ User Name: │ │ Password: │ │ SQL Only: yes │ └──────────────────────────────────────────────────────────────────────────┘
Вернитесь в командную строку и подключитесь к базе данных через SQL Explorer следующей командой:
proenv> sqlexp -char -db sports2000 -H localhost -S 12345 -user sysprogress -password sysprogress
В командной строке SQL Explorer введите следующий SQL-запрос и нажмите Enter:
ALTER TABLE pub.OrderLine SET ENCRYPT WITH 'AES_CBC_192'; COMMIT;
Нажмите Enter.
Выйдите из SQL explorer введя команду exit и нажав Enter.
OpenEdge Release 12.2.3 as of Thu Oct 29 18:13:27 EDT 2020 Connecting user "sysprogress" to URL "jdbc:datadirect:openedge://localhost:12345;databaseName=sports2000"... (8920) SQLExplorer> SQLExplorer>ALTER TABLE pub.OrderLine SET ENCRYPT WITH 'AES_CBC_192'; SQLExplorer>commit; SQLExplorer>exit
Политика шифрования для объекта OrderLine создана.
Изменение политик шифрования
Для изменения шифра политики шифрования используется команда EPOLICY MANAGE CIPHER.
Следующей командой измените шифр таблицы Customer на AES_CBC_256. У этого шифра в таблице шифров политик присвоен номер 3.
proenv> proutil sports2000 -C epolicy manage table cipher Customer -Cipher 3 Encryption policy cipher change for Table Customer in Area 9. (15629) Cipher specification change to AES_CBC_256 completed. (15492)
Проверьте состояние блоков в таблице Customer:
proenv> proutil sports2000 -C epolicy scan table Customer TABLE Customer / 4 CURRENT AES_CBC_256 V:1 23 of 64 blocks encrypted TABLE Customer / 4 PREVIOUS AES_CBC_128 V:0 41 of 64 blocks encrypted
Как вы видите, в таблице сейчас два набора блоков, один зашифрован старым шифром AES_CBC_128, который имеет статус PREVIOUS и версию V:0, а второй новый шифр AES_CBC_256 со статусом CURRENT и версией V:1.
Изменение шифра в блоке произойдёт по мере естественной активности в таблице, но если вы хотите ускорить этот процесс, то выполните принудительное шифрование с новым шифром в таблице Custmomer.
proenv> proutil sports2000 -C epolicy manage table update Customer
Снова проверьте состояние блоков:
proenv> proutil sports2000 -C epolicy scan table Customer TABLE Customer / 4 CURRENT AES_CBC_256 V:1 64 of 64 blocks encrypted
Все блоки были перешифрованы с использованием нового шифра.
Дешифрование объектов и отключение TDE
Если вы приняли решение, что вам больше не нужна зашифрованная база данных, вы можете отключить шифрование с помощью команды PROUTIL DISABLEENCRYPTION.
Отключение шифрования расшифровывает все данные в базе данных, удаляет все политики шифрования и архивирует хранилище ключей, переименовывая его в dbname .ksbk.
Если у вас есть большое количество зашифрованных объектов, то вы можете выполнить контролируемую расшифровку объектов до выполнения команды DISABLEENCRYPTION. Чтобы сделать это, обновите политику шифрования до нуля (0) и затем выполнить EPOLICY MANAGE UPDATE.
Чтобы расшифровать данные сначала убедитесь с помощью EPOLICY SCAN, что объект зашифрован:
proenv> proutil sports2000 -C epolicy scan table OrderLine TABLE OrderLine / 14 CURRENT AES_CBC_192 V:0 448 of 448 blocks encrypted
Затем измените шифр политики шифрования на NULL (шифр 0):
proenv> proutil sports2000 -C epolicy manage table cipher OrderLine -Cipher 0 Encryption policy cipher change for Table OrderLine in Area 11. (15629) Cipher specification change to NULL_NULL_NULL completed. (15492)
Ещё раз проверьте состояние блоков таблицы:
proenv> proutil sports2000 -C epolicy scan table OrderLine TABLE OrderLine / 14 CURRENT NULL_NULL_NULL V:1 11 of 448 blocks encrypted TABLE OrderLine / 14 PREVIOUS AES_CBC_192 V:0 437 of 448 blocks encrypted
Как видно, в таблице опять появилось две версии политики шифрования с разным статусом. Обновите все блоки для политики с NULL-шифром командой EPOLICY MANAGE UPDATE:
proenv> proutil sports2000 -C epolicy manage table update OrderLine
Подтвердите, что объект расшифрован, а политика удалена с помощью EPOLICY SCAN:
proenv> proutil sports2000 -C epolicy scan table OrderLine ERROR - No encryption policy exists for table OrderLine. (15328) EPolicy: Encryption policy management failed -402
Отключите шифрование:
proenv> proutil sports2000 -C disableencryption WARNING - BI encryption cannot be disabled online. (15436) You can continue to disable encryption on other objects. (15437) Do you want to proceed? (y/n) y Decrypting blocks of table PUB.Customer / 4 ... (15654) Decrypting blocks of table PUB.Order / 13 ... (15654) Decrypting blocks of index PUB.Order.OrderNum / 39 ... (15654) Decrypting blocks of index PUB.Order.CustOrder / 40 ... (15654) Decrypting blocks of index PUB.Order.OrderDate / 41 ... (15654) Decrypting blocks of index PUB.Order.OrderStatus / 42 ... (15654) Decrypting blocks of index PUB.Order.SalesRep / 43 ... (15654) WARNING - BI encryption is not disabled. (15441) WARNING - Encryption on the database is not disabled. (15443)
Отключение шифрование в онлайн может оставить базу данных в одном из следующих состояний:
- Шифрование BI отключено (в однопользовательском режиме).
- Шифрование AI отключено.
- Все шифры текущих политик установлены на null-null-null.
- Все заблокированные данные расшифровываются.
- Функция шифрования полностью отключена.
- Все политики шифрования удалены.
Проверьте файл .lg базы данных или сообщения о состоянии, отображаемые на экране, чтобы определить состояние базы данных.
Для полного отключения функции OpenEdge Transparent Data Encryption, в частности для отмены шифрования BI-файлов, необходимо остановить базу данных и повторно выполнить команду DISALBEENCRYPTION.
Дополнительную информацию по OpenEdge Transparent Data Encryption можно найти в Progress Inforamtion Hub.
Есть вопрос? Спросите...
Для отправки комментария вам необходимо авторизоваться.
8 Комментариев
Спасибо за понятные и простые инструкции. Есть пара вопросов:
1. Какое влияние на производительность после включения TDE?
2. Шифруется ли бэкап?
3. Как лицензируется или это встроенная возможность в СУБД?
Спасибо за отзыв! Отвечу отдельными комментариями.
1. Какое влияние на производительность после включения TDE?
Во время работы данные считываются в память и находятся там в незашифрованном виде. Это значит, что приложение будет продолжать работать в полном объеме с минимальным снижением производительности (2-4%) во время считывания данных с дисков или записи изменённых буферов на диски (именно в это время происходит шифрование и дешифрация).
Для снижения влияния на производительность:
– тщательно подбирайте шифр балансируя между строгостью шифра и производительностью. По умолчанию используется шифр AES_CBC_128, как оптимальный.
– тщательно выбирайте таблицы и индексы для шифрования. Очевидно, что если таблица не содержит конфиденциальных данных, то нет смысла её шифровать, так же как если индекс не содержит полей, содержащих конфиденциальные данные, тоже нет смысла шифровать.
– храните шифрованные индексы в альтернативном буферном пуле.
– если есть возможность, то увеличьте размер первичного (-B) и альтернативного пулов (-B2) для того, чтобы как можно больше данных могло поместиться в память в расшифрованном виде и чтобы они находились там как можно дольше.
2. Шифруется ли бэкап?
Да, данные в резервной копии (PROBKUP) остаются в зашифрованном виде.
Важно замечание, вместе с резервной копией необходимо резервировать хранилище ключей DMK – это файл dbname.ks. Иначе если после восстановления резервной копии (PROREST) не будет обнаружена файл .ks, то вы не сможете открыть базу данных.
С точки зрения безопасности не рекомендуется хранить файл .ks вместе с резервной копией базы данных.
3. Как лицензируется или это встроенная возможность в СУБД?
Есть два варианта:
1. TDE является ADD-ON продуктом для лицензии OE Enterprise RDBMS, т.е. лицензируется отдельно по количеству пользователей в лиценизии OE Enterprise RDBMS.
2. TDE является часть лицензии OE Advanced Enterprise RDBMS, и не требует отдельного лицензирования.
Как поменять passphrase?
Важно: passphrase нельзя изменит онлайн. Это связано с тем, что TDE использует парольную фразу для настройки шифрования объектов и эта информация проверяется по хранилищу ключей dbname.ks при открытии базы данных.
Используйте следующие команды для изменения парольной фразы:
proutil dbname -C epolicy manage keystore userphrase -Passphrase
proutil dbname -C epolicy manage keystore adminphrase -Passphrase
Важно: не используйте одинаковые парольные фразы и всегда стартуйте базу данных с парольной фразой пользователя.
Ok. Жаль что только онлайн. С другой стороны, наверное и не надо их часто менять.
Ещё вопрос, попробовал сейчас в нашей тестовой среде, у нас Advanced RDBMS лицензия. При попытке подключиться к базе данных с включённым TDE получил сообщение: Connection to an encrypted database is not permitted with -t. (15389)
Не пойму, получается что временные файлы для клиентских сессий с включённым TDE не поддерживаются?
По умолчанию временные файлы, которые создаёт клиентская сессия, не видны в ОС. Чтобы их увидеть, как правило, для анализа работы приложения добавляется в параметры старта клиентской сессии параметр -t. Поскольку такие временные файлы могут содержать данные из таблиц базы данных, например, временные таблицы, и они не шифруются при включении TDE, то запрещено делать временные файлы видимыми в ОС при включенном TDE. Отсюда и сообщение 15389.
P.S.
Скорее всего у вас кто-то когда-то делал отладку приложения и забыл убрать -t из параметров.