Sie sind auf Seite 1von 21

Autorizaciones

Jaime Casanova

Soporte Libre 17 de diciembre de 2009

Jaime Casanova

Autorizaciones

Privilegios en 8.3
DATABASE
create, connect (por omisin), temporary (por omisin)

TABLESPACE
create

SCHEMA
create, usage

TABLE
select, insert, update, delete, references, trigger

FUNCTION
execute (default)

LANGUAGE
usage (default)

SEQUENCE
usage, select, update
Jaime Casanova Autorizaciones

Nuevos privilegios en 8.4

TABLE
TRUNCATE

FOREIGN DATA WRAPPER


USAGE

FOREIGN DATA SERVER


USAGE

Privilegios por columna

Jaime Casanova

Autorizaciones

Sintaxis de GRANT

GRANT { { privilegio } [, ...] | ALL [ PRIVILEGES ] ON [ tipo de objeto ] objeto [, ...] TO { [ GROUP ] nombre de rol | PUBLIC } [, ... [ WITH GRANT OPTION ] Notas: el tipo de objeto por omisin es TABLE las funciones se deben especicar incluyendo tipos de argumentos los conjuntos de privilegios vlidos varan segn el tipo de objeto WITH GRANT OPTION: el rol receptor puede otorgar el privilegio a otros darle un privilegio a PUBLIC es equivalente a darle el privilegio a todos los roles
Jaime Casanova Autorizaciones

Sintaxis de REVOKE

REVOKE [ GRANT OPTION FOR ] { { privilegio } [, ...] | ALL [ PRIVILEGES ] } ON [ tipo de objeto ] objeto [, ...] FROM { [ GROUP ] nombre de rol | PUBLIC } [, ...] [ CASCADE | STRICT ] Notas: algunos privilegios se otorgan a PUBLIC por omisin
puede ser necesario revocarlos

GRANT OPTION FOR revoca slo la opcin de otorgar el privilegio a otros CASCADE revoca privilegios otorgados por este usuario a otros STRICT (por omisin) impide que se revoque el privilegio si hay cascada
Jaime Casanova Autorizaciones

Privilegios de DATABASE

CREATE
Permite crear esquemas

CONNECT
Permite conectarse est otorgado a PUBLIC por omisin

TEMPORARY (o TEMP)
permite crear objetos temporales est otorgado a PUBLIC por omisin

ALL

Jaime Casanova

Autorizaciones

Privilegios de TABLESPACE

CREATE
Permite crear objetos en el tablespace

ALL

Jaime Casanova

Autorizaciones

Privilegios de SCHEMA

CREATE
Permite crear objetos en el esquema

USAGE
Permite acceder a los objetos dentro del esquema El usuario debe tener privilegios sobre el objeto adems No impide que el usuario vea la denicin del objeto!

ALL

Jaime Casanova

Autorizaciones

Privilegios de TABLE

SELECT INSERT UPDATE


generalmente requiere adems SELECT

DELETE
generalmente requiere adems SELECT

TRUNCATE
nuevo en 8.4

REFERENCES
Necesario para crear FKs que apunten a esta tabla

TRIGGER

Jaime Casanova

Autorizaciones

Privilegios de SEQUENCE

USAGE
Permite hacer currval() y nextval()

SELECT
Permite examinar currval()

UPDATE
Permite usar nextval() y setval()

ALL

Jaime Casanova

Autorizaciones

Privilegios de FUNCTION

EXECUTE
Tenga cuidado de revocar privilegios de PUBLIC en la misma transaccin que crea la funcin si es security definer

ALL

Jaime Casanova

Autorizaciones

Privilegios de LANGUAGE

USAGE
Permite crear funciones con este lenguaje Usuarios normales (no super) no pueden crear funciones en lenguajes untrusted
independiente de los privilegios que se otorguen

Jaime Casanova

Autorizaciones

FOREIGN DATA WRAPPER / SERVER

DATA WRAPPER
USAGE Permite crear nuevos servidores usando este wrapper

DATA SERVER
USAGE Permite examinar opciones del servidor y los mapeos de usuario que existen

Jaime Casanova

Autorizaciones

Privilegios por Columna


SELECT
Si se otorga menos que la tabla completa, SELECT * no funciona

INSERT
Permite INSERT INTO tab (col1, col2) VALUES (1, 2) columnas no mencionadas se les pone el DEFAULT, o NULL si la columna es NOT NULL y no hay DEFAULT, arroja error

UPDATE
Permite UPDATE tab SET col1=x clusula WHERE requiere privilegios SELECT!

REFERENCES
permite usar la columna en llave fornea

ALL
Jaime Casanova Autorizaciones

Privilegios por columna, Ejemplos

GRANT SELECT (col1, col2) ON mi_tabla TO mi_rol; GRANT INSERT (col1), UPDATE (col2) ON mi_tabla TO otro_rol; GRANT SELECT, UPDATE (col3) ON mi_tabla TO todavia_otro_mas;

Jaime Casanova

Autorizaciones

Almacenamiento en catlogos

La informacin de privilegios se almacena en columnas ...acl en varios catlogos pg_class.relacl pg_attribute.attacl pg_database.datacl etc

Jaime Casanova

Autorizaciones

Control de acceso

Crear niveles de control de acceso Contenedores:


database (si el usuario se puede conectar) schema (si el usuario puede usar los objetos que contiene)

Privilegios a nivel de objeto (tabla, columnas, ...):


slo otorgar los privilegios necesarios seguir el principio del mnimo privilegio

Privilegios complejos (funciones, vistas)


implementacin de polticas especiales

Jaime Casanova

Autorizaciones

Usando el contenedor base de datos

Dos maneras: 1. Deshabilitar acceso en pg_hba.conf


requiere manejo de archivos de conguracin requiere un reload de postgres

2. Revocar privilegio CONNECT


Se debe revocar CONNECT de PUBLIC Adems se debera revocar TEMPORARY de PUBLIC los controles estn dentro de la base de datos en lugar de internamente

Jaime Casanova

Autorizaciones

Ejemplo: Uso de vistas

Las vistas se ejecutan con el usuario que las crea ... esto puede usarse para implementar restricciones de nivel de registro CREATE VIEW solo_mios AS SELECT * FROM todos WHERE usuario_permitido = CURRENT_USER solo_mios debe ser denida por un usuario con privilegios sobre todos Si los privilegios sobre todos son revocados, la vista retornar permiso denegado

Jaime Casanova

Autorizaciones

Funciones security definer


Las funciones security definer se ejecutan con el usuario que las crea Pueden usarse para implementar privilegios complejos CREATE FUNCTION get_datos_usuariojuan() RETURNS integer LANGUAGE SQL SECURITY DEFINER AS $$ select el_numero FROM el_esquema.datos_usuario WHERE nombre_usuario = juan; $$; REVOKE EXECUTE ON FUNCTION get_datos_usuariojuan() FROM PUBLIC; GRANT EXECUTE ON FUNCTION get_datos_usuariojuan() TO juan;
Jaime Casanova Autorizaciones

Preguntas

Preguntas?

Jaime Casanova

Autorizaciones

Das könnte Ihnen auch gefallen