Блог Oracle на испанском языке

Настройка Oracle Transparent Data Encryption (TDE)

Что такое TDE и почему это важно?

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

Важно:
Перед применением TDE убедитесь, что у вас есть лицензия «Advanced Security Option», которая предоставляется за дополнительную плату. В Oracle Autonomous Databases и Database Cloud Services она включена, настроена и включена, но в других архитектурах — нет.

Nota: Estas pruebas están simuladas en una BBDD Oracle 21.3.0.0. La simulación emula un entorno «standalone», sin multitenant. Realizaré nuevas entradas específicas de TDE en entornos con arquitectura multitenant.

Как работает шифрование данных для пользователя.

После шифрования данные прозрачно расшифровываются для авторизованных пользователей или приложений при обращении к ним. То есть, шифрование и расшифровка данных для авторизованных пользователей происходит прозрачно.

Как TDE предотвращает несанкционированную расшифровку?

TDE шифрует конфиденциальные данные, хранящиеся в файлах данных. Oracle предлагает прозрачное шифрование данных (TDE) для расшифровки или защиты этих файлов. Чтобы предотвратить несанкционированную расшифровку, TDE хранит ключи шифрования в модуле безопасности, внешнем по отношению к базе данных.
Для этого Oracle предлагает следующие модули:

  • TDE Wallets: «кошелек Wallets». Это Wallets, которые используются для TDE. В предыдущих версиях они просто назывались «wallets».
  • Внешний хранилище ключей: это внешние хранилища ключей (такие как Oracle Key Vault, OCI Management Service (KMS)).
  • Keystores: Термин, который охватывает как TDE wallets, так и внешние хранилища ключей.

Преимущества TDE

  • Данные зашифрованы, поэтому это средство безопасности в случае кражи данных.
  • Использование TDE помогает обеспечить соответствие нормативным требованиям безопасности.
  • Нет необходимости вносить изменения в код или приложения, база данных управляет шифрованием и расшифровкой данных.
  • Пользователям и приложениям баз данных не нужно знать, что данные, к которым они обращаются, зашифрованы.
  • Можно шифровать данные без простоя в производственных системах. Также можно выполнять шифрование в периоды обслуживания.
  • Операции по управлению ключами шифрования кошельков могут быть автоматизированы Oracle. Конечному пользователю или приложению не нужно управлять ключами шифрования кошельков TDE.

Типы шифрования в TDE

Можно шифровать конфиденциальные данные двумя способами: на уровне столбцов или на уровне табличных пространств.

На уровне столбцов: Вы можете шифровать конфиденциальные данные в определенных столбцах таблиц приложения.

На уровне табличных пространств: Шифрует все данные, хранящиеся в табличном пространстве. Это наиболее часто используемый метод шифрования, поскольку его легче применять и он не требует детального анализа каждого столбца таблицы для определения того, какие столбцы нуждаются в шифровании.

Примечание: Данные BFILE не шифруются, поскольку они физически расположены в файле операционной системы, а не в табличном пространстве базы данных.

Шаги для реализации TDE

Прежде всего, для настройки TDE необходимо выполнить начальную настройку в базе данных. В основном необходимо настроить параметр WALLET_ROOT (статический) и параметр TDE_CONFIGURATION (динамический).

  • Параметр WALLET_ROOT: Указывает основной каталог для различных хранилищ ключей программного обеспечения. В нашем случае, для TDE, это будет каталог для автоматического обнаружения wallet, который будет WALLET_ROOT/tde.
  • Параметр TDE_CONFIGURATION: Указывает тип хранилища ключей или keystore (хранилище ключей программного обеспечения или Oracle Key Vault). После настройки типа хранилища ключей (TDE_CONFIGURATION) при создании keystore 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. Изменим параметр WALLET_ROOT и сохраним его в spfile. Перезапустим базу данных.

SQL> alter system set wallet_root='$ORACLE_BASE/admin/$ORACLE_SID/wallet' scope=spfile;
System altered.

TDE_CONFIGURATION

Укажем параметр TDE_CONFIGURATION чтобы указать тип TDE wallet. В данном случае будем использовать тип FILE.

SQL> ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE" SCOPE=both;
System altered.

Проверим, что параметры верны.

Кошельки TDE

Существуют три различных типа TDE wallets: защищенные паролем, с автоматическим запуском и с локальным автоматическим запуском.

Создание хранилища ключей программного обеспечения, защищенного паролем

Поскольку мы уже настроили WALLET_ROOT и TDE_CONFIGURATION, нам нужно только выполнить команду ADMINISTER KEY MANAGEMENT CREATE KEYSTORE чтобы создать wallet. Хранилище ключей программного обеспечения, защищенное паролем, требует пароль, который используется для защиты главных ключей TDE. Для этого необходимо, чтобы у пользователя было одно из этих двух прав: ADMINISTER KEY MANAGEMENT o SYSKM:

ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY "oracleconraul";
keystore altered.

Вы можете проверить, что в каталоге WALLET_ROOT автоматически создан каталог /tde, где вы увидите файл ewallet.p12, который является нашим TDE wallet, защищенным паролем.

[oracle@localhost tde]$ ls -la /u01/app/oracle_base/admin/testing/wallet/tde
total 12
drwxr-x---. 2 oracle oracle 4096 ago 15 13:36 .
drwxrwxr-x. 3 oracle oracle 4096 15 августа 13:36 ..
-rw-------. 1 oracle oracle 2555 15 августа 13:36 ewallet.p12

Создание хранилища ключей программного обеспечения с автоматическим или локальным автоматическим запуском

На данный момент у нас есть хранилище ключей, защищенное паролем. В качестве опции вы можете создать хранилище ключей программного обеспечения с автоматическим или локальным автоматическим запуском. Разница в том, что программное обеспечение с автоматическим запуском можно открыть с нескольких компьютеров, в то время как хранилище ключей с локальным запуском является локальным и должно быть открыто на каждом компьютере, с которого оно было создано. По умолчанию, если не указано LOCAL, файл будет autologin.

Имейте в виду, что если у вас есть база данных RAC и указано LOCAL, только узел, создавший файл autologin, сможет его открыть. В среде RAC для упрощения лучше не указывать ключевое слово LOCAL. В противном случае вам придется создавать несколько файлов cwallet.sso для каждого узла, содержащего одни и те же учетные данные.

На этом этапе, если мы перезапустим базу данных, мы увидим, что наш wallet находится в состоянии closed, и мы должны использовать команду «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, который является autologin.

Установка Master Key encryption

Прежде чем выполнять какое-либо шифрование, мы должны создать/установить наш главный ключ шифрования, так как у нас его еще нет.

SQL> ADMINISTER KEY MANAGEMENT SET KEY FORCE KEYSTORE  IDENTIFIED BY "oracleconraul" WITH BACKUP ;

keystore altered.
  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

На этом этапе вы можете начать шифровать свою базу данных (табличные пространства, таблицы и т. д.). Мы увидим, как это сделать, в следующих статьях.

ПРИМЕЧАНИЕ: Если файлы wallet будут потеряны или вы забудете пароль, у вас не будет возможности восстановить зашифрованные данные. База данных не сможет быть восстановлена никаким способом (резервное копирование и т. д.), если этот файл недоступен. Нет никакой «черного хода», база данных должна быть перестроена. Поэтому необходимо постоянно создавать резервные копии этих файлов.

После того, как вы внедрили TDE, я рекомендую следующее:

  1. Обеспечить сохранность пароля TDE.
  2. Часто выполняйте резервное копирование файла wallet.

Заключение

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

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

Tags:
Oracle ACE Associate