Skip to content

ernestomar/pg-security

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Autenticación y Autorización en Base de datos

Correr el contendor Docker para PostgreSql.

docker run --name pg-internship -e POSTGRES_PASSWORD=123456 -p 5432:5432 -d postgres:15.2

Inicializar la Base de Datos.

Para crear la base de datos y las tablas que mencionas en PostgreSQL, puedes seguir los siguientes pasos. Por favor, ten en cuenta que debes adaptar este código a tus necesidades específicas y asegurarte de que tienes los permisos necesarios para crear y modificar tablas en la base de datos.

Nos conetamos al motor de Postgres

$ docker exec -it pg-internship bash

Luego dentro del contenedor cambiamos de usuario

root@ba597b82a000:/# su - postgres
postgres@ba597b82a000:~$ psql template1

Primero, crea la base de datos:

CREATE DATABASE internship_db;

\c internship_db

A continuación, crea las tablas SE_USER, SE_GROUP y SE_ROLE, incluyendo las llaves surrogadas y los campos de auditoría:

CREATE TABLE SE_USER (
  SE_USER_ID SERIAL PRIMARY KEY,
  USERNAME VARCHAR(255) UNIQUE NOT NULL,
  PASSWORD VARCHAR(255) NOT NULL,
  SE_GROUP_ID INTEGER,
  SE_ROLE_ID INTEGER,
  TX_HOST VARCHAR(255),
  TX_USER VARCHAR(255),
  TX_DATE TIMESTAMP
);

CREATE TABLE SE_GROUP (
  SE_GROUP_ID SERIAL PRIMARY KEY,
  GROUP_NAME VARCHAR(255) UNIQUE NOT NULL,
  TX_HOST VARCHAR(255),
  TX_USER VARCHAR(255),
  TX_DATE TIMESTAMP
);

CREATE TABLE SE_ROLE (
  SE_ROLE_ID SERIAL PRIMARY KEY,
  ROLE_NAME VARCHAR(255) UNIQUE NOT NULL,
  TX_HOST VARCHAR(255),
  TX_USER VARCHAR(255),
  TX_DATE TIMESTAMP
);

Luego, crea la tabla histórica H_SE_USER:

CREATE TABLE H_SE_USER (
  H_SE_USER_ID SERIAL PRIMARY KEY,
  SE_USER_ID INTEGER NOT NULL,
  USERNAME VARCHAR(255),
  PASSWORD VARCHAR(255),
  SE_GROUP_ID INTEGER,
  SE_ROLE_ID INTEGER,
  TX_HOST VARCHAR(255),
  TX_USER VARCHAR(255),
  TX_DATE TIMESTAMP
);

A continuación, crea un trigger para guardar el historial de cambios en la tabla H_SE_USER cada vez que se actualiza o inserta un registro en la tabla SE_USER:

CREATE OR REPLACE FUNCTION insert_update_history() RETURNS TRIGGER AS $$
BEGIN
  INSERT INTO H_SE_USER (
    SE_USER_ID,
    USERNAME,
    PASSWORD,
    SE_GROUP_ID,
    SE_ROLE_ID,
    TX_HOST,
    TX_USER,
    TX_DATE
  ) VALUES (
    NEW.SE_USER_ID,
    NEW.USERNAME,
    NEW.PASSWORD,
    NEW.SE_GROUP_ID,
    NEW.SE_ROLE_ID,
    NEW.TX_HOST,
    NEW.TX_USER,
    NEW.TX_DATE
  );
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER save_history
AFTER INSERT OR UPDATE ON SE_USER
FOR EACH ROW EXECUTE PROCEDURE insert_update_history();

Con esto, se creará un registro en la tabla H_SE_USER cada vez que se realice una operación de inserción o actualización en la tabla SE_USER, lo cual te permitirá llevar un registro histórico de los cambios en los usuarios.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors