La versión 12.5.3a de Adaptive Server Enterprise (ASE) introdujo una nueva característica que permite la encripción y desencripción de columnas, fortaleciendo así la seguridad y el acceso a los datos almacenados en la base de datos, de tal manera que sólo los usuarios debidamente autorizados tengan acceso a la información.
Este documento brinda una breve descripción de la configuración y uso de la opción de encripción de datos en ASE.
Configuración y Uso
Para utilizar la encripción de datos, siga éstos pasos.
- Instale la licencia ASE_ENCRYPTION.
- Active la opción de configuración 'enable encrypted columns'.
Usando el procedimiento almacenado sp_configure active la opción 'enable encrypted columns'. Por ejemplo:
go
Esta opción es estática, así que usted debe reiniciar ASE para que entre en efecto.
Importante:
Los siguientes pasos se deben llevar a cabo en la base de datos en donde reside la tabla en la que se encriptarán los datos.
|
- Cree una contraseña de encripción del sistema.
Ejemplo:
-- la base de datos 'produccion_db':
use produccion_db
go
sp_encryption system_encr_passwd, control2005
- Cree una llave de encripción.
Usted puede crear llaves diferentes para cada columna que encripte. Las llaves pueden ser compartidas por varias columnas, pero cada columna sólo puede tener una llave.
Usando la opción default en el comando create encryption key, se crea una llave predeterminada para la base de datos, que es usada cuando el calificador encrypt de los comandos create table y alter table se usa sin un nombre de llave (ver el punto 5).
Para ejecutar create encryption key usted debe tener el rol sso_role.
Ejemplo:
create encryption key llave1
as default
for AES with keylength 256
Una vez creada la llave, usted puede usarla para crear columnas encriptadas (con create table o alter table), u otorgar permiso a otros usuarios o roles para crear columnas encriptadas usando ésta llave.
Ejemplo:
-- sobre la llave 'llave1':
grant select on llave1
to db_admin_role
go
- Encripte datos.
- int, smallint, tinyint
- float4 y float8
- decimal y numeric
- char y varchar
- binary y varbinary
Para encriptar columnas de una nueva tabla, use la cláusula encrypt de la sentencia create table. Por ejemplo:
-- Crea una tabla con una columna encriptada.
-- Usa la llave predeterminada de la base de datos.
create table empleados(código char(15) encrypt,
nombres varchar(30), apellidos varchar(30))
go
Si se hubiera querido usar otra llave (diferente a la predeterminada), la cláusula encrypt indica el nombre de la llave. Por ejemplo:
-- Crea una tabla con una columna encriptada.
-- Usa la llave 'llave2':
create table clientes(t_credito char(15) encrypt with llave2,
... )
go
Para encriptar columnas de una tabla existente, use la cláusula encrypt de la sentencia alter table. La cláusula tiene las mismas opciones que para el comando create table. Por ejemplo:
-- Encripta los datos de una columna de una tabla ya existente.
-- Usa la llave 'llave1':
alter table proveedores(codigo char(4) encrypt with llave1,
... )
go
También es posible agregar una columna encriptada a una tabla ya existente. Por ejemplo:
-- Agrega una nueva columna encriptada a una tabla ya existente
-- Usa la llave predeterminada:
alter table cuentas
add saldo numeric(10,0) encrypt
go
En todos los casos, el usuario debe tener permiso sobre la llave de encripción.
- Desencripte datos.
- Permiso de select sobre la columna.
- Permiso de decrypt sobre la columna (introducido en ASE 12.5.3a).
Estos permisos deben ser otorgados al usuario, por el dueño de la tabla, usando el comando grant. Por ejemplo:
-- Otorga permisos de selección y desencripción
-- al usuario 'jperez':
grant select, decrypt
on proveedores(codigo)
to jperez
go
Así mismo, el dueño de la tabla puede revocar los permisos, usando el comando revoke.
Si el usuario no tiene permiso decrypt sobre una columna, verá un mensaje de error como el siguiente, al intentar ver dicha columna:
Server Message: Number 10330, Severity 14
Server 'SYBASE', Line 1:
DECRYPT permission denied on object table_name,
database db_name, owner object_owner
Conclusiones
La encripción de datos introducida en ASE 12.5.3a permite fortalecer la seguridad y el acceso a los datos almacenados en ASE. Para configurar y usar esta opción de ASE se requiere de la licencia ASE_ENCRYPTION.