Benutzer-Werkzeuge

Webseiten-Werkzeuge


sec:oracle_tde

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
sec:oracle_tde [2018/07/08 15:46] – [Transparent Database Encryption TDE] gpipperrsec:oracle_tde [2018/07/08 15:48] (aktuell) – [Transparent Database Encryption TDE] gpipperr
Zeile 1: Zeile 1:
 +====== Transparent Database Encryption TDE ======
 +**11g/12c**
 +
 +
 +<fc #800000>1. Regel Niemals den Wallet verlieren!  Gut auf einen USB Stick sichern und im Safe lagern!</fc>
 +
 +
 +=== Einsatz Database Vault ===
 +
 +Stichwort:<fc #800000>** Duties Separation**</fc> SoD => see https://en.wikipedia.org/wiki/Separation_of_duties
 +<code bash>
 +..
 +Separation of duties (SoD)(Also known as Segregation of Duties) is the concept of having more than one person required to complete a task.
 +..
 +</code>
 +
 +=> http://www.oracle.com/technetwork/database/options/database-vault/overview/index.html
 +=== Lizenz ===
 +
 +Für TDE wird die EE Edition + Oracle Advanced Security Option benötigt!
 +
 +
 +
 +==== 1. Pfad zur Wallet angeben ====
 +
 +in der sqlnet.ora unter dem $ORACLE_HOME/network/admin Pfad zur Wallet angeben
 +<code>
 +ENCRYPTION_WALLET_LOCATION=
 +  (SOURCE=(METHOD=FILE)(METHOD_DATA=
 +   (DIRECTORY=/home/oracle/wallet/)))
 +</code>
 +
 +==== 2. Wallet erzeugen und Passwort setzen ====
 +
 +<code plsql>
 +ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "DASSICHEREPASSWORT"
 +</code>
 +
 +!Wird das Passwort ohne "" eingegeben wird das Passwort in Grossbuchstaben angelegt!
 +
 +==== 3. Beim Start der Datenbank das Wallet öffnen =====
 +
 +<code plsql>
 +-- nach dem Start der DB
 +-- Zugriff auf eine Tabelle im verschlüsselten Tablespace
 +FEHLER in Zeile 1:
 +ORA-28365: Wallet ist nicht geoffnet
 +
 +ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "DASSICHEREPASSWORT"
 +
 +</code>
 +
 +
 +==== 4. Tablespace verschlüsseln ====
 +
 +<code plsql>
 +CREATE TABLESPACE "SECUDATA" 
 +       DATAFILE '/opt/oracle/oradata/EXEC01/sedudata01.dbf' 
 +       SIZE 100M 
 +       AUTOEXTEND ON NEXT 10M 
 +       MAXSIZE 8000M 
 +       LOGGING 
 +       EXTENT MANAGEMENT LOCAL 
 +       SEGMENT SPACE MANAGEMENT AUTO 
 +       ENCRYPTION USING 'AES256' DEFAULT STORAGE (ENCRYPT);
 +</code>       
 +
 +Überwachen mit:
 +
 +<code plsql>
 +sqlplus>select TABLESPACE_NAME,ENCRYPTED from dba_tablespaces;
 +
 +Tablespace ENCRYPTED 
 +---------- ---
 +SYSTEM     NO
 +SYSAUX     NO
 +.....
 +SECUDATA   YES
 +DATA       YES
 +
 +</code>
 +
 +
 +----
 +
 +==== Daten in einer existierenden Tabelle verschlüsseln ====
 +
 +Beispiel:
 +
 +<code sql>
 +alter table scott.emp  modify ( ENAME VARCHAR2(10) ENCRYPT);
 +</code>
 +
 +
 +
 +----
 +
 +==== Die Wallet anschauen ====
 +
 +
 +mit dem Befehl mkstore kann die Wallet in der Kommandozeile geöffnet werden:
 +
 +<code bash>
 +
 +cd /opt/oracle/wallet
 +
 +mkstore -wrl . -list
 +
 +Enter wallet password:
 +
 +
 +ORACLE.SECURITY.DB.ENCRYPTION.AV7BL7Db2U/tv9IHcRgqyPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 +ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY
 +ORACLE.SECURITY.ID.ENCRYPTION.
 +ORACLE.SECURITY.KB.ENCRYPTION.
 +
 +
 +#einfacher
 +
 +mkstore -wrl . -viewEntry ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY
 +ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY = AV7BL7Db2U/tv9IHcRgqyPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 +</code>
 +
 +
 +==== Den Master Key in der DB anschauen ====
 +
 +Den Master Key findet man in der DB für Tabellen in der enc$, für den Controlfile in der  x$kcbdbk, für Tablespaces in der x$kcbtek .
 +
 +Siehe dazu auch die  Node Doc ID 1541818.1 für die SQL's.
 +
 +
 +Zusammengefasst, inkl. Path zur Wallet:
 +
 +<code sql wallet.sql>
 +ttitle left  "The Path to the Wallet" skip 2 
 +
 +
 +column WRL_TYPE      format a10 heading "WRL|Type"
 +column WRL_PARAMETER format a20 heading "Wallet|Params"
 +column STATUS        format a10 heading "Status"
 +column WALLET_TYPE  format a10 heading "Wallet|type"
 +column WALLET_ORDER  format a9 heading "Status"
 +column FULLY_BACKED_UP  format a9 heading "Backup"
 +column CON_ID  format 999 heading "Con|ID"
 +column inst_id format 999 heading "Inst|ID"
 +
 +
 +select inst_id
 +        , WRL_TYPE
 + ,WRL_PARAMETER
 + ,STATUS
 + ,WALLET_TYPE
 + ,WALLET_ORDER
 + ,FULLY_BACKED_UP
 + ,CON_ID
 +from gv$encryption_wallet
 +/
 +
 +
 +
 +column name format a40
 +column masterkeyid_base64 format a60
 +
 +ttitle left  "Get the Master Key for Tablespaces" skip 2 
 +
 +select  name
 +       ,utl_raw.cast_to_varchar2( utl_encode.base64_encode('01'||substr(mkeyid,1,4))) || utl_raw.cast_to_varchar2( utl_encode.base64_encode(substr(mkeyid,5,length(mkeyid)))) masterkeyid_base64  
 +  FROM (select t.name, RAWTOHEX(x.mkid) mkeyid 
 +          from v$tablespace t
 +      , x$kcbtek x 
 + where t.ts#=x.ts#)
 +/  
 +
 +
 +ttitle left  "Get the Master Key for the Controlfile" skip 2 
 +
 +select  utl_raw.cast_to_varchar2( utl_encode.base64_encode('01'||substr(mkeyid,1,4))) || utl_raw.cast_to_varchar2( utl_encode.base64_encode(substr(mkeyid,5,length(mkeyid)))) masterkeyid_base64  
 +  FROM (select RAWTOHEX(mkid) mkeyid 
 +          from x$kcbdbk)
 +/   
 +
 +
 +ttitle left  "Get the Master Key for Tables" skip 2 
 +
 +select mkeyid from enc$;
 +
 +
 +ttitle left  "Witch Columns are encrypted?" skip 2 
 +
 +column owner          format a15  heading "Owner"
 +column table_name     format a15  heading "Table|Name"
 +column column_name    format a15 heading "Column|Name"
 +column ENCRYPTION_ALG format a35 heading "Encryption|Algo"
 +
 +select owner          
 + ,table_name     
 + ,column_name    
 + ,ENCRYPTION_ALG 
 +from dba_encrypted_columns
 +/
 +
 +ttitle off
 +</code>
 +
 +----
 +
 +====Backup verschlüssen====
 +
 +Um nun nur das Backup zu verschlüsseln, muss nur der Parameter "CONFIGURE ENCRYPTION FOR DATABASE" auf ON gesetzt werden.
 +
 +
 +<code sql>
 +CONFIGURE ENCRYPTION FOR DATABASE ON;
 +</code>
 +
 +Alle nun folgenden Backups werden verschlüsselt.
 +
 +
 +----
 +
 +==== Wallet geht verloren===
 +
 +Um ein Backup wieder einzuspielen, muss die Wallet mit dem richtigen Passwort geöffnet werden.
 +
 +Aber wass passiert wenn die Wallet verloren geht?
 +
 +Entsteht dadurch ein neuer Masterkey?
 +
 +=== Neuanlegen einer Wallet mit 12c===
 +
 +Wallet löschen und neu anlegen mit dem alten Passwort
 +<code sql>
 +
 +sqlplus>shutdown immediate
 +
 +cd /home/oracle/wallet
 +rm *
 +
 +
 +sqlplus>startup
 +
 +sqlplus>ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "DASSICHEREPASSWORT";
 +ERROR at line 1:
 +ORA-28374: typed master key not found in wallet
 +
 +????
 +
 +sqlplus>startup force
 +
 +sqlplus>ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "DASSICHEREPASSWORT";
 +System altered.
 +
 +</code>
 +Wallet wird angelegt und kann beim nächsten Start auch wieder mit dem obigen Passwort geöffent werden
 +
 +Hat sich der Key verändert? testen:
 +<code bash>
 + mkstore -wrl . -viewEntry ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY
 +
 +Enter wallet password:
 +
 +ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY = AZAZUSZj3k/kv8XeJcT4ZdMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 +
 +</code>
 +
 +Der alte Key war "AV7BL7Db2U/tv9IHcRgqyPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", damit ist der Schlüssel für die Verschlüsselung wohl weg .-( .
 +
 +Das alte Backup kann dann aber NICHT mehr wiederhergestellt werden, RMAN funktioniert und kann die Wallet öffnen, aber:
 +<code sql>
 +ORA-19913: unable to decrypt backup
 +</code>
 +
 +<note warning>Geht die Wallet verloren, ist das Backup wertlos, auch wenn das Passwort der Wallet bekannt ist!
 +</note>
 +
 +
 +
 +
 +
 +
 +----
 +
 +===== Quellen =====
 +
 +
 +Support:
 +
 +11g
 +  * NOTE:1240824.1 - The Impact of the Sqlnet Settings on Database Security (sqlnet.ora Security Parameters and Wallet Location)
 +  * Step by Step Troubleshooting Guide for TDE Error ORA-28374 (Doc ID 1541818.1)
 +
 +12c 
 +  * Getting Started With Transparent Data Encryption in Oracle 12c (non pluggable database ) (Doc ID 1964158.1)
 +
 +
 +Oracle:
 +
 +  * http://www.oracle.com/technetwork/database/security/tde-faq-093689.html#A12015
 +  * http://www.oracle.com/technetwork/database/options/advanced-security/overview/advanced-security-tde-faq-2995212.pdf
 +  * http://www.oracle.com/global/de/community/dbadmin/tipps/tde/index.html
 +  * http://www.oracle.com/technology/obe/10gr2_db_vmware/security/tde/tde.htm
 +
 +Netz:
 +  * http://www.toadworld.com/platforms/oracle/w/wiki/11140.oracle-database-12c-transparent-data-encryption-tde-and-the-world-of-multitenant-database
 +
 +
 +
 +Interessante Links zum Thema:
 +[[http://www.intel.com/Assets/en_US/PDF/whitepaper/323587.pdf|Intel-Securing the Enterprise with Intel AES-NI]]
  
sec/oracle_tde.txt · Zuletzt geändert: 2018/07/08 15:48 von gpipperr