0% encontró este documento útil (0 votos)
0 vistas8 páginas

Ensayo_Control_Acceso_Concurrencia_Ampliado

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1/ 8

Introducción

El manejo adecuado de la seguridad y el acceso, así como la concurrencia, son


pilares fundamentales en el diseño y operación de sistemas de bases de datos.
Estos aspectos permiten garantizar la integridad, confidencialidad y
disponibilidad de la información, especialmente en entornos donde múltiples
usuarios interactúan de manera simultánea. En este ensayo, se explorarán los
elementos clave del control de acceso, incluyendo la gestión de usuarios,
privilegios y roles, y se abordarán los conceptos y propiedades relacionadas con
la concurrencia, como las transacciones, los niveles de consistencia y las
técnicas de manejo de errores mediante commit y rollback.
3. Control de Acceso

3.1 Tipos de Usuario


Un usuario es un nombre de acceso a la base de datos. Normalmente va
asociado a una clave (password). Una cuenta en una BD puede estar ligada con
una cuenta de sistema operativo. Los passwords son fijados cuando se crea un
usuario y pueden ser alterados por el DBA o por el usuario mismo. La BD
almacena una versión encriptada del password en una tabla del diccionario
llamada dba_users.

Si la cuenta en la BD está asociada a una cuenta del sistema operativo puede


evitarse la comprobación del password, dándose por válida la comprobación de
la identidad del usuario realizada por el SO.

3.2 Creación de Usuarios


Para la creación de un usuario se tiene la sentencia estándar:
CREATE USER user_name IDENTIFIED BY ‘password’ [OPTIONS]

Para modificar un usuario se utiliza la sentencia:


ALTER USER user_name [OPTIONS]

Para borrar a un usuario se utiliza la sentencia:


DROP USER user_name [CASCADE]

Para ver todos los usuarios se utiliza la sentencia:


DESCRIBE DBA_USERS;
SELECT USERNAME FROM ALL_USERS;

Ejemplo:
Crear usuario:
CREATE USER usuarioLimitado IDENTIFIED BY miClaveSecreta;

Donde options puede incluir:


- DEFAULT TABLESPACE tablespace
- TEMPORARY TABLESPACE tablespace
- QUOTA int {K | M} ON tablespace
- QUOTA UNLIMITED ON tablespace
- PROFILE profile_name
- PASSWORD EXPIRE
- ACCOUNT {LOCK|UNLOCK}

3.3 Privilegios a Usuarios


Un privilegio es un derecho para ejecutar un tipo particular de sentencia o para
acceder a un objeto de otro usuario. Una vez creados los usuarios será
necesario dotarlos de privilegios para que puedan realizar operaciones
específicas en la base de datos. Estos privilegios suelen clasificarse en:

- Privilegios del Sistema (System privileges): Permisos a niveles de la base de


datos como conexión a la base de datos, creación de usuarios, y limitar cuentas.
- Privilegios sobre Objetos (Object privileges): Operaciones sobre vistas, tablas,
secuencias, procedimientos y paquetes.

Para otorgar privilegios utilizamos la sentencia GRANT, y para quitar un


privilegio o permiso a un usuario utilizamos la sentencia REVOKE.

3.4 Roles
Un rol es una colección de privilegios del sistema y de objetos que se otorgan a
usuarios y a otras tareas. Gracias a los roles se facilita la asignación de
privilegios a los usuarios. Un usuario puede tener asignados varios roles y
viceversa.

Un sistema de roles y usuarios puede definirse como la clasificación de


privilegios de operación en nuestro sistema. Para entenderlo mejor, podemos
enumerar y explicar los siguientes conceptos:

- Usuarios: Son los que interactúan con nuestro sistema y deben ser controlados
para validar qué pueden o no hacer.
- Perfiles: Son los roles que se le asignan o niegan a un usuario para conceder
privilegios en el sistema.
- Recursos: Son las áreas o zonas de la aplicación que permiten operaciones
como crear usuario, listar notas, eliminar notas, etc.
- Permisos: Son las acciones concretas asignadas sobre uno o más recursos del
Sistema
4. Concurrencia

4.1 Conceptos
No se puede hablar de concurrencia en bases de datos sin el uso de las
transacciones. Estas se ejecutan serialmente, una después de la otra, sin
ninguna intercalación. Informalmente, una transacción es la ejecución de ciertas
instrucciones que acceden a una base de datos compartida. Se llama
transacción a una colección de operaciones que forman una unidad lógica de
trabajo en una base de datos realizada por una o más sentencias SQL
estrechamente relacionadas.

4.2 Propiedades de las Transacciones


Una unidad lógica de trabajo debe exhibir cuatro propiedades, conocidas como
propiedades ACID (atomicidad, coherencia, aislamiento y durabilidad), para ser
calificada como transacción:

- Atomicidad: Permite operaciones atómicas; todas deben ejecutarse


correctamente, o ninguna debe tener efecto si alguna falla.
- Coherencia: Garantiza que la base de datos pase de un estado válido a otro,
respetando reglas como claves únicas y valores obligatorios.
- Aislamiento: Los efectos de una transacción no son visibles a otros usuarios
hasta que se confirmen.
- Durabilidad: Una vez confirmada, los cambios realizados por una transacción
persisten incluso ante fallos.

4.3 Grados de Consistencia


La consistencia se refiere a la coherencia entre todos los datos de la base de
datos. Una transacción finalizada debe llevar a la base de datos a un estado
consistente. Si se confirma definitivamente, los cambios permanecen; si se
anula, los cambios se deshacen. Los estados de una transacción incluyen
activa, parcialmente comprometida, fallida, abortada y comprometida.

4.4 Niveles de Aislamiento


Las transacciones especifican un nivel de aislamiento que define el grado de
interacción con modificaciones realizadas por otras transacciones. Los niveles
estándar incluyen:

- Lectura sucia: Lecturas no consistentes, ya que acceden a datos no


confirmados.
- Lectura no repetible: Una transacción encuentra datos modificados por otras
transacciones concurrentes.
- Lectura fantasma: Nuevas filas aparecen tras ejecutar la misma consulta.

El estándar SQL define cuatro niveles de aislamiento: Read Uncommitted, Read


Committed, Repeatable Read y Serializable.

4.5 Commit y Rollback


Una transacción en bases de datos consta de una o más instrucciones.
Comienza con la primera sentencia SQL ejecutable y termina cuando se emite
un COMMIT o ROLLBACK. Estos comandos determinan si los cambios
realizados por la transacción se hacen permanentes (COMMIT) o se deshacen
(ROLLBACK). También pueden usarse puntos de restauración (*savepoints*)
para manejar errores de manera más granular.

3.5 Mecanismos de Seguridad Avanzados

La autenticación multifactor (MFA) es un método ampliamente adoptado para fortalecer la


seguridad de los sistemas de bases de datos. Consiste en la combinación de varios factores
de autenticación, como contraseñas, dispositivos móviles y biometría. Adicionalmente, la
implementación de políticas de seguridad basadas en direcciones IP permite restringir el
acceso según la ubicación geográfica.

Sistemas como Azure Active Directory y Okta permiten integrar la gestión de identidades
con las bases de datos, asegurando que los usuarios cuenten con permisos adecuados.

3.6 Auditoría y Supervisión

La auditoría es un aspecto clave para garantizar la seguridad y el cumplimiento normativo


en sistemas de bases de datos. Las herramientas como Splunk o ELK Stack facilitan la
supervisión de intentos de acceso, cambios en datos críticos y la detección de anomalías en
tiempo real.

3.7 Consideraciones Legales

Normativas como el Reglamento General de Protección de Datos (GDPR) y la Ley de


Privacidad del Consumidor de California (CCPA) exigen a las organizaciones asegurar la
confidencialidad de los datos personales. Esto incluye mantener registros detallados de
accesos y garantizar que los usuarios solo accedan a datos estrictamente necesarios.
4.6 Técnicas Avanzadas para el Manejo de Concurrencia

El manejo de bloqueos (Locks) es esencial para garantizar la consistencia en sistemas de


bases de datos. Existen varios niveles de bloqueos:
- Bloqueo a nivel de fila: Permite mayor concurrencia, ya que afecta únicamente a las filas
específicas.
- Bloqueo a nivel de tabla: Es menos granular y puede reducir el rendimiento en entornos
altamente concurrentes.
- Bloqueo a nivel de páginas de memoria: Ofrece un equilibrio entre granularidad y
eficiencia.

Los algoritmos distribuidos como Raft y Paxos son utilizados en bases de datos distribuidas
para garantizar consistencia y tolerancia a fallos.

4.7 Impacto del Control de Concurrencia en el Rendimiento

Los niveles de aislamiento influyen directamente en el rendimiento de una base de datos.


Por ejemplo:
- "Read Uncommitted" ofrece mayor rendimiento pero puede introducir inconsistencias.
- "Serializable" es el nivel más seguro, pero puede generar bloqueos más frecuentes.

Las optimizaciones mediante índices adecuados y consultas optimizadas también pueden


mitigar los impactos negativos de la concurrencia.

5. Seguridad en Bases de Datos en la Nube

Con la migración de muchas empresas a la nube, los sistemas de bases de datos gestionados
como AWS RDS, Google Cloud SQL y Azure SQL han ganado popularidad. Estos servicios
ofrecen características avanzadas de seguridad como cifrado en reposo y en tránsito,
gestión automatizada de parches y recuperación ante desastres.

Sin embargo, las organizaciones deben implementar controles adicionales, como acceso
restringido mediante VPNs o firewalls y una adecuada configuración de roles y permisos.

6. Conclusión

El control de acceso y la concurrencia son pilares esenciales en el diseño de bases de datos


modernas. Un manejo adecuado no solo garantiza la seguridad de la información, sino que
también asegura un rendimiento eficiente en entornos de múltiples usuarios.

A medida que las tecnologías avanzan, herramientas como la inteligencia artificial y el


aprendizaje automático jugarán un papel importante en la automatización de estas tareas,
detectando patrones anómalos y optimizando la configuración del sistema en tiempo real.
Las organizaciones deben mantenerse al día con las tendencias y adoptar prácticas robustas
para proteger su información y mejorar la experiencia de los usuarios.

También podría gustarte