03 febrero 2025

 Desarrollo de Scripts en Kotlin para Monitoreo de Oracle 19c y 23ai



Aquí te dejo ejemplos de uso de espacio, sesiones activas y locks, además de una estructura de proyecto en Kotlin para monitoreo de bases de datos Oracle.

Configuración del Proyecto en Kotlin

Si estás desarrollando un proyecto con Kotlin y Oracle, usa Gradle para gestionar las dependencias.

Estructura del Proyecto

/KotlinOracleMonitor

 ├── /src

 │   ├── Main.kt

 │   ├── Database.kt

 │   ├── SpaceMonitor.kt

 │   ├── SessionMonitor.kt

 │   ├── LockMonitor.kt

 ├── build.gradle.kts

 ├── settings.gradle.kts

 └── README.md

Dependencias en build.gradle.kts

plugins {
    kotlin("jvm") version "1.9.0"
    application
}
repositories {
    mavenCentral()
}
dependencies {
    implementation("com.oracle.database.jdbc:ojdbc8:19.8.0.0")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
}
application {
    mainClass.set("MainKt")
}

Configuración de la Conexión a Oracle

Archivo: Database.kt

import java.sql.Connection
import java.sql.DriverManager
object Database {
    private const val URL = "jdbc:oracle:thin:@//localhost:1521/ORCL"
    private const val USER = "admin"
    private const val PASSWORD = "password"
    fun getConnection(): Connection {
        return DriverManager.getConnection(URL, USER, PASSWORD)
    }
}

Monitoreo del Uso de Espacio

Archivo: SpaceMonitor.kt

fun checkTablespaceUsage() {
    val connection = Database.getConnection()
    val query = """
        SELECT tablespace_name, 
               round((used_space / total_space) * 100, 2) AS used_percentage 
        FROM (
            SELECT tablespace_name,
                   sum(bytes) / 1024 / 1024 AS used_space,
                   (SELECT sum(bytes) / 1024 / 1024 
                    FROM dba_data_files 
                    WHERE tablespace_name = t.tablespace_name) AS total_space
            FROM dba_segments t
            GROUP BY tablespace_name
        )
    """
    val statement = connection.createStatement()
    val resultSet = statement.executeQuery(query)
    while (resultSet.next()) {
        println("Tablespace: ${resultSet.getString("tablespace_name")}, Uso: ${resultSet.getDouble("used_percentage")}%")
    }
    connection.close()
}

Monitoreo de Sesiones Activas

Archivo: SessionMonitor.kt

fun checkActiveSessions() {
    val connection = Database.getConnection()
    val query = """
        SELECT sid, serial#, username, status, machine, osuser, program 
        FROM v$session 
        WHERE status = 'ACTIVE'
    """
    val statement = connection.createStatement()
    val resultSet = statement.executeQuery(query)
    while (resultSet.next()) {
        println("SID: ${resultSet.getInt("sid")}, User: ${resultSet.getString("username")}, Status: ${resultSet.getString("status")}")
    }
    connection.close()
}

Monitoreo de Locks (Bloqueos en la Base de Datos)

Archivo: LockMonitor.kt

fun checkLocks() {
    val connection = Database.getConnection()
    val query = """
        SELECT l.sid, s.serial#, s.username, l.type, l.lmode, l.request, o.object_name 
        FROM v$lock l
        JOIN v$session s ON l.sid = s.sid
        LEFT JOIN dba_objects o ON l.id1 = o.object_id
        WHERE l.lmode > 0
    """
    val statement = connection.createStatement()
    val resultSet = statement.executeQuery(query)
    while (resultSet.next()) {
        println("SID: ${resultSet.getInt("sid")}, Usuario: ${resultSet.getString("username")}, Objeto: ${resultSet.getString("object_name")}")
    }
    connection.close()
}

Ejecutar Monitoreo

Archivo: Main.kt

fun main() {
    println("Monitoreo de Oracle 19c / 23ai ")
    
    println("\n Uso de Tablespaces:")
    checkTablespaceUsage()
    println("\n Sesiones Activas:")
    checkActiveSessions()
    println("\n Locks en la Base de Datos:")
    checkLocks()
}

Ejecutar el Proyecto

Compilar y ejecutar

./gradlew run

O en Windows:

gradlew.bat run

Salida esperada en consola

Monitoreo de Oracle 19c / 23ai 

Uso de Tablespaces:

Tablespace: USERS, Uso: 65.2%

Tablespace: SYSTEM, Uso: 82.3%

Sesiones Activas:

SID: 123, User: SYSTEM, Status: ACTIVE

Locks en la Base de Datos:

SID: 456, Usuario: HR, Objeto: EMPLOYEES


Conclusión

Con este proyecto, un DBA puede:

 Monitorear el uso de espacio de tablespaces.

  • Ver sesiones activas en la base de datos.
  • Detectar bloqueos (locks) en tiempo real.
  • Automatizar reportes o alertas integrando con Telegram, email o Grafana.


02 febrero 2025

Ciberseguridad en Aplicaciones Web Empresariales: OWASP y la Protección de Bases de Datos Relacionales y NoSQL



En un entorno digital donde las aplicaciones web empresariales son el núcleo de las operaciones modernas, garantizar la seguridad de los datos almacenados es una prioridad absoluta. Las bases de datos, tanto relacionales como NoSQL, juegan un papel crítico en la gestión y disponibilidad de la información. 
Soluciones como Oracle Database, PostgreSQL, MariaDB, MySQL y Apache Cassandra sustentan aplicaciones que soportan desde operaciones bancarias hasta plataformas de comercio electrónico.
Sin embargo, estas tecnologías no están exentas de riesgos. Desde inyecciones SQL hasta configuraciones erróneas, las vulnerabilidades pueden comprometer la continuidad del negocio. 
Aquí es donde la metodología OWASP (Open Web Application Security Project) ofrece un marco esencial para identificar, prevenir y mitigar los principales riesgos de seguridad en aplicaciones web conectadas a bases de datos.
OWASP (Open Web Application Security Project) es una organización sin fines de lucro dedicada a mejorar la seguridad del software. Su enfoque principal es identificar y mitigar los riesgos más críticos en las aplicaciones web.
 A continuación, se resumen algunos aspectos clave orientados a aplicaciones web que interactúan con bases de datos como Oracle, PostgreSQL, MariaDB, MySQL y Cassandra:

Vulnerabilidades Comunes y Riesgos Asociados a Bases de Datos

Inyección SQL

Consiste en la manipulación de consultas SQL a través de la entrada de datos no sanitizada. Afecta bases de datos relacionales como Oracle, MySQL, PostgreSQL y MariaDB.

Medidas de mitigación:

  • Usar consultas preparadas (Prepared Statements) o procedimientos almacenados.
  • Validar y sanitizar las entradas de los usuarios.
  • Implementar un principio de privilegios mínimos en las cuentas de acceso.

Configuración Incorrecta de Seguridad

La configuración por defecto o la incorrecta implementación de medidas de seguridad puede exponer bases de datos a riesgos.

Medidas de mitigación:

  • Deshabilitar funciones innecesarias (como xp_cmdshell en SQL Server o funciones de superusuario en Cassandra).
  • Restringir el acceso a las bases de datos desde redes externas.
  • Aplicar parches y actualizaciones de seguridad regularmente.

Exposición de Datos Sensibles

La falta de cifrado en tránsito y en reposo puede exponer datos sensibles almacenados en bases de datos.

Medidas de mitigación:

  • Cifrar conexiones con TLS/SSL.
  • Cifrar datos sensibles en la base de datos utilizando herramientas como Transparent Data Encryption (TDE) para datos "rest" Oracle o características nativas en PostgreSQL.

Autenticación y Gestión de Credenciales

El uso de credenciales débiles o reutilizadas para la conexión a bases de datos es un riesgo común.

Medidas de mitigación:

  • Implementar autenticación robusta (uso de claves SSH, OAuth2 o certificados).
  • Gestionar credenciales mediante herramientas seguras como HashiCorp Vault.
  • OWASP Top 10 y Bases de Datos

Los riesgos identificados en el OWASP Top 10 (como inyección, configuración incorrecta y control de acceso roto) son directamente aplicables a sistemas que dependen de bases de datos.

Buenas prácticas generales:

Automatizar análisis de vulnerabilidades en código y dependencias con herramientas como OWASP Dependency-Check.

Implementar auditorías y monitoreo de actividades inusuales en la base de datos.

Herramientas Útiles

  • OWASP ZAP: Escaneo de seguridad para aplicaciones web, útil para identificar inyección SQL y problemas de configuración.
  • SQLMap: Para pruebas de penetración y detección de vulnerabilidades relacionadas con inyecciones SQL.
  • Database Activity Monitoring (DAM): Soluciones como Oracle Audit Vault y herramientas similares para otros sistemas de base de datos.

Recomendaciones Específicas por Base de Datos

Oracle Database

  1. Utilizar el parámetro DBMS_ASSERT para validar datos de entrada en procedimientos almacenados.
  2. Configurar Oracle Data Redaction para evitar exposiciones accidentales de datos sensibles.

PostgreSQL

  • Configurar roles y privilegios con cuidado mediante el sistema de roles.
  • Utilizar extensiones como pgcrypto para cifrado de datos sensibles.

MariaDB/MySQL

Activar sql_mode con opciones como STRICT_TRANS_TABLES para evitar errores de tipo y asegurar consultas consistentes.

Usar el cifrado nativo de tablas y conexiones TLS.

Cassandra

  • Implementar autenticación con el subsistema Authenticator y autorización granular con Role-Based Access Control (RBAC).
  • Proteger nodos con encriptación entre nodos y cifrado de datos en disco.

Este enfoque permite mantener la seguridad de aplicaciones web que interactúan con bases de datos modernas, mitigando riesgos críticos y cumpliendo con estándares de la industria.

La seguridad en aplicaciones web empresariales no puede ser tratada como una tarea secundaria, especialmente cuando se depende de bases de datos robustas como Oracle Database, PostgreSQL, MariaDB, MySQL y Apache Cassandra. 

La implementación de buenas prácticas basadas en la metodología OWASP permite no solo identificar y mitigar riesgos críticos, como la inyección SQL o la exposición de datos sensibles, sino también establecer una cultura de ciberseguridad centrada en la continuidad del negocio. 

 Al adoptar estrategias como el uso de consultas preparadas, la gestión de privilegios mínimos y la encriptación de datos en tránsito y en reposo, las organizaciones pueden reducir significativamente las vulnerabilidades. Además, al integrar herramientas de monitoreo y auditoría, y actualizar constantemente sus sistemas, no solo se protegen los activos digitales, sino que también se refuerza la confianza de los clientes y socios. La ciberseguridad, en este contexto, deja de ser una barrera y se convierte en un habilitador clave para el éxito sostenible en un entorno empresarial dinámico y conectado.

15 enero 2025


 

Maximizando la Gestión de Contenidos Empresariales: Integración de Oracle Database 21c y Documentum


En un entorno empresarial cada vez más competitivo, la gestión eficiente de los datos y contenidos es crucial para alcanzar la agilidad operativa y el cumplimiento normativo. La integración de herramientas líderes como Oracle Database 21c y Documentum representa una solución potente para organizaciones que necesitan manejar grandes volúmenes de información crítica con precisión, escalabilidad y seguridad.

Oracle 21c, con sus innovaciones en Blockchain Tables, JSON nativo, y capacidades avanzadas de analítica, se combina perfectamente con las capacidades de Documentum para ofrecer una plataforma integrada que optimiza la gestión de documentos, flujos de trabajo, y registros sensibles. Esta sinergia no solo permite un control robusto del contenido, sino que también habilita decisiones basadas en datos en tiempo real, mejorando la eficiencia y reduciendo riesgos.En este artículo, exploraremos cómo esta integración puede transformar sectores clave, desde la banca hasta la defensa, proporcionando casos prácticos y ejemplos reales que ilustran el valor estratégico de esta solución.

Caso 1: 

Gestión de Documentos Regulatorios

Contexto: 

Una entidad bancaria necesita gestionar documentos regulatorios (por ejemplo, políticas KYC, contratos, y reportes para auditorías).

Solución:

Documentum:

Se utiliza como repositorio centralizado para almacenar, versionar y controlar el acceso a documentos regulatorios.Los usuarios acceden mediante flujos de trabajo automatizados para revisión y aprobación.

Oracle 21c:

Actúa como base de datos subyacente para almacenar metadatos relacionados (autores, fechas, versiones, etc.).Almacena también registros de auditoría, como quién accedió o modificó un documento..

Integración:

Documentum puede interactuar con Oracle Database mediante servicios JDBC o APIs para consultas avanzadas y almacenamiento eficiente.

Las funcionalidades avanzadas de Oracle, como Blockchain Tables, se usan para garantizar la inmutabilidad de los registros sensibles (cumplimiento regulatorio).

Otro ejemplo práctico del uso de Documentum y Oracle Database 21c en el contexto del negocio de la Armada de Moderdonia podría estar relacionado con la gestión de la documentación logística y operativa de los buques y unidades militares.

Caso 2: 

Gestión de Documentación Técnica y Logística Naval

Contexto: 

La Armada de "Moderdonia" gestiona una gran cantidad de documentación relacionada con los buques, incluyendo manuales técnicos, planos, inventarios de piezas de repuesto, bitácoras operativas y registros de mantenimiento. Es crucial tener acceso rápido, seguro y centralizado a esta información tanto en tierra como en alta mar.

Solución tecnológica:

 Documentum:

Centraliza la gestión de los documentos técnicos y operativos de los buques.

Implementa controles de acceso para clasificar la documentación según niveles de confidencialidad (acceso restringido a documentos críticos o secretos).

Automatiza flujos de trabajo para la revisión y aprobación de nuevos procedimientos técnicos o actualizaciones de manuales.

Versiona documentos para mantener un historial completo de cambios.

 Oracle 21c

Base de datos subyacente que almacena los metadatos de los documentos: ID de buque, tipo de documento, fecha de actualización, y estado de revisión.

Sharding para optimizar consultas distribuidas desde diferentes bases navales o buques.

Uso de JSON/SQL para almacenar y consultar datos técnicos complejos, como configuraciones de sistemas de armas o planos electrónicos.

Implementación de Blockchain Tables para garantizar la inmutabilidad de registros críticos, como bitácoras operativas o certificaciones de mantenimiento.

Integración en el negocio:

Los buques de la Armada acceden a los documentos almacenados en Documentum a través de conexiones seguras vía satélite o mediante sistemas locales replicados sincronizados con las bases de datos en tierra.

Los sistemas logísticos integrados con Oracle Database permiten rastrear y solicitar piezas de repuesto directamente desde un inventario centralizado, optimizando el mantenimiento preventivo.

Los registros de mantenimiento y operaciones almacenados en Oracle pueden ser consultados en auditorías internas o externas para garantizar el cumplimiento normativo y la seguridad.

Beneficios para la Armada de "Moderdonia" :

Eficiencia operativa: 

La documentación técnica siempre está actualizada y accesible para las tripulaciones y equipos de mantenimiento.

Cumplimiento normativo: 

El uso de Blockchain Tables asegura que los registros críticos no sean alterados, cumpliendo con auditorías y normativas militares.

Seguridad: 

La integración de Documentum con Oracle permite implementar fuertes controles de acceso y cifrado, protegiendo información clasificada.

La optimización del inventario y el mantenimiento preventivo evita retrasos y costes asociados a fallos imprevistos.

Caso 3: 

Gestión de Expedientes Bancarios

Contexto: 

Se gestionan expedientes completos de clientes que contienen contratos, solicitudes y documentación relacionada con créditos o hipotecas.

Solución:

Documentum:

Los expedientes están estructurados como carpetas virtuales con documentos asociados.

Define reglas de retención y expiración de documentos, garantizando el cumplimiento de normativas.

Oracle 21c:

Contiene tablas que registran relaciones entre clientes, documentos y estados del expediente.

Permite búsquedas complejas utilizando JSON o XML almacenados en la base de datos.

Integración:

Oracle Database se conecta al motor de búsqueda de Documentum para indexar y localizar documentos rápidamente.

Los datos se sincronizan para mantener actualizada la relación entre documentos y sus estados en tiempo real.

La integración de Oracle Database 21c y Documentum no es solo una solución tecnológica; es un habilitador estratégico para organizaciones que buscan maximizar el valor de su información. Al combinar la robustez de una base de datos avanzada con un sistema líder de gestión de contenidos, las empresas pueden alcanzar nuevos niveles de eficiencia, cumplimiento normativo y seguridad en sus operaciones.

En un mundo donde los datos son el activo más valioso, contar con plataformas que trabajen de forma sinérgica para gestionar, analizar y proteger esa información se convierte en una ventaja competitiva indiscutible. Desde optimizar procesos documentales hasta garantizar la integridad de los registros críticos, esta solución integrada es una apuesta segura para quienes buscan liderar en la era digital.

¿Está tu organización lista para dar el siguiente paso en la gestión de contenidos empresariales? La tecnología está disponible, y el momento de innovar es ahora.