Está en la página 1de 5

Centro Universitario UAEM Texcoco

Sistemas Gestores de Bases de Datos

3.6 Roles
El control de acceso basado en roles (RBAC) surgi en los aos 90 como tecnologa probada para la gestin y el reforzamiento de la seguridad en sistemas empresariales a gran escala. La idea bsica es que los permisos estn asociados a roles y a los usuarios se les asignan los roles apropiados. Los roles se pueden crear mediante los comandos CREATE ROLE y DROP ROLE. Los comandos GRANT y REVOKE que se vieron en la seccin de permisos y privilegios pueden usarse para conceder y revocar privilegios a los roles. PostgreSQL maneja los permisos de acceso a la base de datos usando el concepto de roles. Un rol puede ser un usuario de la base de datos, o un grupo de usuarios de la base de datos. Los roles pueden ser dueos de objetos de la base de datos (por ejemplo, de tablas) y pueden asignar privilegios sobre esos objetos a otros roles para controlar el acceso a los objetos. El concepto de rol incluye usuarios y grupos. Cualquier rol puede actuar como un usuario, como un grupo o como ambos. 3.6.1 Roles de la base de datos Para crear un rol se usa el comando SQL CREATE ROLE: CREATE ROLE nombre; Por ejemplo: CREATE ROLE secretaria; Para eliminar un rol existente se usa el comando DROP ROLE: DROP ROLE nombre; Por ejemplo: DROP ROLE secretaria; Para determinar el conjunto de roles existentes, se examina el catlogo del sistema pg_roles, por ejemplo: SELECT * FROM pg_roles; 3.6.2 Atributos de los roles Un rol de la base de datos puede tener varios atributos que definen sus privilegios.
Dra. en C. Lisbeth Rodrguez Mazahua 1

Centro Universitario UAEM Texcoco

Sistemas Gestores de Bases de Datos

Privilegio de inicio de sesin (login) Solo los usuarios que tienen el atributo LOGIN pueden conectarse a la base de datos. Un rol con el atributo LOGIN puede considerarse como un usuario de la base de datos. Para crear un rol con el privilegio de inicio de sesin, puede usarse: CREATE ROLE nombre LOGIN; CREATE USER nombre; Por ejemplo: CREATE ROLE secretaria LOGIN; Es lo mismo que: CREATE USER secretaria. Categora de superusuario Un superusuario de la base de datos tiene todos los permisos en la base de datos. Para crear un nuevo superusuario de la base de datos, usar: CREATE ROLE nombre SUPERUSER; Por ejemplo: CREATE ROLE admin SUPERUSER; Esta sentencia debe ejecutarla un rol que ya sea un superusuario. Creacin de bases de datos A un rol tambin se le puede otorgar el permiso para crear bases de datos, para esto usar: CREATE ROLE nombre CREATEDB; Por ejemplo: CREATE ROLE gerente CREATEDB; Creacin de roles Se le puede dar a un rol el permiso para crear otros roles, para esto se ejecuta:

Dra. en C. Lisbeth Rodrguez Mazahua

Centro Universitario UAEM Texcoco

Sistemas Gestores de Bases de Datos

CREATE ROLE nombre CREATEROLE; Por ejemplo: CREATE ROLE director CREATEROLE; Un rol con el privilegio de crear otros roles puede alterar y eliminar otros roles tambin. Contrasea Una contrasea es importante cuando se requiere para conectarse a la base de datos. Se especifica una contrasea cuando se crea un rol con: CREATE ROLE nombre PASSWORD string; Por ejemplo: CREATE ROLE profesor LOGIN UNENCRYPTED PASSWORD 'uaem'; Para ver la contrasea almacenada de los roles se ejecuta: SELECT * FROM pg_authid; Los atributos de un rol pueden modificarse despus de que se crea el rol con: ALTER ROLE Por ejemplo: Para cambiarle el nombre al rol profesor ALTER ROLE profesor RENAME TO maestro; se ejecuta lo siguiente:

Para agregarle los permisos para crear roles y bases de datos al usuario secreataria, se ejecuta: ALTER ROLE secretaria CREATEROLE CREATEDB Para agregarle una contrasea a un rol: ALTER ROLE secretaria UNENCRYPTED PASSWORD '123' Para dar una fecha de expiracin de la contrasea. ALTER ROLE secretaria VALID UNTIL '01-11-2013' Para hacer vlida una contrasea para siempre:
Dra. en C. Lisbeth Rodrguez Mazahua 3

Centro Universitario UAEM Texcoco

Sistemas Gestores de Bases de Datos

ALTER ROLE secretaria VALID UNTIL 'infinity' Para quitarle la contrasea a un rol: ALTER ROLE secretaria PASSWORD NULL

3.6.3 Propiedad del rol Es conveniente agrupar a los usuarios para facilitar la gestin de los privilegios: de esa forma, los privilegios pueden concederse o quitarse al grupo completo. Para esto, en PostgreSQL se crea un rol que represente al grupo, y entonces se concede la propiedad del rol del grupo a los roles de usuarios individuales. Para establecer un rol grupo, primero se crea el rol: CREATE ROLE nombre Normalmente un rol que se va a utilizar como un grupo no tiene el atributo LOGIN, aunque puede agregarse si se desea. Una vez que existe el rol grupo, se pueden agregar y remover miembros usando los comandos GRANT y REVOKE. GRANT rol_grupo TO rol1, ...; REVOKE rol_grupo FROM rol1, ; Por ejemplo: GRANT admin TO secretaria, maestro; Para ver los roles que se encuentran dentro del rol grupo admin se ejecuta: SELECT rolname FROM pg_roles, (SELECT grolist FROM pg_group WHERE groname = 'admin') AS groups WHERE oid = ANY(grolist) ; REVOKE admin FROM secretaria; Los miembros de un rol grupo pueden usar los privilegios del rol de dos formas. Primero cada miembro del grupo puede ejecutar explcitamente SET ROLE para volverse temporalmente el rol grupo. En este estado, la sesin de la base de datos tiene acceso a los privilegios del rol grupo en lugar de los del rol de inicio de sesin original y el dueo de cualquier objeto creado en la base de datos ser el rol grupo no el rol de inicio de sesin.
Dra. en C. Lisbeth Rodrguez Mazahua 4

Centro Universitario UAEM Texcoco

Sistemas Gestores de Bases de Datos

Segundo, los roles miembros que tienen el atributo INHERIT automticamente pueden usar los privilegios de los roles de los que son miembros, incluyendo cualquier privilegio heredado por esos roles. Por ejemplo, si se agrega un servidor para que el usuario maestro se conecte a la base de datos y se trata de ver el contenido de la tabla estudiante, no se puede ya que el usuario maestro no tiene el permiso. Si el superusuario postgres asigna el privilegio SELECT en la tabla estudiante al rol admin: GRANT SELECT ON estudiante TO admin Los privilegios otorgados al rol admin pueden verse ejecutando: SELECT * FROM grantee='admin' information_schema.table_privileges WHERE

Como el rol maestro es miembro del rol admin y tiene el atributo INHERIT entonces hereda el privilegio de consultar la tabla estudiante. SELECT * FROM estudiante; Si ahora el superusuario postgres modifica el rol maestro para que no herede los privilegios del grupo del que forma parte: ALTER ROLE maestro NOINHERIT; El usuario maestro otra vez no podr consultar los datos de la tabla estudiante porque no hereda este permiso del rol admin. Sin embargo, el rol maestro puede usar los privilegios del rol admin ejecutando lo siguiente: SET ROLE admin; SELECT * FROM estudiante; El rol secretaria ya no es miembro del rol grupo admin, por lo tanto, no puede ejecutar: SET ROLE admin; Para verificar esto agregarle una contrasea al rol secretaria para que se pueda conectar a la base de datos. ALTER ROLE secretaria UNENCRYPTED PASSWORD 'octubre';
Dra. en C. Lisbeth Rodrguez Mazahua 5

También podría gustarte