Что такое EDT и почему она важна?
TDE (Transparent Data Encryption) позволяет шифровать конфиденциальные данные, хранящиеся в таблицах, табличных пространствах и даже резервных копиях базы данных. Это очень важно для защиты конфиденциальной информации в случае несанкционированного доступа.
Важно:
Перед применением TDE убедитесь, что у вас есть лицензия "Advanced Security Option".за дополнительную плату, прежде чем приступать к работе. В Oracle Autonomous Databases и Database Cloud Services она включена, настроена и включена, но не в других архитектурах.
Примечание: Эти тесты смоделированы на СУБД Oracle 21.3.0.0.0. Симуляция эмулирует "автономную" среду, без мультитенанта. Я сделаю дополнительные записи, касающиеся TDE в средах с мультитенантной архитектурой.
Как шифрование данных работает для пользователя.
Если данные зашифрованы, они расшифровываются прозрачно для авторизованных пользователей или приложений, когда они получают к ним доступ. То есть шифрование и дешифрование данных для авторизованных пользователей является прозрачным.
Как TDE предотвращает несанкционированную расшифровку?
TDE шифрует конфиденциальные данные, хранящиеся в файлах данных. Oracle предлагает Transparent Data Encryption (TDE) для расшифровки или защиты этих файлов. Чтобы предотвратить несанкционированную расшифровку, TDE хранит ключи шифрования в модуле безопасности, внешнем по отношению к базе данных.
Oracle предлагает следующие модули для этой цели:
- Кошельки TDE: "caretar de Wallets". Это кошельки, используемые для TDE. В предыдущих версиях они назывались просто "кошельки".
- Внешнее хранилище ключей: внешние хранилища ключей(например, Oracle Key Vault, OCI Key Management Service (KMS)).
- Хранилища ключей: термин, который охватывает как кошельки TDE, так и внешние хранилища ключей.
Преимущества TDE
- Данные зашифрованы, поэтому это средство защиты на случай кражи информации.
- Использование TDE помогает обеспечить соответствие нормативным требованиям безопасности.
- Никаких изменений в коде, никаких изменений в приложении, база данных сама справляется с шифрованием и дешифрованием данных.
- Пользователям баз данных и приложениям не нужно знать, что данные, к которым они обращаются, зашифрованы.
- Шифрование данных возможно без простоя производственных систем. Шифрование также возможно в периоды технического обслуживания.
- Операции управления ключами шифрования кошелька могут быть автоматизированы Oracle. Конечному пользователю или приложению не нужно управлять ключами шифрования кошелька TDE.
Типы шифрования в TDE
Зашифровать конфиденциальные данные можно двумя способами: На уровне столбцов или на уровне табличного пространства.
Уровень столбцов: вы можете зашифровать конфиденциальные данные в определенных столбцах таблиц приложения.
На уровне табличного пространства: Шифрует все данные, хранящиеся в табличном пространстве. Это наиболее часто используемое шифрование, поскольку оно проще в реализации и не требует детального анализа каждого столбца таблицы, чтобы определить, какие столбцы нуждаются в шифровании.
Примечание: Данные BFILE не шифруются, поскольку физически они находятся в файле операционной системы, а не в табличном пространстве базы данных.
Шаги по реализации TDE
Прежде всего, чтобы настроить TDE, мы должны выполнить начальную конфигурацию в базе данных. В основном нам нужно настроить параметр WALLET_ROOT (статический) и параметр TDE_CONFIGURATION (динамический).
- Параметр WALLET_ROOT: указывает домашнюю директорию для различных программных хранилищ ключей. В нашем случае для TDE это будет каталог для автоматического обнаружения кошелька, который будет WALLET_ROOT/tde.
- Параметр TDE_CONFIGURATION: задает тип хранилища ключей (программное хранилище ключей или Oracle Key Vault). После установки типа хранилища ключей (TDE_CONFIGURATION) при создании хранилища ключей Oracle создает каталог в месте, указанном в параметре WALLET_ROOT, в нашем случае WALLET_ROOT/tde .
Примечание: В предыдущих версиях использовался параметр SQLNET.ENCRYPTION_WALLET_LOCATION. Этот параметр был устаревшим. Oracle рекомендует использовать статические параметры инициализации WALLET_ROOT и динамические TDE_CONFIGURATION.
Конфигурация WALLET_ROOT
Сначала мы создадим директорию, в которой будет храниться кошелек на уровне SSOO.
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/wallet
Мы проверяем параметры БД:
Перед изменением параметров рекомендуется сделать резервную копию spfile.
WALLET_ROOT
Статический параметр для сохранения каталога кошелька. Мы изменяем параметр WALLET_ROOT и сохраняем его в spfile. Перезапускаем базу данных.
SQL> alter system set wallet_root='$ORACLE_BASE/admin/$ORACLE_SID/wallet' scope=spfile; Система изменена.
TDE_CONFIGURATION
Мы указываем параметр TDE_CONFIGURATION
чтобы указать тип кошелька TDE. В этот раз мы будем использовать тип FILE.
SQL> ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE" SCOPE=both; Система изменена.
Мы проверяем правильность параметров.
Кошельки TDE
Существует три различных типа кошельков TDE: защищенные паролем, с автозапуском и локальным автозапуском.
Создание защищенного паролем хранилища программных ключей
Как мы уже настроили WALLET_ROOT
y TDE_CONFIGURATION
нам нужно только выполнить команду ADMINISTER KEY MANAGEMENT CREATE KEYSTORE
для создания кошелька. Программное хранилище ключей, защищенное паролем, требует пароля, который используется для защиты мастер-ключей TDE. Для этого пользователю необходимо иметь одну из двух привилегий, ADMINISTER KEY MANAGEMENT
o SYSKM
:
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY "oracleconraul"; keystore altered.
Вы видите, что в директории WALLET_ROOT автоматически создалась директория /tde, в которой находится файл ewallet.p12 - наш защищенный паролем TDE-кошелек.
[oracle@localhost tde]$ ls -la /u01/app/oracle_base/admin/testing/wallet/tde total 12 drwxr-x---.
2 oracle oracle 4096 Aug 15 13:36 . drwxrwxr-xr-x.
3 oracle oracle 4096 Aug 15 13:36 ... -rw-------. 1 oracle oracle 2555 Aug 15 13:36ewallet.p12
Создание хранилища ключей автозапуска или локального автозапуска программного обеспечения
На этом этапе у нас есть защищенное паролем хранилище ключей. В качестве опции можно создать программное хранилище ключей автозапуска или локальное хранилище ключей автозапуска. Разница в том, что программное хранилище автологина может быть открыто с нескольких компьютеров, а локальное хранилище автологина является локальным и должно быть открыто на каждом компьютере, с которого оно было создано. По умолчанию, если LOCAL не указан, файл будет autologin.
Обратите внимание, что если у вас есть база данных RAC и вы указали LOCAL
Если файл автологина был создан, открыть его сможет только узел, создавший файл автологина. В среде RAC для простоты лучше не указывать ключевое слово LOCAL
. В противном случае вам придется создавать несколько cwallet.sso
для каждого узла, содержащего одинаковые учетные данные.
В этот момент, если мы перезапустим базу данных, мы увидим, что наш кошелек находится в закрытом состоянии, и нам следует использовать команду "ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "";, чтобы открыть его.
SQL> select con_id, wrl_parameter, status from gv$encryption_wallet; CON_ID WRL_PARAMETER STATUS ---------- ------------------------------------------------------------ ------------------------------------------------------------ ------------------------------ 1 /u01/app/oracle_base/admin/testing/wallet/tde/CLOSED
Поскольку это не входит в наши планы и мы хотим, чтобы он открывался автоматически при открытии базы данных, сначала мы создадим программу автоматического входа или локального автоматического входа, в нашем случае автоматического входа (мы опускаем слово LOCAL).
SQL> ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE IDENTIFIED BY "oracleconraul";
SQL> select con_id, wrl_parameter, status from gv$encryption_wallet; CON_ID WRL_PARAMETER STATUS ---------- ------------------------------------------------------------ ------------------------------ 1 /u01/app/oracle_base/admin/testing/wallet/tde/OPEN_NO_MASTER_KEY
Как вы можете видеть, в cwallet.sso
который является автологином.
Установка мастер-ключа шифрования
Прежде чем приступить к шифрованию, необходимо создать/установить главный ключ шифрования, поскольку у нас его пока нет.
SQL> ADMINISTER KEY MANAGEMENT SET KEY FORCE KEYSTORE IDENTIFIED BY "oracleconraul" WITH BACKUP ; keystore изменен.
sql> select con_id, wrl_parameter, status from gv$encryption_wallet CON_ID WRL_PARAMETER STATUS ---------- ------------------------------------------------------------ ------------------------------ 1 /u01/app/oracle_base/oracle_base/admin/testing/wallet/tde/OPEN
На этом этапе вы можете начать шифровать свою базу данных (табличные пространства, таблицы и т. д.). Мы рассмотрим, как это сделать, в следующих постах.
ПРИМЕЧАНИЕ: Если вы потеряете файлы кошелька или забудете пароль, у вас не будет возможности восстановить зашифрованные данные. Базу данных нельзя восстановить никаким способом (резервное копирование и т. д.), если у вас нет этого файла. Не существует "черного хода", базу данных придется восстанавливать заново. Поэтому необходимо постоянно создавать резервные копии этих файлов.
После внедрения TDE я рекомендую следующее:
- Сохраните пароль TDE.
- Часто создавайте резервные копии файла кошелька.
Заключение
Преимущества Oracle Transparent Data Encryption (TDE) очень велики, начиная с защиты конфиденциальных данных. Это шифрование защищает информацию и обеспечивает ее сохранность. Кроме того, TDE имеет ряд ключевых преимуществ, включая соответствие нормативным требованиям, связанным с безопасностью.
Его можно внедрить легко и без последствий для существующих приложений. Важно отметить, что после внедрения TDE его нельзя отключить.
В следующих статьях мы применим шифрование данных и табличные пространства на практике, чтобы проверить масштабы этой архитектуры.