{"id":4598,"date":"2024-08-16T11:01:29","date_gmt":"2024-08-16T11:01:29","guid":{"rendered":"https:\/\/oracleconraul.com\/?p=4598"},"modified":"2024-08-28T15:39:33","modified_gmt":"2024-08-28T15:39:33","slug":"oracle-transparent-data-encryption-tde","status":"publish","type":"post","link":"https:\/\/oracleconraul.com\/index.php\/2024\/08\/16\/oracle-transparent-data-encryption-tde\/","title":{"rendered":"Configurar Oracle Transparent Data Encryption (TDE)"},"content":{"rendered":"\n<p><em><strong>\u00bfQu\u00e9 es TDE y por qu\u00e9 es importante<\/strong>?<\/em><\/p>\n\n\n\n<p>TDE (Transparent Data Encryption) te permite cifrar datos sensibles almacenados en tablas, tablespaces e incluso en copias de seguridad de la base de datos. Esto es crucial para proteger informaci\u00f3n sensible en caso de un acceso no autorizado.<\/p>\n\n\n\n<p>Importante:<br><em><strong>Antes de aplicar TDE aseg\u00farate que tienes una licencia \u00abAdvanced Security Option\u00bb<\/strong><\/em>, con coste adicional antes de continuar. En Oracle Autonomous Databases y en Database Cloud Services, est\u00e1 incluida, configurada y habilitada, pero no as\u00ed en otras arquitecturas.<br><\/p>\n\n\n\n<p>Nota: Estas pruebas est\u00e1n simuladas en una BBDD Oracle 21.3.0.0.  La simulaci\u00f3n emula un entorno \u00abstandalone\u00bb, sin multitenant. Realizar\u00e9 nuevas entradas espec\u00edficas de TDE en entornos con arquitectura multitenant.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>C\u00f3mo funciona la encriptaci\u00f3n de datos para el usuario.<\/strong><\/h3>\n\n\n\n<p>Una vez que los datos est\u00e1n cifrados, estos se descifran de forma transparente para los usuarios o las aplicaciones autorizadas cuando acceden a ellos. Es decir, el cifrado y descifrado de los datos para aquellos usuarios autorizados es transparente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo evita TDE el descifrado no autorizado?<\/h3>\n\n\n\n<p>El TDE cifra los datos confidenciales almacenados en los archivos de datos. Oracle para descifrar o proteger estos archivos, ofrece el cifrado de datos transparente (TDE).  Para evitar el descifrado no autorizado, el TDE almacena las claves de cifrado en un m\u00f3dulo de seguridad externo a la base de datos. <br>Para ello Oracle dispone de los siguientes m\u00f3dulos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>TDE Wallets<\/strong>: \u00abcaretar de Wallets\u00bb. Son los Wallets que se  utilizan para el TDE. En versiones anteriores simplemente se llamaban \u00abwallets\u00bb.<\/li>\n\n\n\n<li><strong>External keystore<\/strong>: Son almacenes de claves externos (c\u00f3mo Oracle Key Vault, OCI Key Management Service (KMS).<\/li>\n\n\n\n<li><strong>Keystores<\/strong>: T\u00e9rmino que abarca tanto los TDE wallets  c\u00f3mo a los almacenamientos de claves externas.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Beneficios TDE<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Los datos est\u00e1n cifrados, por tanto es un medio de seguridad en caso de robo de los datos.<\/li>\n\n\n\n<li>El uso de TDE ayuda a abordar cumplimientos normativos relacionados con la seguridad.<\/li>\n\n\n\n<li>No es necesario realizar cambios de c\u00f3digo, ni cambios en aplicaciones, la base de datos gestiona el cifrado y descifrado de datos.<\/li>\n\n\n\n<li>Los usuarios y aplicaciones de bases de datos no necesitan saber que los datos a los que est\u00e1 accediendo est\u00e1n encriptados.<\/li>\n\n\n\n<li>Es posible cifrar los datos sin tiempo de inactividad en los sistemas de producci\u00f3n. Tambi\u00e9n es posible realizar el cifrado durante periodos de mantenimiento.<\/li>\n\n\n\n<li>Las operaciones de gesti\u00f3n de claves de cifrados de los wallets puede ser automatizado por Oracle. El usuario final o la aplicaci\u00f3n no necesita administrar las claves de cifrado de los wallets TDE.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Tipos de Cifrado en TDE<\/h3>\n\n\n\n<p>Es posible encriptar datos sensibles de dos formas: A nivel de columna o a nivel de tablespaces.<\/p>\n\n\n\n<p><strong>A nivel de columna<\/strong>: Puedes cifrar datos sensibles en columnas espec\u00edficas de las tablas de la aplicaci\u00f3n.<\/p>\n\n\n\n<p><strong>A nivel de tablespaces<\/strong>: Cifra todos los datos almacenados en un tablespaces. Es el cifrado m\u00e1s utilizado ya que es m\u00e1s f\u00e1cil de aplicar y no requiere un an\u00e1lisis detallado de cada columna de tabla para determinar qu\u00e9 columnas necesitan cifrado.<\/p>\n\n\n\n<p>Nota: Los datos BFILE no se cifran ya que est\u00e1n ubicados f\u00edsicamente en un archivo del sistema operativo, no en el tablespace de la base de datos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Pasos para implementar un TDE<\/strong><\/h3>\n\n\n\n<p>En primer lugar para configurar el TDE, tenemos que hacer una configuraci\u00f3n inicial en la base de datos. B\u00e1sicamente tenemos que configurar el par\u00e1metro WALLET_ROOT (est\u00e1tico) y el par\u00e1metro TDE_CONFIGURATION (din\u00e1mico).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Par\u00e1metro WALLET_ROOT<\/strong>: Especifica el directorio principal para varios almacenes de claves de software. En nuestro caso, para TDE, ser\u00e1 el directorio para el descubrimiento automatizado del wallet que ser\u00e1 WALLET_ROOT\/tde.<\/li>\n\n\n\n<li><strong>Par\u00e1metro TDE_CONFIGURATION<\/strong>: Especifica el tipo de almacen de claves o keystore<em> (almac\u00e9n de claves de software u Oracle Key Vault)<\/em>. Configurado el tipo de almac\u00e9n de claves (TDE_CONFIGURATION), cuando se crea el keystore, Oracle crea un directorio en la ubicaci\u00f3n del par\u00e1metro WALLET_ROOT, en nuestro caso WALLET_ROOT\/tde .<\/li>\n<\/ul>\n\n\n\n<p>Nota: En versiones anteriores, se usaba el par\u00e1metro SQLNET.ENCRYPTION_WALLET_LOCATION. Este par\u00e1metro <strong>ha quedado obsoleto<\/strong>. Oracle recomienda usar los par\u00e1metros de inicializaci\u00f3n est\u00e1tica WALLET_ROOT y din\u00e1mica TDE_CONFIGURATION.<\/p>\n\n\n\n<p><strong>Configuraci\u00f3n del WALLET_ROOT<\/strong><\/p>\n\n\n\n<p>En primer lugar creamos el directorio donde se guardar\u00e1 el wallet a nivel de SSOO.<\/p>\n\n\n\n<p class=\"has-ast-global-color-6-background-color has-background\">mkdir -p $ORACLE_BASE\/admin\/$ORACLE_SID\/wallet<\/p>\n\n\n\n<p>Comprobamos los par\u00e1metros de la BBDD:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"574\" height=\"181\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2024\/08\/image.png\" alt=\"\" class=\"wp-image-4654\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2024\/08\/image.png 574w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2024\/08\/image-300x95.png 300w\" sizes=\"(max-width: 574px) 100vw, 574px\" \/><\/figure>\n\n\n\n<p>Antes de realizar un cambio de par\u00e1metros, aconsejo realizar un backup del spfile.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"631\" height=\"56\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2024\/08\/image-1.png\" alt=\"\" class=\"wp-image-4656\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2024\/08\/image-1.png 631w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2024\/08\/image-1-300x27.png 300w\" sizes=\"(max-width: 631px) 100vw, 631px\" \/><\/figure>\n\n\n\n<p><strong>WALLET_ROOT<\/strong><\/p>\n\n\n\n<p>Par\u00e1metro est\u00e1tico para guardar el directorio del wallet. Cambiamos el par\u00e1metro WALLET_ROOT, y lo guardamos en el spfile.  <strong>Reiniciamos <\/strong>la base de datos.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">SQL&gt; alter system set wallet_root='$ORACLE_BASE\/admin\/$ORACLE_SID\/wallet' scope=spfile;<br>System altered.<\/pre>\n\n\n\n<p><strong>TDE_CONFIGURATION<\/strong><\/p>\n\n\n\n<p>Especificamos el par\u00e1metro <code>TDE_CONFIGURATION<\/code> para especificar el tipo de TDE wallet.&nbsp;En esta ocasi\u00f3n usaremos tipo FILE.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">SQL&gt;  ALTER SYSTEM SET TDE_CONFIGURATION=\"KEYSTORE_CONFIGURATION=FILE\" SCOPE=both;<br>System altered.<\/pre>\n\n\n\n<p>Comprobamos que los par\u00e1metros son correctos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"820\" height=\"207\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2024\/08\/image-2.png\" alt=\"\" class=\"wp-image-4671\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2024\/08\/image-2.png 820w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2024\/08\/image-2-300x76.png 300w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2024\/08\/image-2-768x194.png 768w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">TDE Wallets<\/h3>\n\n\n\n<p>Existen tres tipos diferentes de TDE wallets : protegidas por contrase\u00f1a, de inicio autom\u00e1tico y de inicio autom\u00e1tico local.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Creaci\u00f3n de un Almac\u00e9n de Claves de Software Protegido por Contrase\u00f1a<\/h4>\n\n\n\n<p>C\u00f3mo ya hemos configurado <code>WALLET_ROOT<\/code> y <code>TDE_CONFIGURATION<\/code>, solo necesitamos ejecutar el comando <code>ADMINISTER KEY MANAGEMENT CREATE KEYSTORE<\/code> para crear el wallet. Un almac\u00e9n de claves de software protegido por contrase\u00f1a requiere una contrase\u00f1a, que se usa para proteger las claves maestras del TDE. Para ello es necesario que el usuario tenga uno de estos dos privilegios, <code>ADMINISTER KEY MANAGEMENT<\/code> o <code>SYSKM<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY \"oracleconraul\";<br>keystore altered.<\/pre>\n\n\n\n<p>Pudedes comprobar que se ha creado de forma autom\u00e1tica sobre el directorio WALLET_ROOT un directorio \/tde, donde ver\u00e1s el fichero ewallet.p12, que es nuestro TDE  wallet protegido por password.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[oracle@localhost tde]$ ls -la \/u01\/app\/oracle_base\/admin\/testing\/wallet\/tde<br>total 12<br>drwxr-x---. 2 oracle oracle 4096 ago 15 13:36 .<br>drwxrwxr-x. 3 oracle oracle 4096 ago 15 13:36 ..<br>-rw-------. 1 oracle oracle 2555 ago 15 13:36 <strong>ewallet.p12<\/strong><br><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Creaci\u00f3n de un Almac\u00e9n de Claves de Software de Inicio Autom\u00e1tico o de Inicio Autom\u00e1tico Local<\/h3>\n\n\n\n<p>En este punto tenemos un almac\u00e9n de claves protegidos por contrase\u00f1a. Como opci\u00f3n puedes crear un almac\u00e9n de claves de software de inicio autom\u00e1tico o de inicio autom\u00e1tico local. La diferencia es que el software de inicio autom\u00e1tico se puede abrir desde varios ordenadores, mientras que el almac\u00e9n de claves de inicio local, es local, y debe abrirse en cada ordenador desde del que fue creado. Por defecto, si no se especifica LOCAL, el archivo ser\u00e1 autologin. <\/p>\n\n\n\n<p>Tenga en cuenta que si tiene una base de datos RAC y se especifica <code>LOCAL<\/code>, solo el nodo que cre\u00f3 el archivo de autologin podr\u00e1 abrirlo. En un entorno RAC, para mayor simplicidad, es mejor no especificar la palabra clave <code>LOCAL<\/code>. De lo contrario, tendr\u00e1 que crear m\u00faltiples archivos <code>cwallet.sso<\/code> para cada nodo que contenga las mismas credenciales.<br><\/p>\n\n\n\n<p>En este punto, si reinici\u00e1ramos la Base de datos ver\u00edamos c\u00f3mo nuestro wallet est\u00e1 en estado closed, y deber\u00edamos usar el comando \u00abADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY \u00bb\u00bb; para abrirlo.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">SQL&gt;  select con_id, wrl_parameter, status from gv$encryption_wallet;<br><br>    CON_ID WRL_PARAMETER\t\t\t\t\t\tSTATUS<br>---------- ------------------------------------------------------------ ------------------------------<br>\t 1 \/u01\/app\/oracle_base\/admin\/testing\/wallet\/tde\/\t\t<strong>CLOSED<\/strong><br><\/pre>\n\n\n\n<p>C\u00f3mo esta no es nuestra intenci\u00f3n y queremos que se abra de forma autom\u00e1tica al abrirse la base de datos vamos a crear en primer lugar el software de inicio de sesi\u00f3n autom\u00e1tico o inicio sesi\u00f3n autom\u00e1tico local, en nuestro caso inicio autom\u00e1tico (obviamos la palabra LOCAL).<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">SQL&gt; ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE IDENTIFIED BY \"oracleconraul\";<br><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">SQL&gt; select con_id, wrl_parameter, status from gv$encryption_wallet;<br><br>    CON_ID WRL_PARAMETER\t\t\t\t\t\tSTATUS<br>---------- ------------------------------------------------------------ ------------------------------<br>\t 1 \/u01\/app\/oracle_base\/admin\/testing\/wallet\/tde\/\t\t<strong>OPEN_NO_MASTER_KEY<\/strong><br><\/pre>\n\n\n\n<p>Como puedes ver, se ha creado el archivo <code>cwallet.sso<\/code>, que es el autologin. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"545\" height=\"118\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2024\/08\/image-3.png\" alt=\"\" class=\"wp-image-4698\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2024\/08\/image-3.png 545w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2024\/08\/image-3-300x65.png 300w\" sizes=\"(max-width: 545px) 100vw, 545px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Establecer la Master Key encription<\/h3>\n\n\n\n<p>Antes de realizar alg\u00fan cifrado, debemos crear\/establecer nuestra clave maestra de cifrado, ya que a\u00fan no tenemos una.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">SQL&gt; ADMINISTER KEY MANAGEMENT SET KEY FORCE KEYSTORE  IDENTIFIED BY \"oracleconraul\" WITH BACKUP ;<br><br>keystore altered.<br><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">  sql&gt; select con_id, wrl_parameter, status from gv$encryption_wallet<br><br>    CON_ID WRL_PARAMETER\t\t\t\t\t\tSTATUS<br>---------- ------------------------------------------------------------ ------------------------------<br>\t 1 \/u01\/app\/oracle_base\/admin\/testing\/wallet\/tde\/\t\t<strong>OPEN<\/strong><br><\/pre>\n\n\n\n<p>En este punto ya puede comenzar a encriptar su base de datos (tablespaces, tablas, etc). Veremos c\u00f3mo hacerlo en siguientes entradas.<\/p>\n\n\n\n<p><strong>NOTA<\/strong>: Si se pierden los ficheros wallet u olvida la contrase\u00f1a, no tendr\u00e1 forma de recuperar los datos cifrados. La base de datos no podr\u00e1 ser recupera de ninguna forma (backup, etc), si no se dispone de este fichero. No hay ninguna \u00abpuerta trasera\u00bb, <em>la base de datos tendr\u00e1 que ser reconstruida<\/em>. Por tanto es necesario realizar backup de forma contin\u00faa de estos ficheros.<\/p>\n\n\n\n<p>Una vez que hayas implementado TDE, recomiendo lo siguiente:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Custodiar la contrase\u00f1a TDE.<\/strong><\/li>\n\n\n\n<li><strong>Realizar copias de seguridad del fichero wallet <em>frecuentemente<\/em>.<\/strong><\/li>\n<\/ol>\n\n\n\n<p><strong>Conclusi\u00f3n<\/strong><\/p>\n\n\n\n<p>El beneficio de Oracle Transparent Data Encryption (TDE) es muy grande, comenzando por la protecci\u00f3n de los datos sensibles. Este cifrado protege la informaci\u00f3n y asegura que la informaci\u00f3n sea segura. Adem\u00e1s, TDE presenta varios beneficios clave, incluyendo el cumplimiento con regulaciones relacionadas con la seguridad. Se puede aplicar de forma sencilla y sin impacto en las aplicaciones existentes.<br>Es importante tener en cuenta <strong>que una vez que TDE se implementa, no se puede deshabilitar.<\/strong><\/p>\n\n\n\n<p>En los siguientes post vamos a poner en pr\u00e1ctica la encriptaci\u00f3n de datos y tablespaces para comprobar la dimensi\u00f3n de esta arquitectura.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQu\u00e9 es TDE y por qu\u00e9 es importante? TDE (Transparent Data Encryption) te permite cifrar datos sensibles almacenados en tablas, tablespaces e incluso en copias de seguridad de la base de datos. Esto es crucial para proteger informaci\u00f3n sensible en caso de un acceso no autorizado. Importante:Antes de aplicar TDE aseg\u00farate que tienes una licencia<\/p>\n<div class=\"more-link\">\n\t\t\t\t <a href=\"https:\/\/oracleconraul.com\/index.php\/2024\/08\/16\/oracle-transparent-data-encryption-tde\/\" class=\"link-btn theme-btn\"><span>Read More <\/span> <i class=\"fa fa-caret-right\"><\/i><\/a>\n\t\t\t<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wpupg_custom_link":[],"wpupg_custom_link_behaviour":[],"wpupg_custom_link_nofollow":[],"wpupg_custom_image":[],"wpupg_custom_image_id":[],"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[14],"tags":[32],"class_list":["post-4598","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-seguridad-security"],"_links":{"self":[{"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/posts\/4598","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/comments?post=4598"}],"version-history":[{"count":167,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/posts\/4598\/revisions"}],"predecessor-version":[{"id":4854,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/posts\/4598\/revisions\/4854"}],"wp:attachment":[{"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/media?parent=4598"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/categories?post=4598"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/tags?post=4598"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}