Giter Site home page Giter Site logo

pg-security's Introduction

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.

pg-security's People

Contributors

ernestomar avatar

Stargazers

Sebastian Francisco Belmonte Cerveró avatar Oscar Campohermoso Berdeja avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.