Настройка прозрачного шифрования данных Oracle (TDE)

Что такое 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 я рекомендую следующее:

  1. Сохраните пароль TDE.
  2. Часто создавайте резервные копии файла кошелька.

Заключение

Преимущества Oracle Transparent Data Encryption (TDE) очень велики, начиная с защиты конфиденциальных данных. Это шифрование защищает информацию и обеспечивает ее сохранность. Кроме того, TDE имеет ряд ключевых преимуществ, включая соответствие нормативным требованиям, связанным с безопасностью.
Его можно внедрить легко и без последствий для существующих приложений. Важно отметить, что после внедрения TDE его нельзя отключить.

В следующих статьях мы применим шифрование данных и табличные пространства на практике, чтобы проверить масштабы этой архитектуры.

Прокрутка к верху