miércoles, 19 de noviembre de 2014

Seguridad en DB2

La seguridad de bases de datos es de extrema importancia actualmente. Las bases de datos en una empresa pueden permitir a los clientes comprar productos en Internet, o puede contener datos históricos usados para predecir tendencias de negocios; en cualquier caso, las compañías necesitan un plan de seguridad sólido para su base de datos.

Un plan de seguridad para base de datos debe definir:

  • Quién tiene permitido el acceso a la instancia y/o base de datos
  • Dónde y cómo se verificará la contraseña de un usuario
  • El nivel de autoridad que se concede a un usuario
  • Los comandos que tiene permitido ejecutar un usuario
  • Los datos que un usuario tiene permitido leer y/o alterar
  • Los objetos de base de datos que un usuario tiene permitido crear, alterar y/o descartar
DB2
El DB2 es un Gestor de Bases de Datos Relacionales. Es un sistema para administración de Bases de Datos Relacionales. Es multiplataforma, especialmente diseñada para ambientes distribuidos, permitiendo que los usuarios locales compartan información con los recursos centrales. Es el sistema de gestión de datos que entrega una plataforma de base de datos flexible y rentable para construir un sistema robusto para aplicaciones de gestión. 

Las tablas son el núcleo principal de una base de datos de DB2. Sin embargo, una base de datos deDB2 implica algo más que una colección de tablas; una base de datos de DB2 también implica otros objetos como, por ejemplo, vistas e índices, y contenedores de datos más grandes como, por ejemplo, espacios de tablas. 

La automatización es una de sus características más importantes, ya que permite eliminar tareas rutinarias y permitiendo que el almacenamiento de datos sea más ligero, utilizando menos hardware y reduciendo las necesidades de consumo de alimentación y servidores. 

La memoria se ajusta y se optimiza el rendimiento del sistema, con un interesante sistema que permite resolver problemas de forma automática e incluso adelantarse a su aparición, configurando automáticamente el sistema y gestión de los valores. 

DB2 para Linux, UNIX y Windows permite la automatización de tareas, reducción de las necesidades de consumo de alimentación, un alto rendimiento que reduce los servidores necesarios para ejecutar la base de datos, escalabilidad sencilla y alta disponibilidad en su arquitectura de discos de datos y otras soluciones que facilitan la colaboración entre profesionales.

El DB2 cuenta con las siguientes características:
  • Integridad: El DB2 incluye características de Integridad, asegurando la protección de los datos aún en caso de que los sistemas sufran un colapso, y de Seguridad permitiendo realizar respaldos en línea con distintos grados de granularidad, sin que esto afecte la disponibilidad de acceso a los datos por parte de los usuarios.
  • Múltiples usos: Provee la capacidad de hacer frente a múltiples necesidades, desde Procesamiento Transaccional de Misión Crítica (OLTP), hasta análisis exhaustivo de los datos para el soporte a la toma de decisiones (OLAP).
  • Escalabilidad: Sus características distintivas de Escalabilidad le permiten almacenar información en un amplio rango de equipos, desde un PC portátil hasta un complejo ambiente de mainframes procesando en paralelo.
  • Universalidad: DB2 es la única base de datos realmente universal; es multiplataforma (16 plataformas - de las cuales 10 no son de IBM), brinda soporte a un amplio rango de clientes, soporta el acceso de los datos desde Internet y permite almacenar todo tipo de datos:
  • Texto, Audio, Imágenes y Video
  • Documentos XML
Mecanismos de seguridad DB2

Existen tres mecanismos principales dentro de DB2 que permiten a un DBA implementar un plan de seguridad de base de datos: autenticación, autoridad y privilegios.

La Autenticación en DB2

La autenticación es el primer recurso de seguridad que se encuentra cuando se intenta acceder a una instancia o base de datos DB2. La autenticación DB2 funciona muy de cerca con los recursos de seguridad del sistema operativo subyacente para verificar los ID y contraseñas de usuario. DB2 también puede trabajar con protocolos de seguridad como Kerberos para autenticar usuarios.

La autenticación DB2 controla los siguientes aspectos del plan de seguridad de base de datos:
  • Quién tiene permitido el acceso a la instancia y/o base de datos
  • Dónde y cómo se verificará la contraseña de un usuario
Esto lo hace con la ayuda de los recursos de seguridad del sistema operativo subyacente cada vez que se emite un comando attach o connect . Los comandos attach se usan para conectar la instancia DB2, mientras que los comandos connect se usan para conectarse a una base de datos dentro de una instancia DB2.

Tipos de autenticación DB2

Los tipos de autenticación son usados por DB2 para determinar dónde tendrá lugar la autenticación. DB2 tiene la capacidad para especificar diferentes mecanismos de autenticación dependiendo de si el usuario está intentando conectarse con la base de datos o efectuar acoples de instancia y operaciones de nivel de instancia. De forma predeterminada, la instancia se configura para que use un tipo de autenticación para todas las solicitudes de nivel de instancia y de nivel de conexión

Autenticación KERBEROS: La autenticación Kerberos proporciona a DB2 una forma para autenticar usuarios sin tener que hacer pasar ID ni contraseñas de usuario sobre la red. El protocolo de seguridad Kerberos lleva a cabo autenticación como un servicio de autenticación externo, usando criptografía convencional para crear una clave secreta compartida. Esta clave se convierte en la credencial del usuario y se utiliza para verificar la identidad de los usuarios durante todas las veces que se soliciten servicios de red o locales. El uso del protocolo de seguridad Kerberos permite el uso de inicio único de sesión para un servidor remoto de base de datos DB2.

Autenticación SERVER: La autenticación se lleva a cabo en el servidor.

Autenticación SERVER_ENCRYPT: La autenticación se lleva a cabo en el servidor. Las contraseñas son cifradas en la máquina cliente antes de ser enviadas al servidor.

Autenticación CLIENT: La autenticación se lleva a cabo en la máquina cliente

Autenticación KERBEROS: La autenticación es llevada a cabo por el software de seguridad Kerberos.

Autenticación KRB_SERVER_ENCRYPT: La autenticación es llevada a cabo por el software de seguridad Kerberos si la configuración de cliente es KERBEROS. En caso contrario, se utiliza SERVER_ENCRYPT.

Autenticación DATA_ENCRYPT: La autenticación se lleva a cabo en el servidor. El servidor acepta el ID y las contraseñas cifradas del usuario y descifra los datos. Esto funciona de la misma forma que SERVER_ENCRYPT, excepto que los datos también son cifrados.

Autenticación DATA_ENCRYPT_CMP: La autenticación es la misma que para DATA_ENCRYPT, excepto que este esquema permite que clientes antiguos que el esquema DATA_ENCRYPT no permite, se conecten usando autenticación SERVER_ENCRYPT. En este caso los datos no serán cifrados. Si el cliente que se está conectando soporta DATA_ENCRYPT, es forzado a cifrar los datos y no puede pasarse a autenticación SERVER_ENCRYPT. Esta autenticación solo es válida en el archivo de configuración de gestor de base de datos del servidor y no es válido cuando se usa con el comando CATALOG DATABASE en una instancia de cliente o de gateway.

Autenticación GSSPLUGIN: La autenticación es controlada por un plug-in GSS-API externo.

Autenticación GSS_SERVER_ENCRYPT: La autenticación es controlada por un plug-in GSS-API externo. en el caso que el cliente no soporte alguno de los plug-in GSS-API del servidor, se utiliza autenticación SERVER_ENCRYPT.

Autoridades DB2

La autoridad involucra determinar las operaciones que los usuarios y/o grupos pueden efectuar y los objetos de datos a los que pueden acceder. La capacidad de un usuario para efectuar operaciones de alto nivel de administración de base de datos y de instancia, está determinada por las autoridades que se le hayan asignado. Existen cinco niveles de seguridad diferentes dentro de DB2 que son: SYSADM, SYSCTRL, SYSMAINT, DBADM y LOAD. La autorización es una parte importante del control de DB2. Los mecanismos de seguridad y autorización que controlan el acceso a datos de DB2 son directos e indirectos.

DB2 realiza comprobaciones de seguridad directas de los ID de usuario y las contraseñas antes de permitir que los usuarios obtengan acceso mediante el DDF. En todos los demás recursos de conexión, es necesario que el usuario se autentique con un DDF antes de conectar a DB2. Los mecanismos de seguridad de DB2 incluyen objetos específicos, privilegios sobre estos objetos y algunos privilegios que proporcionan una autorización más amplia. DB2 también controla indirectamente el acceso a datos mediante comprobaciones de autorización durante el tiempo de vinculación y el tiempo de ejecución para planes y paquetes de aplicaciones.

Por ejemplo, debe tener autorización para ejecutar sentencias de SQL que creen y modifiquen objetos deDB2. Incluso cuando los usuarios ejecutan una sentencia SELECT para consultar la información de una tabla, su autorización puede limitar lo que ven. El usuario puede ver únicamente los datos de un subconjunto de columnas definidas en una vista. Las vistas proporcionan una gran variedad de controles de seguridad.

Antes de emitir mandatos de DB2, ejecutar programas de utilidad, ejecutar paquetes y planes de aplicaciones o utilizar la mayoría de las demás funciones de DB2, necesita tener la autorización o el privilegio adecuados. Por ejemplo, para realizar cambios en una tabla necesita tener autorización para acceder a dicha tabla. Un privilegio permite una acción sobre un objeto. Por ejemplo, para insertar datos en una tabla se necesita el privilegio para insertar datos.

Las sentencias GRANT y REVOKE proporcionan control de acceso para objetos de DB2. Se pueden otorgar privilegios y autorizaciones a los ID de autorización y roles en numerosas combinaciones y también se pueden revocar.

Se puede utilizar el componente RACF o un producto equivalente para controlar el acceso a objetos de DB2. Esta es la mejor opción si desea que el administrador de seguridad de z/OS gestione el acceso a los datos en lugar del administrador de base de datos.

Las autoridades DB2 controlan los siguientes aspectos del plan de seguridad de base de datos:
  • El nivel de autoridad que se le concede a un usuario
  • Los comandos que tiene permitido ejecutar un usuario
  • Los datos que un usuario tiene permitido leer y/o alterar
  • Los objetos de base de datos que un usuario tiene permitido crear, alterar y/o descartar
Las autoridades están compuestas por grupos de privilegios y de operaciones de alto nivel, de mantenimiento y herramientas de gestor de base de datos (nivel de instancia). De las cinco autoridades disponibles en DB2, SYSADM, SYSCTRL, SYSMAINT, y SYSMON son autoridades de nivel de instancia. Eso significa que su alcance incluye comandos de nivel de instancia, así como comandos contra todas las bases de datos dentro de la instancia. Las autoridades DBADM, LOAD y SECADM se asignan a grupos o usuarios para bases de datos particulares.

Tipos de autoridades DB2

Autoridad SYSADM: La autoridad SYSADM en DB2 es comparable a la autoridad raíz UNIX o a la autoridad de Administrador en Windows. Los usuarios con autoridad SYSADM para una instancia DB2 pueden ejecutar cualquier comando DB2 contra esa instancia, cualquier base de datos dentro de la instancia y cualquier objeto dentro de esas bases de datos. Estos también tienen la capacidad para acceder a datos dentro de la base de datos y a conceder o revocar privilegios y autoridades. Los usuarios SYSADM son los únicos usuarios a los que se les permite actualizar el archivo DBM CFG, por lo que también son los únicos que tienen permitido conceder cualquiera de las autoridad SYS* a otros grupos.

Autoridad SYSCTRL: Los usuarios con autoridad SYSCTRL pueden ejecutar todos los comandos administrativos y de mantenimiento dentro de la instancia. No obstante, a diferencia de los usuarios SYSADM, estos no pueden acceder a ningún dato de las bases de datos, a menos que se les concedan los privilegios para hacerlo.

Autoridad SYSMAINT: Los comandos que puede ejecutar un usuario con la autoridad SYSMAINT son un subconjunto de los permitidos a los usuarios con la autoridad SYSCTRL. Los usuarios con SYSMAINT no pueden crear ni descartar bases de datos ni espacios de tabla. Tampoco pueden acceder a ningún dato de las bases de datos, a menos que se les concedan los privilegios para hacerlo.

Autoridad SYSMON: La autoridad SYSMON proporciona la capacidad para tomar capturas instantáneas de supervisión de sistema de base de datos, de una instancia de gestor de base de datos o de sus bases de datos. La autoridad SYSMON está asignada al grupo especificado por el parámetro de configuración sysmon_group . Si se especifica un grupo, la membrecía a ese grupo es controlada por fuera del gestor de base de datos mediante el recurso de seguridad usado por su plataforma. 

Autoridad DBADM: La autoridad DBADM es una autoridad de nivel de base de datos más que una autoridad de nivel de instancia. Resumiendo, los usuarios DBADM tienen control total sobre una base de datos. A los usuarios DBADM también se les conceden automáticamente todos los privilegios para los objetos de base de datos y sus contenidos. Como la autoridad DBADM es una autoridad de nivel de base de datos, puede asignarse tanto a usuarios como a grupos.

Autoridad LOAD: La autoridad LOAD también se considera una autoridad de nivel de base de datos y por lo tanto puede concederse a usuarios y a grupos. Como su nombre lo indica, la autoridad LOAD autoriza a los usuarios a emitir el comando LOAD contra una tabla. El comando LOAD se utiliza normalmente como una alternativa más rápida que los comandos INSERT o IMPORT cuando se está llenando una tabla con grandes cantidades de datos. Dependiendo del tipo de LOAD que desee ejecutar, tener solo la autoridad LOAD no es suficiente. También pueden llegar a requerirse privilegios específicos sobre la tabla.

Autoridad SECADM: La autoridad SECADM es considerada una autoridad de nivel de base de datos, pero solo puede ser concedida a un usuario específico por un usuario SYSADM. Un usuario con SECADM puede hacer lo siguiente:
  • Crear y descartar componentes de etiqueta de seguridad 
  • Crear y descartar políticas de seguridad 
  • Crear y descartar etiquetas de seguridad 
  • Conceder y revocar etiquetas de seguridad 
  • Conceder y revocar exenciones de reglas LBAC 
  • Conceder y revocar privilegios setsessionuser 
  • Ejecutar el enunciado SQL TRANSFER OWNERSHIP sobre objetos que usted no posee 

Privilegios DB2

Los privilegios son un poco más granulares que las autoridades, y pueden asignarse a usuarios y/o grupos. Los privilegios ayudan a definir los objetos que un usuario puede crear o descartar. Estos también definen los comandos que un usuario puede usar para acceder a objetos como tablas, vistas índices y paquetes. En el DB2 es nuevo el concepto de control de acceso basado en etiquetas (LBAC), el cual permite un control más granular sobre quién puede acceder a filas y/o columnas individuales. Los privilegios se pueden ubicar generalmente en dos categorías principales: privilegios de nivel de base de datos, los cuales abarcan todos los objetos de una base de datos, y privilegios de nivel de objeto los cuales están asociados a un objeto específico.

Los privilegios de nivel de base de datos que se le pueden otorgar a un usuario son:
  • CREATETAB: Los usuarios pueden crear tablas dentro de una base de datos.
  • BINDADD: Los usuarios pueden crear paquetes en la base de datos usando el comando BIND.
  • CONNECT: Los usuarios pueden conectarse a la base de datos.
  • CREATE_NOT_FENCED: Los usuarios pueden crear funciones unfenced definidas por usuario (UDF).
  • IMPLICIT_SCHEMA: Los usuarios pueden crear esquemas de forma implícita dentro de la base de datos, sin usar el comando CREATE SCHEMA.
  • LOAD: los usuarios pueden cargar datos a una base de datos
  • QUIESCE_CONNECT: Los usuarios pueden acceder a una base de datos mientras esté en su estado de desactivación temporal.
  • CREATE_EXTERNAL_ROUTINE: Los usuarios pueden crear un procedimiento para que sea usado por aplicaciones y por otros usuarios de la base de datos.
Los objetos de base de datos incluyen tablas, vistas, índices, esquemas y paquetes. Afortunadamente, la mayoría de privilegios de nivel de objeto se explican por sí mismos. La siguiente tabla resume estos privilegios.

Nombre del privilegio
Objetos relevantes
Descripción
CONTROL
Tabla, Vista, Índices, Paquetes, Alias, Tipo Distintivo, Función definida por usuario, Secuencia
Proporciona autoridad completa sobre el objeto. Los usuarios con este privilegio también pueden conceder o revocar privilegios sobre el objeto para otros usuarios.
DELETE
Tabla, Vista
Permite a los usuarios eliminar registros del objeto.
INSERT
Tabla, Vista
Permite a los usuarios insertar registros en el objeto mediante los comandos INSERT e IMPORT.
SELECT
Tabla, Vista
Proporciona a los usuarios la capacidad de ver el contenido del objeto usando el enunciado select.
UPDATE
Tabla, Vista
Permite a los usuarios modificar registros dentro de un objeto usando el enunciado update.
ALTER
Tabla
Permite a los usuarios alterar la definición del objeto usando el enunciado alter.
INDEX
Tabla
Permite a los usuarios crear índices sobre el objeto usando el enunciado index.
REFERENCES
Tabla
Proporciona a los usuarios la capacidad para crear y descartar restricción de claves foráneas sobre el objeto.
BIND
Paquete
Permite a los usuarios volver a vincular paquetes.
EXECUTE
Paquete, Procedimiento, Función, Método
Permite a los usuarios ejecutar paquetes y rutinas.
ALTERIN
Esquema
Permite a los usuarios modificar definiciones de objetos dentro del esquema.
CREATEIN
Esquema
Permite a los usuarios crear objetos dentro del esquema.
DROPIN
Esquema
Permite a los usuarios descartar objetos del esquema.

Cómo controlan el acceso a datos los ID de autorización

Uno de los modos en que DB2 controla el acceso a datos es mediante la utilización de identificadores. Un conjunto de uno o más identificadores de DB2, denominados ID de autorización, representa cada proceso que se conecta o inicia una sesión en DB2.

Los ID de autorización se clasifican en tres tipos:

ID de autorización primario: Como resultado de asignar ID de autorización, cada proceso tiene exactamente un ID que se denomina ID de autorización primario. Generalmente, el ID de autorización primario identifica un proceso.

ID de autorización secundario: Todos los demás ID son los ID de autorización secundarios. Un ID de autorización secundario, que es opcional, puede tener privilegios adicionales disponibles para el proceso.

CURRENT SQLID: Se designa un ID (primario o secundario) como CURRENT SQLID. CURRENT SQLID tiene los privilegios que se ejercen cuando se ejecutan determinadas sentencias de SQL dinámico. Se puede establecer CURRENT SQLID en el ID primario o en cualquiera de los ID secundarios.

Cómo mantienen privilegios y autorizaciones los ID de autorización

DB2 controla el acceso a sus objetos utilizando un conjunto de privilegios. Cada privilegio permite una acción sobre un objeto. Los ID pueden mantener privilegios que les permitan realizar determinadas acciones o que les prohíban realizarlas. Los privilegios de DB2 proporcionan un control extremadamente preciso.

Privilegios relacionados: DB2 define los conjuntos de privilegios relacionados, denominados autorizaciones administrativas. Al otorgar una autorización administrativa a un ID, se otorgan todos los privilegios asociados con ésta, en una sentencia.

Privilegios de objeto: La propiedad de un objeto conlleva un conjunto de privilegios relacionados sobre el objeto. Un ID puede ser el propietario de un objeto que crea o puede crear un objeto que pertenecerá a otro ID. La creación y propiedad de los objetos se controlan de forma separada.

Privilegios de paquete y plan de aplicación: El privilegio para ejecutar un plan de aplicación o un paquete requiere atención especial. La ejecución de un plan o un paquete ejerce implícitamente todos los privilegios que el propietario del plan o paquete ha necesitado para vincularlo. Por lo tanto, el otorgamiento del privilegio para ejecutar puede proporcionar un conjunto detallado de privilegios y puede eliminar la necesidad de otorgar otros privilegios por separado.

Etiquetas de seguridad: La seguridad de varios niveles limita el acceso a un objeto o a una fila basándose en la etiqueta de seguridad del objeto o fila y en la etiqueta de seguridad del usuario.

Roles: Un rol es una entidad de base de datos que agrupa uno o más privilegios. Un rol sólo está disponible cuando el proceso se ejecuta en un contexto fiable. Un contexto fiable es una entidad de base de datos basada en un ID de autorización del sistema y en un conjunto de atributos de fiabilidad de conexión.

Modos de controlar el acceso a subsistemas DB2

DB2 para z/OS realiza comprobaciones de seguridad para autenticar a los usuarios antes de otorgarles acceso a datos de DB2. Existen varios mecanismos de autenticación soportados por peticionarios de DB2 y aceptados por servidores de DB2.

La autenticación se produce cuando la sentencia CONNECT se emite para conectar el proceso de aplicaciones al servidor designado. El servidor o el subsistema DB2 local comprueba el ID de autorización y la contraseña para verificar que el usuario tiene autorización para conectarse al servidor. Se puede utilizar RACF o z/OS Security Server para autenticar los usuarios que acceden a una base de datos de DB2.

Acceso local a DB2

Un usuario de DB2 local está sujeto a varias comprobaciones de seguridad.

Por ejemplo, cuando DB2 se ejecuta bajo TSO y utiliza el ID de inicio de sesión de TSO como ID de autorización primario de DB2, dicho ID se verifica con una contraseña cuando el usuario inicia la sesión. Cuando el servidor es el subsistema DB2 local, RACF verifica la contraseña y comprueba si el ID de autorización tiene permiso para utilizar los recursos de DB2 definidos para RACF. Si se define una rutina de salida, RACF o z/OS Security Server realizan comprobación de seguridad adicional

Acceso remoto a DB2

Cuando el servidor no es el subsistema DB2 local se realizan varias comprobaciones de seguridad.
  • El gestor de seguridad local del servidor verifica el ID y la contraseña de autorización primaria de DB2. Una verificación posterior determina si el ID de autorización tiene permiso para acceder a DB2.
  • Las opciones de seguridad para los protocolos SNA o TCP/IP se comprueban en la base de datos de comunicaciones (CDB).
DDF da soporte a los protocolos de comunicaciones TCP/IP y SNA en un entorno distribuido. Como peticionario o servidor, DB2 elige cómo enviar o aceptar mecanismos de autenticación, basándose en el protocolo de red que se utiliza. DB2 utiliza mecanismos de seguridad de SNA para conexiones de red SNA y mecanismos de seguridad de DRDA para conexiones de red TCP/IP o Kerberos.

Las opciones de seguridad de DRDA proporcionan el siguiente soporte para cifrar datos sensibles:
  • Los servidores de DB2 para z/OS pueden proporcionar cifrado y descifrado de datos de alta velocidad seguros.
  • Los peticionarios de DB2 para z/OS disponen de la opción de cifrar sus ID de usuario y contraseñas cuando se conectan a servidores remotos. Los peticionarios también pueden cifrar datos sensibles de seguridad cuando se comunican con servidores de modo que los datos estén seguros cuando se transmiten por la red.
Se puede utilizar RACF o un subsistema de seguridad similar para realizar autenticación. RACF puede:
  • Verificar un ID de autorización remoto asociado a una conexión mediante la comprobación del ID con su contraseña.
  • Verificar si el ID de autorización tiene permiso para acceder a DB2 a través de una conexión remota.
  • Verificar si el ID de autorización tiene permiso para acceder a DB2 desde un sitio remoto específico.
  • Generar pases, una alternativa a las contraseñas, en el lado transmisor. Un pase permite a los usuarios acceder a un sistema principal sin enviar la contraseña de RACF a través de la red.
Modos de controlar el acceso a los datos

DB2 permite controlar el acceso a datos. El acceso a los datos incluye un usuario que participa en una sesión de terminal interactiva. Por ejemplo, el acceso puede ser desde un servidor remoto, desde una transacción IMS o CICS o desde un programa que se ejecuta en modalidad por lotes.

Esta información describe los diferentes métodos del control de acceso a datos en DB2. En esta información, el término proceso se utiliza para representar todos los modos de acceder a datos. 

La figura siguiente sugiere varias rutas desde un proceso hasta datos de DB2, con controles en cada ruta.

Control de acceso a datos de DB2




El primer método, control de acceso dentro de DB2, utiliza identificadores (ID) para controlar el acceso a objetos de DB2. En primer lugar el proceso debe cumplir los requisitos de seguridad para acceder al subsistema DB2. Cuando el proceso está dentro del subsistema DB2, DB2 comprueba varios ID para determinar si el proceso puede acceder a objetos de DB2. Se describen estos ID (ID de autorización primario, ID de autorización secundario e ID de SQL). Si el proceso tiene el ID o los ID necesarios, puede acceder a los objetos de DB2, incluyendo datos DB2.

El segundo método, protección de conjunto de datos, no se controla desde dentro de DB2. Se aplica la protección de conjunto de datos al proceso fuera de DB2. Si el proceso satisface los criterios de protección, llega a los datos de DB2.

Modos de controlar el acceso a objetos de DB2 mediante autorizaciones y privilegios explícitos

Puede controlar el acceso a los datos de usuario de DB2 otorgando, no otorgando o revocando autorizaciones y privilegios explícitos. Un privilegio explícito es un privilegio con nombre que se otorga con la sentencia GRANT o se revoca con la sentencia REVOKE. Una autorización administrativa es un conjunto de privilegios, que a menudo incluye un conjunto de objetos relacionado. Las autorizaciones incluyen con frecuencia privilegios que no son explícitos, no tienen nombre y no se pueden otorgar individualmente como, por ejemplo, la capacidad de terminar un trabajo de programa de utilidad.

Privilegios explícitos

Los privilegios explícitos proporcionan un control detallado. Por ejemplo, suponga que un usuario necesita seleccionar, insertar y actualizar datos de una tabla. Para completar estas acciones, el usuario debe seleccionar los privilegios SELECT, INSERT y UPDATE en la tabla.

Existen privilegios explícitos disponibles para los objetos siguientes:
  • Agrupaciones de almacenamientos intermedios
  • Colecciones
  • Bases de datos
  • Tipos diferenciados
  • JAR (Java Archive, con formato de archivo para agregar muchos archivos en un archivo)
  • Paquetes
  • Planes
  • Rutinas (funciones y procedimientos)
  • Esquemas
  • Secuencias
  • Grupos de almacenamiento
  • Sistema
  • Tablas
  • Espacios de tablas
  • Vistas

Autorizaciones administrativas

Los privilegios se agrupan en autorizaciones administrativas. Estas autorizaciones forman una jerarquía. Cada autorización incluye un grupo específico de privilegios. Las autorizaciones administrativas se clasifican en las categorías de autorizaciones del sistema, de base de datos y de colección. La autorización administrativa de más alto nivel es SYSADM. Cada nivel de autorización incluye los privilegios de todas las autorizaciones de nivel más bajo.

SYSADM: La autorización de administración del sistema incluye todos los privilegios de DB2 (salvo unos pocos reservados para instalación), los cuales se pueden otorgar todos a otros. Se Puede limitar la capacidad de SYSADM de gestionar el acceso a los roles. También puede limitar la capacidad de SYSADM de otorgar o revocar autorizaciones y privilegios.

SYSCTRL: La autorización de control del sistema incluye la mayoría de los privilegios SYSADM, pero excluye los privilegios para leer o modificar datos del usuario. 

SYSOPR: La autorización de operador del sistema incluye los privilegios para emitir la mayoría de los mandatos de DB2 y terminar cualquier trabajo de programa de utilidad. 

DBADM: La autorización de administración de base de datos incluye los privilegios para controlar una base de datos específica. Los usuarios con autorización DBADM pueden acceder a tablas y modificar o descartar espacios de tablas, tablas o índices de la base de datos. 

DBCTRL: La autorización de control de base de datos incluye los privilegios para controlar una base de datos específica y ejecutar programas de utilidad que pueden modificar datos de dicha base de datos. 

DBMAINT: La autorización de mantenimiento de base de datos incluye los privilegios para trabajar con determinados objetos y emitir determinados programas de utilidad y mandatos en una base de datos específica. 

ACCESSCTRL: La autorización de control de acceso permite a SECADM delegar la capacidad de otorgar y revocar privilegios de objetos y la mayoría de las autorizaciones administrativas. 

DATAACCESS: La autorización de acceso a datos controla el acceso de DBA a datos de usuario en DB2. 

EXPLAIN: La autorización EXPLAIN permite a un usuario emitir sentencias EXPLAIN, PREPARE y DESCRIBE sin que se requiera el privilegio para ejecutar la sentencia. 

PACKADM: La autorización de administrador de paquetes proporciona acceso a colecciones determinadas. 

SECADM: La autorización de administrador de seguridad permite a un usuario gestionar el acceso a una tabla en DB2, pero no puede crear, modificar ni descartar una tabla. 

SQLADM: La autorización de administrador de SQL proporciona la capacidad de supervisar y ajustar el SQL sin privilegios adicionales.


Control de acceso de nivel de fila y de nivel de columna

Se Puede utilizar el control de acceso de nivel de fila y de nivel de columna para restringir el acceso a ciertos tipos de información que exigen seguridad adicional. Los controles de acceso de nivel de fila y nivel de columna pueden ayudar a proteger información confidencial y cumplir las regulaciones gubernamentales de seguridad y privacidad. Estos controles de acceso funcionan con privilegios explícitos y autorizaciones administrativas. Si utiliza el control de acceso de nivel de fila o de nivel de columna, el control de acceso de nivel de visualización no es necesario.

DB2 restringe el acceso a las columnas y las filas según permisos de usuario individuales. Cuando DB2 está en modalidad de nueva función, la autorización SECADMIN gestiona las políticas de privacidad y seguridad asociadas con las tablas individuales. La autorización SECADMIN también otorga y revoca privilegios de acceso a filas y columnas específicas. El control de acceso de nivel de fila y nivel de columna afecta a todos los usuarios y los administradores de base de datos.

El control de acceso de nivel de fila y de nivel de columna proporciona las siguientes ventajas:
  • Integración dentro del sistema de base de datos
  • Seguridad de nivel de base de datos
  • Seguridad aplicada mediante SQL que no exige otros productos para supervisar el acceso
  • Acceso que se gestiona mediante el administrador de seguridad de DB2
  • Varios niveles de acceso basados en usuarios, grupos o roles
  • Control de acceso de nivel de fila y columna con filtrado y máscara de datos
Sin necesidad de filtrar los datos sensibles a nivel de aplicación

Utilización de seguridad de varios niveles para controlar el acceso

DB2 proporciona un esquema de seguridad de gran capacidad denominado seguridad de varios niveles. La seguridad de varios niveles es una política de seguridad que clasifica los datos y usuarios según un sistema de niveles de seguridad jerárquicos y categorías de seguridad no jerárquicas. La seguridad de varios niveles evita que usuarios no autorizados accedan a información de una clasificación superior a su autorización y evita que los usuarios desclasifiquen información.

Con la seguridad de varios niveles puede definir la seguridad para objetos de DB2 y realizar otras comprobaciones, incluidas las comprobaciones de seguridad de nivel inferior. Las comprobaciones de seguridad de nivel inferior controlan qué usuarios tienen autorización para ver, modificar o realizar acciones en filas de tablas. Con la seguridad de varios niveles no necesita utilizar vistas especiales ni variables de base de datos para controlar la seguridad en el nivel inferior.

Puede crear una etiqueta de seguridad para una fila de tabla definiendo una columna de la sentencia CREATE TABLE o ALTER TABLE como la etiqueta de seguridad. Cuando se accede a cada fila, DB2 utiliza RACF para comparar la etiqueta de seguridad de la fila y el usuario para determinar si el usuario tiene la autorización adecuada para acceder a la fila. Las comprobaciones de seguridad de nivel de fila se producen cada vez que un usuario emite una sentencia SELECT, INSERT, UPDATE o DELETE para acceder a una tabla con una columna de etiqueta de seguridad o ejecuta una solicitud de programa de utilidad para datos de una fila protegida mediante una etiqueta de seguridad.

Utilización de otorgamiento y revocación de privilegios para controlar el acceso

La sentencia GRANT de SQL le permite otorgar privilegios explícitamente a los ID de autorización. La sentencia REVOKE le permite revocarlos. Tan solo se puede revocar un privilegio que se haya otorgado explícitamente.

El otorgamiento de privilegios es muy flexible. Por ejemplo, considere los privilegios de tablas. Puede otorgar todos los privilegios de una tabla a un ID. De forma alternativa, puede otorgar privilegios separados específicos que permitan que este ID recupere datos de la tabla, inserte filas, suprima filas o actualice columnas específicas. Al otorgar o no otorgar estos privilegios en vistas de la tabla, puede determinar de forma eficaz y exacta qué acción un ID puede realizar o no en la tabla.

Puede utilizar la sentencia GRANT para asignar privilegios como se indica a continuación:
  • Otorgar privilegios a un único ID o a varios ID en una sentencia.
  • Otorgar un privilegio específico sobre un objeto en una única sentencia, otorgar una lista de privilegios u otorgar privilegios sobre una lista de objetos.
  • Otorgar ALL, para todos los privilegios de acceso a una única tabla o para todos los privilegios asociados con un paquete específico.


En conclusion del tema puedo decir que DB2 es un sistema de gestión de base de datos relacionales completamente habilitado para la web que se puede escalar, desde procesadores simples hasta multiprocesadores simétricos y agrupamientos paralelos masivos.

Mediante el se puede influir en todos los aspectos relativos a la información de la empresa, más allá de simples filas y columnas de datos alfanuméricos, incluyendo información en formato XML, imágenes, video en modalidad continua y otros formatos ricos en los medios.

DB2 dispone de una solución de control de accesos basada en etiquetas. Además, dispone de una nueva función de seguridad para el administrador, que permite unificar distintos privilegios bajo un solo usuario.

12 Reglas de Codd

En la década de los 80’s comenzaron a aparecer numerosos Sistemas de Gestión de Bases de Datos que se anunciaban como relacionales. Sin embargo estos sistemas carecían de muchas características que se consideran importantes en un sistema relacional, perdiendo muchas ventajas del modelo relacional. Como ejemplo extremo de esto sistemas relacionales eran simplemente sistemas que utilizaban tablas para almacenar la información, no disponiendo de elementos como claves primarias, etc.


En 1984 Edgar F. Codd, creador del Modelo Relacional publicó las 12 Reglas que un verdadero Sistema Relacional de Bases de Datos debería cumplir. 

REGLA 0

Para que un sistema se denomine Sistema de Gestión de Bases de Datos Relacionales, este sistema debe usar exclusivamente sus capacidades relacionales para gestionar la base de datos.

REGLA 1: REGLA DE LA INFORMACIÓN.

Toda la información en una base de datos relacional se representa explícitamente en el nivel lógico mediante tablas y sólo mediante tablas.

Por tanto los metadatos (diccionario, catálogo) se representan y se manipulan exactamente igual que los datos de usuario, usando quizás el mismo lenguaje (ejemplo SQL).

REGLA 2: REGLA DEL ACCESO GARANTIZADO

Para todos y cada uno de los datos (valores atómicos) de una base de datos relacional se garantiza que son accesibles a nivel lógico utilizando una combinación de nombre de tabla, valor de clave primaria y nombre de columna.

Cualquier dato almacenado en una base de datos relacional tiene que poder ser direccionado unívocamente. Para ello hay que indicar en qué tabla está, cuál es la columna y cuál es la fila (mediante la clave primaria).

REGLA 3: TRATAMIENTO SISTEMÁTICO DE VALORES NULOS

Se debe disponer de valores nulos (distintos de la cadena vacía, blancos, 0, etc.) para representar información desconocida o no aplicable de manera sistemática, independientemente del tipo de datos.

Se reconoce la necesidad de la existencia del valor nulo, el cual podría servir para representar, o bien, una información desconocida, o bien una información que no aplica.

Hay problemas para soportar los valores nulos en las operaciones relacionales, especialmente en las operaciones lógicas, para lo cual se considera una lógica trivaluada, con tres (no dos) valores de verdad: Verdadero, Falso y null. 

REGLA 4: CATÁLOGO DINÁMICO  EN LÍNEA BASADO EN EL MODELO RELACIONAL

La descripción de la base de datos se representa a nivel lógico de la misma manera que los datos normales, de modo que los usuarios autorizados pueden aplicar el mismo lenguaje relacional a su consulta, igual que lo aplican a los datos normales.

Los metadatos se almacenan y se manejan usando el modelo relacional, con todas las consecuencias.

REGLA 5: REGLA DEL SUBLENGUAJE DE DATOS COMPLETO

Un sistema relacional debe soportar varios lenguajes y varios modos de uso de terminal (ejemplo: rellenar formularios, etc.). Sin embargo, debe existir al menos un lenguaje cuyas sentencias sean expresables, mediante una sintaxis bien definida, como cadenas de caracteres y que sea completo, soportando:
  • Definición de datos
  •  Definición de vistas
  • Manipulación de datos (interactiva y por programa)
  • Restricciones de integridad
  • Restricciones de transacciones (begin, commit, rollback).

REGLA 6: REGLA DE ACTUALIZACIÓN DE VISTAS

Todas las vistas que son teóricamente actualizables se pueden actualizar también por el sistema.
El problema es determinar cuáles son las vistas teóricamente actualizables, ya que no está muy claro.
Cada sistema puede hacer unas suposiciones particulares sobre las vistas que son actualizables.

REGLA 7: INSERCIÓN, ACTUALIZACIÓN Y BORRADO DE ALTO NIVEL

La capacidad de manejar una relación base o derivada como un solo operando se aplica no sólo a la recuperación de los datos (consultas), sino también a la inserción, actualización y borrado de datos.


Esto es, el lenguaje de manejo de datos también debe ser de alto nivel (de conjuntos). Algunos sistemas de bases de datos inicialmente sólo podían modificar las filas de una tabla de una en una (un registro de cada vez).


REGLA 8: INDEPENDENCIA FÍSICA DE DATOS

Los programas de aplicación y actividades del terminal permanecen inalterados a nivel lógico cualesquiera sean los cambios efectuados, tanto en la representación del almacenamiento, como en los métodos de acceso.

El modelo relacional es un modelo lógico de datos, y oculta las características de su representación física.

REGLA 9: INDEPENDENCIA LÓGICA DE DATOS

Los programas de aplicación y actividades del terminal permanecen inalterados a nivel lógico cualesquiera sean los cambios que se realicen a las tablas base que preserven la información.

Cuando se modifica el esquema lógico preservando información (no valdría por ejemplo, eliminar un atributo) no es necesario modificar nada en niveles superiores.

Ejemplos de cambios que preservan la información:
  •  Añadir un atributo a una tabla base.
  •  Sustituir dos tablas base por la unión de las mismas. Usando           vistas de la unión se pueden recrear las tablas anteriores...


REGLA 10: INDEPENDENCIA DE INTEGRIDAD

Las restricciones de integridad específicas para una determinada base de datos relacional deben poder ser definidos en el sublenguaje de datos relacional, y almacenables en el catálogo, no en los programas de aplicación.

El objetivo de las bases de datos no es sólo almacenar los datos, sino también sus relaciones y evitar que estas restricciones se codifiquen en los programas. Por tanto en una base de datos relacional se deben poder definir restricciones de integridad.

Cada vez se van ampliando más los tipos de restricciones de integridad que se pueden utilizar en los Sistemas de Gestión de Bases de Datos Relacionales, aunque hasta hace poco eran muy escasos.
Como parte de las restricciones inherentes al modelo relacional (forman parte de su definición) están:

  • Integridad de Entidad: Toda tabla debe tener una clave primaria.
  • Integridad de Dominio: Toda columna de una tabla contendrá valores exclusivamente de un determinado dominio (conjunto de valores válidos).
  • Integridad Referencial: Toda clave foránea no nula debe existir en la relación donde es clave primaria.

REGLA 11: INDEPENDENCIA DE DISTRIBUCIÓN

Una Base de Datos Relacional es independencia de la distribución.

Las mismas órdenes y programas se ejecutan igual en una base de datos centralizada que en una distribuida. Las bases de datos son fácilmente distribuibles.

Esta regla es responsable de tres tipos de transparencia de distribución:
  •  Transparencia de Localización. El usuario tiene la impresión de que trabaja con una base de datos local. (Regla de Independencia Física)
  • Transparencia de Fragmentación: El usuario no se da cuenta de que la relación con que trabaja está fragmentada. (Regla de Independencia Lógica).
  • Transparencia de Replicación: El usuario no se da cuenta de que pueden existir copias (réplicas) de una misma relación en diferentes lugares.

REGLA 12: REGLA DE LA NO SUBVERSIÓN

Si un sistema relacional tiene un lenguaje de bajo nivel (un registro a la vez), ese bajo nivel no puede ser usado para subvertir (saltarse) las reglas de integridad y las restricciones expresadas en los lenguajes relacionales de más alto nivel (una relación a la cada vez).

Algunos problemas no se pueden solucionar directamente con el lenguaje de alto nivel.


Normalmente se usa SQL incorporado en un lenguaje anfitrión para solucionar estos problemas. Se utiliza el concepto de cursor para tratar individualmente las filas de una tabla. En cualquier caso no debe ser posible saltarse las restricciones de integridad impuestos al tratar las filas a ese nivel.








martes, 18 de noviembre de 2014

Base de datos

Base de datos

Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar fácilmente. Una base de datos se puede definir como un conjunto de información relacionada que se encuentra agrupada ó estructurada. Desde el punto de vista informático, la base de datos es un sistema formado por un conjunto de datos almacenados en discos que permiten el acceso directo a ellos y un conjunto de programas que manipulen ese conjunto de datos. Cada base de datos se compone de una o más tablas que guarda un conjunto de datos. Cada tabla tiene una o más columnas y filas. Las columnas guardan una parte de la información sobre cada elemento que queramos guardar en la tabla, cada fila de la tabla conforma un registro.


Entre las principales características de los sistemas de base de datos podemos mencionar: Independencia lógica y física de los datos, Redundancia mínima, Acceso concurrente por parte de múltiples usuarios, Integridad de los datos, Consultas complejas optimizadas, Seguridad de acceso y auditoría, Respaldo y recuperación, Acceso a través de lenguajes de programacion estándar.

Sistema de gestión de base de datos

Los Sistemas de Gestión de Base de Datos (en inglés DataBase Management System) son un tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. Se compone de un lenguaje de definición de datos, de un lenguaje de manipulación de datos y de un lenguaje de consulta.


Arquitectura de gestión de bases de datos

La arquitectura de un sistema de bases de datos está influenciada en gran medida por el sistema informático subyacente en el que se ejecuta, en particular por aspectos de la arquitectura de la computadora como la conexión en red, el paralelismo y la distribución.

• La conexión en red de varias computadoras permite que algunas tareas se ejecuten en un sistema servidor y que otras se ejecuten en los sistemas clientes. Esta división de trabajo ha conducido al desarrollo de sistemas de base de datos cliente-servidor.

• El procesamiento paralelo dentro de una computadora permite acelerar las actividades del sistema de base de datos, proporcionando a las transacciones unas respuestas más rápidas así como la capacidad de ejecutar más transacciones por segundo. La necesidad del procesamiento paralelo de consultas ha conducido al desarrollo de los sistemas de bases de datos paralelos.

• La distribución de datos a través de las distintas sedes o departamentos de una organización permite que estos datos residan donde han sido generados o donde son más necesarios, pero continuar siendo accesibles desde otros lugares o departamentos diferentes. Se han desarrollado los sistemas distribuidos de bases de datos para manejar datos distribuidos geográfica o administrativamente a lo largo de múltiples sistemas de base de datos.

Arquitecturas centralizadas y cliente-servidor

Arquitectura centralizada: Los sistemas de bases de datos centralizados son aquellos que se ejecutan en un único sistema informático sin interaccionar con ninguna otra computadora. Tales sistemas comprenden el rango desde los sistemas de bases de datos monousuario ejecutándose en computadoras personales hasta los sistemas de bases de datos de alto rendimiento ejecutándose en grandes sistemas. Por otro lado, los sistemas cliente-servidor tienen su funcionalidad dividida entre el sistema servidor y múltiples sistemas clientes. Se basa en la existencia de una maquina servidora que almacena los datos y las aplicaciones que los procesan.

Sistemas cliente-servidor: Como las computadoras personales son ahora más rápidas, más potentes y más baratas, los sistemas se han ido distanciando de la arquitectura centralizada. Como consecuencia, los sistemas centralizados actúan hoy como sistemas servidores que satisfacen las peticiones generadas por los sistemas clientes. Se basa en la existencia de dos tipos de aplicaciones ejecutándose de forma independiente. Una de las aplicaciones actúa como servidora y otra como cliente.

Arquitectura servidor de archivos: Se basa en la existencia de una o varias maquina servidoras que almacenan datos y estaciones de trabajo que ejecutan aplicaciones que los procesan. Los clientes en este tipo de arquitecturas son activos.

Base de datos relacional

Una Base de Datos Relacional, es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para implementar bases de datos ya planificadas. Permiten establecer interconexiones (relaciones) entre los datos (que están guardados en tablas), y a través de dichas conexiones relacionar los datos de ambas tablas, de ahí proviene su nombre:"Modelo Relacional".

Una Base de Datos Relacional se compone de varias tablas o relaciones. -- No pueden existir dos tablas con el mismo nombre ni registro. -- Cada tabla es a su vez un conjunto de registros (filas y columnas).-- La relación entre una tabla padre y un hijo se lleva a cabo por medio de las claves primarias y ajenas (o foráneas).-- Las claves primarias son la clave principal de un registro dentro de una tabla y éstas deben cumplir con la integridad de datos. -- Las claves ajenas se colocan en la tabla hija, contienen el mismo valor que la clave primaria del registro padre; por medio de éstas se hacen las relaciones.

Elementos

Relaciones Base y Derivadas: En una base de datos relacional, todos los datos se almacenan y se accede a ellos por medio de relaciones. Las relaciones que almacenan datos son llamadas "relaciones base" y su implementación es llamada "tabla". Otras relaciones no almacenan datos, pero son calculadas al aplicar operaciones relacionales. Estas relaciones son llamadas "relaciones derivadas" y su implementación es llamada "vista" o "consulta". Las relaciones derivadas son convenientes ya que expresan información de varias relaciones actuando como si fuera una sola.

Restricciones: Una restricción es una limitación que obliga el cumplimiento de ciertas condiciones en la base de datos. Algunas no son determinadas por los usuarios, sino que son inherentemente definidas por el simple hecho de que la base de datos sea relacional. Algunas otras restricciones las puede definir el usuario, por ejemplo, usar un campo con valores enteros entre 1 y 10. Las restricciones proveen un método de implementar reglas en la base de datos. Las restricciones limitan los datos que pueden ser almacenados en las tablas. Usualmente se definen usando expresiones que dan como resultado un valor booleano, indicando si los datos satisfacen la restricción o no.

Dominios: Un dominio describe un conjunto de posibles valores para cierto atributo. Como un dominio restringe los valores del atributo, puede ser considerado como una restricción. Matemáticamente, atribuir un dominio a un atributo significa "todos los valores de este atributo deben ser elementos del conjunto especificado". Distintos tipos de dominios son: enteros, cadenas de texto, fecha, no procedurales etc. Cada tabla puede tener uno o más campos cuyos valores identifican de forma única cada registro de dicha tabla, es decir, no pueden existir dos o más registros diferentes cuyos valores en dichos campos sean idénticos. Este conjunto de campos se llama clave única. Pueden existir varias claves únicas en una determinada tabla, y a cada una de éstas suele llamársele candidata a clave primaria.

Clave primaria: Una clave primaria es una clave única elegida entre todas las candidatas que define unívocamente a todos los demás atributos de la tabla, para especificar los datos que serán relacionados con las demás tablas. La forma de hacer esto es por medio de claves foráneas.

Clave foránea: Una clave foránea es una referencia a una clave en otra tabla, determina la relación existente en dos tablas. Las claves foráneas no necesitan ser claves únicas en la tabla donde están y sí a donde están referenciadas.

Clave índice: Las claves índice surgen con la necesidad de tener un acceso más rápido a los datos. Los índices pueden ser creados con cualquier combinación de campos de una tabla. Las consultas que filtran registros por medio de estos campos, pueden encontrar los registros de forma no secuencial usando la clave índice. Las bases de datos relacionales incluyen múltiples técnicas de ordenamiento, cada una de ellas es óptima para cierta distribución de datos y tamaño de la relación. Los índices generalmente no se consideran parte de la base de datos, pues son un detalle agregado. Sin embargo, las claves índices son desarrolladas por el mismo grupo de programadores que las otras partes de la base de datos.

Diagrama entidad relación

Denominado por sus siglas como: E-R; Este modelo representa a la realidad a través de un Esquema gráfico empleando los terminología de Entidades, que son objetos que existen y son los elementos principales que se identifican en el problema a resolver con el diagramado y se distinguen de otros por sus características particulares denominadas Atributos, el enlace que rige la unión de las entidades está representada por la relación del modelo. En un DER, cada entidad se representa mediante un rectángulo, cada relación mediante un rombo y cada dominio (conjunto donde toma valores el atributo) mediante un círculo. Mediante líneas se conectan las entidades con las relaciones, igual que las entidades con los dominios, representando a los atributos.

El modelo entidad-relación se basa en los conceptos descritos a continuación para representar un modelo de la vida real.

Entidad: Una entidad es un objeto que existe y se distingue de otros objetos de acuerdo a sus características llamadas Atributos. Las Entidades pueden ser concretas como una persona o abstractas como una fecha. Representa una “cosa” u "objeto" del mundo real con existencia independiente, es decir, se diferencia unívocamente de cualquier otro objeto o cosa, incluso siendo del mismo tipo, o una misma entidad.

Algunos Ejemplos:

Una persona. (Se diferencia de cualquier otra persona, incluso siendo gemelos).---Un automóvil. (Aunque sean de la misma marca, el mismo modelo,..., tendrán atributos diferentes, por ejemplo, el número de bastidor).---Una casa (Aunque sea exactamente igual a otra, aún se diferenciará en su dirección).

Una entidad puede ser un objeto con existencia física como: una persona, un animal, una casa, etc. (entidad concreta), o un objeto con existencia conceptual como: un puesto de trabajo, una asignatura de clases, un nombre, etc. (entidad abstracta). Una entidad está descrita y se representa por sus características o atributos. Por ejemplo, la entidad Persona puede llevar consigo las características: Nombre, Apellido, Género, Estatura, Peso, Fecha de nacimiento, etc.

Atributos: Los atributos son las propiedades que describen a cada entidad en un conjunto de entidades. Un conjunto de entidades dentro de una entidad, tiene valores específicos asignados para cada uno de sus atributos, de esta forma, es posible su identificación unívoca.

Ejemplos:

A la colección de entidades Alumnos, con el siguiente conjunto de atributos en común, (id, nombre, edad, semestre), pertenecen las entidades:
(1, Sofía, 18 años, 2)
(2, Josefa, 19 años, 5)
(3, Gabriela, 20 años, 2)

Cada una de las entidades pertenecientes a este conjunto se diferencia de las demás por el valor de sus atributos. Nótese que dos o más entidades diferentes pueden tener los mismos valores para algunos de sus atributos, pero nunca para todos.

En particular, los atributos identificativos son aquellos que permiten diferenciar a una instancia de la entidad de otra distinta. Por ejemplo, el atributo identificativo que distingue a un alumno de otro es su número de id.

Para cada atributo, existe un dominio del mismo, este hace referencia al tipo de datos que será almacenado o a restricciones en los valores que el atributo puede tomar (Cadenas de caracteres, números, solo dos letras, solo números mayores que cero, solo números enteros...). Cuando una entidad no tiene un valor para un atributo dado, este toma el valor nulo, bien sea que no se conoce, que no existe o que no se sabe nada al respecto del mismo.

Relación: Una relación es una asociación o relación matemática entre varias Entidades. Las relaciones también se nombran. Se representan en el Diagrama_Entidad_Relación, representado también por E-R mediante flechas y rombos. Cada entidad interviene en una relación con una determinada cardinalidad. La cardinalidad (número de instancias o elementos de una entidad que pueden asociarse a un elemento de la otra entidad relacionada) se representa mediante una pareja de datos, en minúsculas, de la forma (cardinalidad mínima, cardinalidad máxima), asociada a cada uno de las entidades que intervienen en la relación. Son posibles las siguientes cardinalidades: (0,1), (1,1), (0,n), (1,n), (m,n). También se informa de las cardinalidades máximas con las que intervienen las entidades en la relación.

Los Diagramas E-R son lenguajes gráficos para describir conceptos. Informalmente, son simples Dibujos o Gráficos que describen la información que trata un sistema de información y el Software que lo automatiza. El tipo de relación se define tomando los máximos de las cardinalidades que intervienen en la relación.

Lenguajes de consultas

Un lenguaje de consulta es un lenguaje informático usado para hacer consultas en bases de datos y sistemas de información. Los lenguajes de consulta pueden ser clasificados de acuerdo a si son lenguajes de consulta de bases de datos o lenguajes de consulta de recuperación de información.  Algunos ejemplos son:

  • QL es un lenguaje de consulta propietario orientado a objetos para consultar bases de datos relacionales.
  • Common Query Language (CQL) un lenguaje formal para representar consultas para sistemas de recuperación de información como índices web o catálogos bibliográficos.
  • D es un lenguaje de consulta para sistemas de administración de bases de datos verdaderamente relacionales

Tipos de base de datos

Las bases de datos pueden clasificarse de varias maneras, de acuerdo al contexto que se esté manejando, la utilidad de las mismas o las necesidades que satisfagan.

  • Según la variabilidad de la base de Datos

Bases de datos estáticas Son bases de datos de solo lectura, utilizadas primordialmente para almacenar datos históricos que posteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a través del tiempo, realizar proyecciones, tomar decisiones y realizar análisis de datos para inteligencia empresarial.

Bases de datos dinámicas: Éstas son bases de datos donde la información almacenada se modifica con el tiempo, permitiendo operaciones como actualización, borrado y edición de datos, además de las operaciones fundamentales de consulta

  • Según el contenido

Bases de datos bibliográficas: Sólo contienen un subrogante (representante) de la fuente primaria, que permite localizarla. Un registro típico de una base de datos bibliográfica contiene información sobre el autor, fecha de publicación, editorial, título, edición, de una determinada publicación, etc. Puede contener un resumen o extracto de la publicación original, pero nunca el texto completo, porque si no, estaríamos en presencia de una base de datos a texto completo (o de fuentes primarias —ver más abajo). Como su nombre lo indica, el contenido son cifras o números.

Bases de datos de texto completo: Almacenan las fuentes primarias, como por ejemplo, todo el contenido de todas las ediciones de una colección de revistas científicas.


Modelos de bases de datos

Además de la clasificación por la función de las bases de datos, éstas también se pueden clasificar de acuerdo a su modelo de administración de datos. Un modelo de datos es básicamente una "descripción" de algo conocido como contenedor de datos (algo en donde se guarda la información), así como de los métodos para almacenar y recuperar información de esos contenedores. Los modelos de datos no son cosas físicas: son abstracciones que permiten la implementación de un sistema eficiente de base de datos; por lo general se refieren a algoritmos, y conceptos matemáticos. Algunos modelos con frecuencia utilizados en las bases de datos:

Bases de datos jerárquicas: En este modelo los datos se organizan en forma de árbol invertido (algunos dicen raíz), en donde un nodo padre de información puede tener varios hijos. El nodo que no tiene padres es llamado raíz, y a los nodos que no tienen hijos se los conoce como hojas. Las bases de datos jerárquicas son especialmente útiles en el caso de aplicaciones que manejan un gran volumen de información y datos muy compartidos permitiendo crear estructuras estables y de gran rendimiento. Una de las principales limitaciones de este modelo es su incapacidad de representar eficientemente la redundancia de datos.

Base de datos de red: Éste es un modelo ligeramente distinto del jerárquico; su diferencia fundamental es la modificación del concepto de nodo: se permite que un mismo nodo tenga varios padres (posibilidad no permitida en el modelo jerárquico). Fue una gran mejora con respecto al modelo jerárquico, ya que ofrecía una solución eficiente al problema de redundancia de datos; pero, aún así, la dificultad que significa administrar la información en una base de datos de red ha significado que sea un modelo utilizado en su mayoría por programadores más que por usuarios finales.

Bases de datos transaccionales: Son bases de datos cuyo único fin es el envío y recepción de datos a grandes velocidades, estas bases son muy poco comunes y están dirigidas por lo general al entorno de análisis de calidad, datos de producción e industrial, es importante entender que su fin único es recolectar y recuperar los datos a la mayor velocidad posible, por lo tanto la redundancia y duplicación de información no es un problema como con las demás bases de datos, por lo general para poderlas aprovechar al máximo permiten algún tipo de conectividad a bases de datos relacionales.

Bases de datos relacionales: Éste es el modelo utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. En este modelo, el lugar y la forma en que se almacenen los datos no tienen relevancia (a diferencia de otros modelos como el jerárquico y el de red). Esto tiene la considerable ventaja de que es más fácil de entender y de utilizar para un usuario esporádico de la base de datos. La información puede ser recuperada o almacenada mediante "consultas" que ofrecen una amplia flexibilidad y poder para administrar la información. El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query Language o Lenguaje Estructurado de Consultas, un estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales.

Bases de datos multidimensionales: Son bases de datos ideadas para desarrollar aplicaciones muy concretas, como creación de Cubos OLAP. Básicamente no se diferencian demasiado de las bases de datos relacionales (una tabla en una base de datos relacional podría serlo también en una base de datos multidimensional), la diferencia está más bien a nivel conceptual; en las bases de datos multidimensionales los campos o atributos de una tabla pueden ser de dos tipos, o bien representan dimensiones de la tabla, o bien representan métricas que se desean estudiar.

Bases de datos orientadas a objetos: Este modelo, bastante reciente, y propio de los modelos informáticos orientados a objetos, trata de almacenar en la base de datos los objetos completos (estado y comportamiento). Una base de datos orientada a objetos es una base de datos que incorpora todos los conceptos importantes del paradigma de objetos:
  • Encapsulación: Propiedad que permite ocultar la información al resto de los objetos, impidiendo así accesos incorrectos o conflictos.
  • Herencia: Propiedad a través de la cual los objetos heredan comportamiento dentro de una jerarquía de clases.
  • Polimorfismo: Propiedad de una operación mediante la cual puede ser aplicada a distintos tipos de objetos.

Bases de datos documentales: Permiten la indexación a texto completo, y en líneas generales realizar búsquedas más potentes. Tesaurus es un sistema de índices optimizado para este tipo de bases de datos.

Bases de datos deductivas: Un sistema de base de datos deductiva, es un sistema de base de datos pero con la diferencia de que permite hacer deducciones a través de inferencias. Se basa principalmente en reglas y hechos que son almacenados en la base de datos. Las bases de datos deductivas son también llamadas bases de datos lógicas, a raíz de que se basa en lógica matemática. Este tipo de base de datos surge debido a las limitaciones de la Base de Datos Relacional de responder a consultas recursivas y de deducir relaciones indirectas de los datos almacenados en la base de datos.

Lenguaje de definición de datos 

Es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios de la misma llevar a cabo las tareas de definición de las estructuras que almacenarán los datos así como de los procedimientos o funciones que permitan consultarlos.

Lenguaje de Manipulación de Datos 

Es un idioma proporcionado por los sistemas gestores de bases de datos que permite a los usuarios de la misma llevar a cabo las tareas de consulta o modificación de los datos contenidos en las Bases de Datos del Sistema Gestor de Bases de Datos. El lenguaje de manipulación de datos más popular hoy día es SQL, usado para recuperar y manipular datos en una base de datos relacional. Otros ejemplos de DML son los usados por bases de datos IMS/DL1, CODASYL u otras

Lenguaje de Control de Datos 


Es un lenguaje proporcionado por el Sistema de Gestión de Base de Datos que incluye una serie de comandos SQL que permiten al administrador controlar el acceso a los datos contenidos en la Base de Datos.