Descargue el PDF – Newsletter -Enero 2014

Anuncio
Newsletter – Enero 2014
Análisis de Privilegios en Oracle 12c
Contenido
Página:
1 Análisis de Privilegios en
Oracle 12c
7 Conceptos SOA: XPATH Location Path
12 Instalando Oracle 12cR1
en Linux 64 bits
Por Ing. Juan Luis Rodríguez
[email protected]
Oracle 12c introduce una nueva característica llamada "Análisis de Privilegios", que
permite fortalecer la seguridad en la aplicación al identificar privilegios y roles que
no se usan. Esto le ayudará a definir y asignar sólo los privilegios y roles
necesarios, dando más seguridad a la aplicación. El análisis de privilegios permite:
1. Producir un reporte de privilegios y roles usados en la base de datos.
2. Identificar privilegios y roles no utilizados por usuarios y aplicaciones.
Editores
Generales
5a. Ave.
5-55 Zona14,Edificio
Euro Plaza Torre3.
II, Nivel
12
Reducir
riesgo, ya que fortalece el principio de asignar la menor cantidad de
Teléfono:
(502)2364-5300Fax:
(502)2364-5311
privilegios
a usuarios y aplicaciones.
Francisco Barrundia
[email protected]
Pagina 1/10
Alejandro Lau
Debbie Morán
Autores
Contribuyentes
Juan Luis Rodríguez
Daniel Caciá
Francisco Barrundia
En este artículo se muestran los pasos para registrar los privilegios utilizados por
los usuarios durante un período de tiempo, lo que ayudará a decidir cuáles será
necesario revocar o mantener.
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 1
Crear usuarios, roles y tablas para la asignación de privilegios y roles
1. Usuarios:
create user jim identified by jim;
create user tom identified by tom;
create user ann identified by ann;
2. Roles:
create role HR_MGR;
create role SALES_CLERK;
create role ANALYST;
3. Privilegios:
grant create session to jim, tom, ann;
grant select, update, delete, insert on hr.employees to HR_MGR;
grant HR_MGR to jim;
grant select on sh.sales to SALES_CLERK;
grant SALES_CLERK to tom;
grant select any table to ANALYST;
grant ANALYST to ann;
Definir la captura
Proceso
de
captura
de
privilegios
usados
por
todos
los
usuarios,
con
el
paquete
DBMS_PRIVILEGE_CAPTURE:
exec SYS.DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE ( name
=> 'All_privs', description
=> 'Allprivsused', type
=>
dbms_privilege_capture.g_database);
Listar las capturas existentes
Vista DBA_PRIV_CAPTURES:
COL
COL
COL
COL
name
type
enabled
roles
FORMAT
FORMAT
FORMAT
FORMAT
A12
A16
A2
A40
SQL> select name, type, enabled, roles from dba_priv_captures;
NAME
TYPE
EN ROLES
------------ ---------------- -- ---------------------------------------All_privs
DATABASE
N
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 2
Iniciar captura de privilegios y analizar
1. Procedimiento ENABLE_CAPTURE:
exec SYS.DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE (name => 'All_privs');
exit
NOTA: Se debe salir de SQL*Plus e ingresar nuevamente antes de continuar con el siguiente
paso, de otra manera se podrían ver resultados incorrectos en los siguientes pasos.
2. Los usuarios JIM, TOM y ANN ejecutan instrucciones SQL usando sus privilegios. JIM , y ANN
seleccionan registros de la tabla HR.EMPLOYEES y TOM selecciona filas de la tabla
SH.SALES.
sqlplus jim/jim@localhost:1521/pdborcl.localdomain
SQL> select employee_id, last_name from hr.employees where salary < 3000;
EMPLOYEE_ID
----------116
117
118
119
126
127
128
130
131
132
134
LAST_NAME
------------------------Baida
Tobias
Himuro
Colmenares
Mikkilineni
Landry
Markle
Atkinson
Marlow
Olson
Rogers
sqlplus tom/tom@localhost:1521/pdborcl.localdomain
SQL> select * from sh.sales where amount_sold< 6.42 and cust_id = 6452;
PROD_ID
CUST_ID TIME_ID
CHANNEL_ID
PROMO_ID QUANTITY_SOLD AMOUNT_SOLD
---------- ---------- --------- ---------- ---------- ------------- ----------120
6452 29-SEP-00
2
999
1
6.4
120
6452 29-SEP-00
4
999
1
6.4
sqlplus ann/ann@localhost:1521/pdborcl.localdomain
SQL> select employee_id, last_name from hr.employees where salary > 3000 and
rownum<=5 order by salary desc;
EMPLOYEE_ID
----------100
101
102
103
104
LAST_NAME
------------------------King
Kochhar
De Haan
Hunold
Ernst
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 3
3. Detener captura con procedimiento DISABLE_CAPTURE:
sqlplus system/Manager1#@localhost:1521/pdborcl.localdomain
exec SYS.DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE (name => 'All_privs');
4. Generar resultados de captura con procedimiento GENERATE_RESULT.
exec SYS.DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT (name => 'All_privs');
5. Consultar privilegios usados durante período de captura.
COL
COL
COL
COL
username FORMAT A10
object_owner FORMAT A12
object_name FORMAT A30
obj_priv FORMAT A25
select
from
where
and
username, object_owner, object_name, obj_priv
dba_used_objprivs
username in ('JIM', 'TOM')
object_name in ('SALES' , 'EMPLOYEES');
USERNAME
---------TOM
JIM
OBJECT_OWNER
-----------SH
HR
OBJECT_NAME
-----------------------------SALES
EMPLOYEES
OBJ_PRIV
----------------------SELECT
SELECT
6. Mostrar los privilegios usados por ANN. ¿Necesitan realmente ANN y el role ANALYST el
privilegio SELECT ANY TABLE?
column used_role format a20
column sys_priv format a20
column object_name format a20
select username, used_role, sys_priv, object_name FROM dba_used_privs
where username ='ANN' and object_name = 'EMPLOYEES';
USERNAME
USED_ROLE
SYS_PRIV
OBJECT_NAME
---------- -------------------- -------------------- -------------------ANN
ANALYST
SELECT ANY TABLE
EMPLOYEES
7. Los privilegios del sistema usados se obtienen consultado la vista DBA_USED_SYSPRIVS.
select username, sys_priv FROM dba_used_sysprivs
where username IN ('JIM', 'TOM', 'ANN');
USERNAME
---------JIM
TOM
ANN
ANN
SYS_PRIV
-------------------CREATE SESSION
CREATE SESSION
CREATE SESSION
SELECT ANY TABLE
8. Consultando la vistaDBA_USED_OBJPRIVS_PATHobtenemos los privilegio usados y si fueron
otorgados por medio de roles (columna PATH).
COL object_name FORMAT A12
COL path FORMAT A40
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 4
COL obj_priv FORMAT A10
select username, obj_priv, object_name, path
from dba_used_objprivs_path
where username IN ('TOM','JIM','ANN')
andobject_name IN ('SALES','EMPLOYEES');
USERNAME
---------JIM
TOM
OBJ_PRIV
---------SELECT
SELECT
OBJECT_NAME
-----------EMPLOYEES
SALES
PATH
-------------------------------GRANT_PATH('JIM', 'HR_MGR')
GRANT_PATH('TOM', 'SALES_CLERK')
9. A través del role HR_MGR, JIM tiene asignados los privilegios select, update, delete,
insert sobre la tabla HR.EMPLOYEES. Hasta ahora, JIM solo ha usado el privilegio SELECT.
Consultando la vista DBA_UNUSED_PRIVS obtenemos los privilegios no usados, los cuales
pueden ser revocados:
select username, sys_priv, obj_priv, object_name, path
from
dba_unused_privs
where username='JIM'
and object_name = 'EMPLOYEES';
USERNAME
OBJ_PRIV
OBJECT_NAME PATH
---------- ---------- ------------ -------------------------------------------------JIM
DELETE
EMPLOYEES
GRANT_PATH('SYSTEM', 'DBA', 'EM_EXPRESS_ALL', 'EM_
EXPRESS_BASIC', 'SELECT_CATALOG_ROLE')
JIM
DELETE
EMPLOYEES
GRANT_PATH('SYSTEM', 'DBA', 'EM_EXPRESS_ALL', 'EM_
EXPRESS_BASIC', 'SELECT_CATALOG_ROLE')
JIM
DELETE
EMPLOYEES
GRANT_PATH('SYSTEM', 'DBA', 'DATAPUMP_IMP_FULL_DAT
ABASE', 'EXP_FULL_DATABASE', 'SELECT_CATALOG_ROLE'
)
JIM
DELETE
EMPLOYEES
GRANT_PATH('SYSTEM', 'DBA', 'DATAPUMP_IMP_FULL_DAT
ABASE', 'IMP_FULL_DATABASE', 'SELECT_CATALOG_ROLE'
)
JIM
DELETE
EMPLOYEES
GRANT_PATH('SYSTEM', 'DBA', 'DATAPUMP_EXP_FULL_DAT
ABASE', 'EXP_FULL_DATABASE', 'SELECT_CATALOG_ROLE'
)
JIM
DELETE
EMPLOYEES
GRANT_PATH('SYSTEM', 'DBA', 'IMP_FULL_DATABASE', '
SELECT_CATALOG_ROLE')
JIM
DELETE
EMPLOYEES
GRANT_PATH('SYSTEM', 'DBA', 'IMP_FULL_DATABASE', '
SELECT_CATALOG_ROLE')
JIM
DELETE
EMPLOYEES
GRANT_PATH('SYSTEM', 'DBA', 'EXP_FULL_DATABASE', '
SELECT_CATALOG_ROLE')
JIM
JIM
JIM
JIM
DELETE
UPDATE
INSERT
DELETE
EMPLOYEES
EMPLOYEES
EMPLOYEES
EMPLOYEES
GRANT_PATH('SYSTEM', 'DBA', 'SELECT_CATALOG_ROLE')
GRANT_PATH('JIM', 'HR_MGR')
GRANT_PATH('JIM', 'HR_MGR')
GRANT_PATH('JIM', 'HR_MGR')
12 rowsselected.
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 5
Eliminando la captura
Una vez finalizada la identificación de los privilegios no utilizados, detenemos el proceso de
captura:
exec SYS.DBMS_PRIVILEGE_CAPTURE.DROP_CAPTURE (name => 'All_privs');
Conclusión
Con el uso de la nueva característica "Análisis de Privilegios", se puede determinar el conjunto de
privilegios y roles requeridos para una función específica, agrupado dentro de un nuevo role de
base de datos. Los privilegios no usados pueden ser auditados antes de revocarlos.
En el sitio oficial de Oracle
http://docs.oracle.com/cd/E16655_01/server.121/e17608/priv_analysis.htm#DVADM591 encontrará
más información sobre la creación y manejo de las políticas del análisis de privilegios, análisis de
privilegios con Cloud Control, análisis de privilegios de tipo ANY y análisis de privilegios de usuario
que tiene asignado el role DBA, entre otros.
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 6
Conceptos SOA: XPATH - Location Path
Por Ing. Daniel Caciá
[email protected]
El lenguaje XML Path o XPath es principalmente utilizado para direccionar nodos de un documento
XML ya que permite identificar un documento XML como un árbol de nodos, e indicar la
navegación a través de paths (direcciones) a partir de la estructura del mismo.
Modelo XPath
Para aprender a utilizar Xpath se debe visualizar el documento XML como un árbol de nodos muy
al estilo de la estructura de directorios de un sistema de archivos.
En la siguiente imagen se muestran los diferentes tipos de nodos:
1.
2.
3.
4.
5.
Documento raíz, que es el padre de todos los nodos.
Elemento raíz, por ejemplo <departments>.
Elemento nodo, por ejemplo <department>, <deparment_id> y <deparment_name>.
Atributos, por ejemplo num=“1”.
El nodo texto, por ejemplo 10 o Administration.
Para poder referenciar un nodo XML y obtener su información, se utiliza una expresión "location
path" con sintaxis similar a la forma en la que se referencia un archivo. Por ejemplo, si quiero
obtener el nodo employee_id del documento siguiente, debo utilizar la expresión
/employees/employee/employee_id.
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 7
Si consideramos el siguiente documento XML:
<?xml version="1.0"?>
<employees>
<employee employee_id="100">
<name>
<first_name>Steven</first_name>
<last_name>King</last_name>
</name>
<salary>24000</salary>
</employee>
<employee employee_id="101">
<name>
<first_name>Neena</first_name>
<last_name>Kochhar</last_name>
</name>
<salary>18000</salary>
</employee>
Al utilizar los siguientes location paths se obtienen los resultados expuestos a continuación:
</employees>
Al utilizar la expresión text() se obtiene el valor del nodo. Para obtener el atributo de un nodo,
utilizamos el símbolo @.
Ejemplos de XPath
/AAA
Selecciona el elemento raíz AAA
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 8
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
/AAA/CCC
Selecciona todos los elementos CCC que son hijos del elemento raíz AAA
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
/AAA/DDD/BBB
Selecciona todos los elementos BBB que son hijos de DDD, que a su vez son hijos del elemento
raíz AAA
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
//BBB
Selecciona todos los elementos BBB
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 9
<AAA>
<BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>
/AAA/CCC/DDD/*
Selecciona todos los elementos contenidos en el camino /AAA/CCC/DDD
<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB>
<BBB>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
/AAA/BBB[1]
Selecciona el primer hijo BBB del elemento AAA
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 10
<AAA>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
</AAA>
/AAA/BBB[last()]
Selecciona el último hijo BBB del elemento AAA
<AAA>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
</AAA>
Tip Técnico del Mes
Consulta Oracle SQL que muestra los usuarios de Oracle conectados y el número
de sesiones por usuario:
select username Usuario_Oracle, count(username) Numero_Sesiones
from v$session
group by username
order by Numero_Sesiones desc
Por Lic. Francisco Barrundia
[email protected]
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 11
Instalando Oracle 12cR1 en Linux 64 bits
Por Lic. Francisco Barrundia
[email protected]
Instalación de Binarios de Oracle
Nota: Las capturas de pantalla han sido editadas o recortadas para minimizar el espacio del
artículo y el tamaño del documento.
1. Como un prerrequisito, configuramos la variable de ambiente que indica la ruta donde se instalarán
los binarios (ORACLE_HOME). Luego vamos al directorio donde está descomprimido el software
de instalación Oracle; y ejecutamos runInstaller para iniciar la instalación:
$ export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
$ cd /stage/database
$ ./runInstaller
2. Una vez que inicia el instalador, podemos deseleccionar la configuración con MOS (My Oracle
Support). También se puede dejar en blanco el correo electrónico.
3. En la siguiente pantalla, escogemos omitir actualizaciones de software
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 12
4. En la siguiente sección indicamos que queremos crear y configurar una base de datos.
5. Luego indicamos que es una instalación tipo Servidor. Si van a realizar pruebas o se tiene recursos
limitados, seleccionar tipo Desktop.
6. Vamos con una instalación de instancia sencilla.
7. Seleccionamos instalación avanzada para más opciones de configuración.
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 13
8. Dejamos el idioma inglés y opcionalmente agregamos otros idiomas. Recordemos que la
configuración de idioma para aplicaciones cliente se hace en el ambiente del cliente. Luego
escogemos el tipo de licenciamiento (Enterprise, Standard, Standard One).
9. Seguidamente, el instalador puede sugerir ubicaciones para ORACLE_BASE y ORACLE_HOME.
10. En esta parte del instalador seleccionamos la ubicación del Inventario de Oracle, así como el grupo
primario para escribir en este directorio.
11. Procedemos ahora con configuración de una base de datos. Por ejemplo, podemos elegir una de
uso general.
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 14
Descargar