Este proyecto tiene como objetivo realizar el cifrado y la transferencia de informaci贸n mediante el uso de librerias pgp y servicios GCP, estandarizando el proceso para el uso en multicloud.

Overview

DOCUMENTACION PROYECTO 馃幆 :octocat:

Proyecto desarrollado con el fin de modernizar el proceso de cifrado y descifrado de archivos haciendo uso de la librer铆a pgp free llamada gnupg o gpg.

1. Nombre 馃捇

Cifrado y Decifrado de Archivos con OpenPGP

2. Descripci贸n 馃搼

Este proyecto tiene como objetivo reemplazar la arquitectura actual de cifrado mediante cryptovault, modernizando el cifrado y la transferencia de informaci贸n mediante el uso de librerias pgp, estandarizando el proceso para el uso en multicloud.

3. Instalaci贸n 馃З

Usamos el package manager pip para instalar la libreria pgp.

pip install python-gnupg

Instalar en el entorno virtual las herramientas google.

pip install --upgrade google-cloud-storage

pip install google-cloud-secret-manager

Actualizar las herramientas de python instaladas.

pip install --upgrade setuptools

4. Despliegue Cloud Functions: 鉁嶏笍

  1. Creaci贸n del trigger "activador".

    1.1 Creaci贸n de Topicos Pub/Sub para crear los trigger de las funciones de cifrado y descifrado.

    gcloud pubsub topics create projects/gcp-st-transit-multi-cloud/topics/gcp-st-tmc-trigger-to-encrypt
    
    gcloud pubsub topics create projects/gcp-st-transit-multi-cloud/topics/gcp-st-tmc-trigger-to-decrypt

    1.2 Crear la notificaci贸n asociada al topico del Pub/Sub creado en el paso anterior.

    gsutil notification create -f json -t projects/gcp-st-transit-multi-cloud/topics/gcp-st-tmc-trigger-to-encrypt -p export-lab-digital -e OBJECT_FINALIZE -e OBJECT_METADATA_UPDATE gs://export-zone-cds
    
    gsutil notification create -f json -t projects/gcp-st-transit-multi-cloud/topics/gcp-st-tmc-trigger-to-decrypt -p import-lab-digital -e OBJECT_FINALIZE -e OBJECT_METADATA_UPDATE gs://gcp-aws-import-zone
  2. Crear los secretos subiendo las llaves publica y privada de pgp (Area llaves y criptogramas).

gcp-st-tmc-gpg-pb
gcp-st-tmc-gpg-pv
  1. Creaci贸n de la service_accounts.

    3.1 Asignar permisos de multiproyecto.

Agente de servicio de Cloud Functions
Usuario de cuenta de servicio
3.2 Asignar permisos en los servicios.
Administrador de objetos de Storage
Usuario con acceso a secretos de Secret Manager
Visualizador del administrador de secretos
  1. Creaci贸n de las Cloud Functions: :electron:

    Nota: El cifrado tendra un topico de Pub/Sub activador y una cloud functions y el decifrado tendra otro topico de Pub/Sub activador y una cloud functions respectivamente.

    4.1 Para el despliegue en cloud functions se utiliza la versi贸n de python 3.9 de lo contrario no logra instalar las librerias declaradas en el archivo requirements.txt

    4.2 Subir solo los scripts usados mediante importaci贸n de librerias en los main de cifrado y descifrado.

    4.3 En el despliegue de la cloud functions debe remplazar los scripts main_cloud_encrypt.py y main_cloud_decrypt.py por main.py y con punto de entrada main respectivamente.

    4.4 Deshabilitar la opci贸n de reintento en caso de error.

    4.5 Usar una memoria de 512 MB (Depende del tama帽o de archivos a procesar).

    4.6 Usar instancias de 1 a 100.

    4.7 Usar tiempo de espera de 60 segundos.

    4.8 Usar la service_accounts habilitada para usarse en los proyectos de GCP (ver punto 3).

    4.9 Crear variables de entorno.

    #email de la key pgp a usar
    export NAME_EMAIL= '[email protected]'
    
    #path de la ubicaci贸n del json service_accounts
    export GOOGLE_APPLICATION_CREDENTIALS='C:\Users\crist\OneDrive\Escritorio\Proyectos\BdB\service_accounts\gcp-st-transit-multi-cloud-a2191790c572.json'--linux
    
    #Id de los proyectos gcp
    export PROJECT_ID_A='gcp-st-transit-multi-cloud'
    export PROJECT_ID_B='gcp-de-cds'
    
    #nombre del bucket cloud function cifrar
    export BUCKET_TO_ENCRYPT_IN='export-zone-cds'
    export BUCKET_ENCRYPTED_OUT='gcp-aws-export-zone'
    export BUCKET_TO_ENCRYPT_OLD='export-zone-cds-backup'
    
    #nombre del bucket cloud function decifrar
    export BUCKET_TO_DECRYPT_IN='gcp-aws-import-zone'
    export BUCKET_DECRYPTED_OUT='import-zone-cds'
    export BUCKET_TO_DECRYPT_OLD='gcp-aws-import-zone-backup'
    
    #Id del proyecto donde esta el SM
    export ID_PROJECT_SECRET='553319150162'
    
    #Id del secreto publico
    export SECRET_ID_PB= 'gcp-st-tmc-gpg-pb'
    #Id del secreto privado
    export SECRET_ID_PV='gcp-st-tmc-gpg-pv'
    #password de la key pgp privada
    export SECRET_ID_PSW='gcp-st-tmc-gpg-psw'
    
    #Usuario
    export CLIENT='import-lab-digital' #'import-adl'

    4.10. Verificar existencia de las variables de entorno creadas:

    echo $NAME_EMAIL

    Nota: Si no se crean estas variables de entorno el sistema arrojara el siguiente error.

    TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
    
    TypeError: str expected, not NoneType

5. L贸gica del Desarrollo: :electron:

./app/main_onprimese_encrypt.py

Este scrypt es el que se desplegara en onprimese, el cual cumple con la funci贸n de listar todos los archivos planos con extensi贸n .txt o .csv que se encuentren en los diferentes subniveles de carpetas de la carpeta ./in. Una vez se listan los archivos se invoca la funci贸n de encriptaci贸n la cual toma la llave pgp declarada y cifra los archivos y los almacena en la carpeta ./encrypted para su posterior trasferencia al bucket del cloud.

./app/main_cloud_decrypt.py

Este scrypt es el que se desplegara en cloud, el cual cumple con la funci贸n de acceder al secreto que contiene la llave privada, posteriormente invoca la funci贸n de importaci贸n de la llave capturada y realiza la intalaci贸n de esta en el llavero con su respectivo certificado de confianza. Luego se genera el listado de los archivos encriptados con extensi贸n .pgp o .gpg que se encuentren en los diferentes subniveles de carpeta en el bucket activador BUCKET_TO_DECRYPT_IN. Una vez se listan los archivos se invoca la funci贸n de desencripci贸n la cual toma la llave pgp declarada junto con el passphrase y descifra los archivos y los almacena en la carpeta BUCKET_DECRYPTED_OUT alojada en el bucket del cloud. El archivo original es movida a la carpeta BUCKET_TO_DECRYPT_OLD limpiando la capeta in.

Nota: Este scrypt en el despliegue de la cloud functions debe remplazarce por main.py y con punto de entrada main.

./app/main_cloud_encrypt.py

Este scrypt es el que se desplegara en cloud, el cual cumple con la funci贸n de acceder al secreto que contiene la llave publica, posteriormente invoca la funci贸n de importaci贸n de la llave capturada y realiza la intalaci贸n de esta en el llavero con su respectivo certificado de confianza. Luego se genera el listado de los archivos en claro que se encuentren en los diferentes subniveles de carpeta en el bucket activador BUCKET_TO_ENCRYPT_IN. Una vez se listan los archivos se invoca la funci贸n de encripci贸n la cual toma la llave pgp declarada y cifra los archivos y los almacena en la carpeta BUCKET_ENCRYPTED_OUT alojada en el bucket del cloud. El archivo original es movida a la carpeta BUCKET_TO_ENCRYPT_OLD limpiando la capeta in.

Nota: Este scrypt en el despliegue de la cloud functions debe remplazarce por main.py y con punto de entrada main.

6. Roadmap - Ideas 馃帰

  • Realizar un desarrollo con programaci贸n orientada a objetos.

  • Cambiar las variables quemadas en codigo por variables de entorno.

  • Realizar un desarrollo para ejecuci贸n en Onprimese y Cloud.

  • Implementar consumo de llaves alojadas en secret manager de gcp.

  • Interacci贸n de servicios multiproyecto.

  • Generar integraci贸n para pruebas unitarias.

7. Autor 馃鈥嶐煉

Cristian Beltr谩n -- Data Engineer

8. Referencias 馃摎

SaltyCrane Blog (2012). saltycrane.com

Python Hosted (2017). pythonhosted.org

It's Foss (2021). itsfoss.com

Read the Docs (2022). gnupg.readthedocs.io

9. Estado del Proyecto - Fases Devops 馃毀

  • Fase de Planeaci贸n (Entendimiento del brief. Roadmap)
  • Fase de Construcci贸n (Generaci贸n de Dise帽o y C贸digo del desarrollo)
  • Fase de Integraci贸n Continua (Testeo, calidad con sonar. Pruebas unitarias)
  • Fase de Implementaci贸n o Despliegue continuo (Instalaci贸n en los ambientes qa, staging, production con github actions)
  • Fase de Gestionar
  • Fase de Feedback Continuo (Retroalimentaci贸n Cliente y Usuario)
You might also like...

En este repositorio encontraran el desarrollo metodol贸gico para estimar, a trav茅s de Machine Learning, la demanda de 50 items en los pr贸ximos 7 d铆as en 10 tiendas

En este repositorio encontraran el desarrollo metodol贸gico para estimar, a trav茅s de Machine Learning, la demanda de 50 items en los pr贸ximos 7 d铆as en 10 tiendas

Predicci贸n de la demanda de m煤ltiples 铆tems El poder predecir de forma precisa la demanda de cierto producto es de gran inter茅s para el Retail o empre

May 24, 2022

Hola chicos en este repositorio encontraran el codigo fuente para crear un algoritmo de reconocimiento de documentos de identidad.

Hola chicos en este repositorio encontraran el codigo fuente para crear un algoritmo de reconocimiento de documentos de identidad.

Reconocimiento-de-DNI-con-Python Hola chicos en este repositorio encontraran el codigo fuente para crear un algoritmo de reconocimiento de documentos

Oct 28, 2022

Obt茅n la informaci贸n de un numero de tel茅fono con DoxPhone

DoxPhone Este es un script creado en python3, muy 煤til para conocer informaci贸n p煤blica sobre un n煤mero de tel茅fono, as铆 como para saber si el n煤mero

May 10, 2022

Sistema que se conecta a un base de datos y crea una grafica con la informaci贸n obtenida

About this program This project requires a Pytohn 3.X version and a database called mibase with 3 tables. If you want to change the databases, you nee

Feb 22, 2022

codigo para expandir endere莽os IPV6 para sua forma de 32 bytes e de forma reversa para DNS.

codigo para expandir endere莽os IPV6 para sua forma de 32 bytes e de forma reversa para DNS.

codigo para expandir IPV6 codigo facilitador para ultilizar Ipv6, e reduzindo o tempo necessario para realizar sua expans茫o. alem da expens茫o, esse co

Nov 1, 2022

Micro-servi莽o respos谩vel por realizar a l贸gica relacionada a localidades do Schedula

gerenciador-de-localidades Micro-servi莽o respons谩vel por realizar a l贸gica relacionada a localidades do Schedula Integrantes Matricula Membro Discipli

Aug 19, 2022

Sistema constru铆do com o objetivo de controlar os patrimonios m贸veis de cada promotoria da comarca de Londrina do Minist茅rio p煤blico do Paran谩.

Sistema de Gest茫o de Patrim么nio Sistema constru铆do para a coordena莽茫o administrativa da comarca de Londrina do Minist茅rio P煤blico do Paran谩. O sistema

Nov 2, 2022

Objetivo desse reposit贸rio e ajudar alunos aprendendo l贸gica de programa莽茫o imperativa com Python a praticarem a validarem seu conhecimento.

Projeto de resolu莽茫o de exerc铆cio Python Brasil Objetivo desse reposit贸rio 茅 ajudar alunos aprendendo l贸gica de programa莽茫o imperativa com Python a pr

Nov 24, 2022
Owner
Cristian Beltr谩n
Systems Engineer || Data Engineer || Developer Python, Spark, Bash, SQL || GCP, AWS || Student Platzi || Student Unad
Cristian Beltr谩n
PROYECTO TECNOL脫GICO INTEGRADOR 2022 PROYECTO GAMA

BIENVENIDOS AL GRUPO CCCC4 - AULA 4 - COHORTE 2022 TECNICATURA EN CIENCIAS DE DATOS E INTELIGENCIA ARTIFICIAL PROYECTO TECNOL脫GICO INTEGRADOR 2022 - P

null 1 Nov 16, 2022
Blaze Double Web Scraper - Tem como objetivo coletar e salvar no banco de dados os resultados do Blaze Double.

Billy-Blaze Web Scraper escrito em python utilizando selenium web driver. Tem como objetivo automatizar a coleta dos resultados do jogo Double, gravan

Omlad Alan 5 Oct 26, 2022
Codigo Facilito - Curso para crear servicios web con Python y FastAPI

CCF_FastApi Codigo Facilito - Curso para crear servicios web con Python y FastAPI Author @Eduardo_Onetto C贸mo se usa Entendiendo un Cliente-Servidor e

Eduardo Onetto 1 Sep 1, 2022
Reposit贸rio para demonstrar uso de action para Deploys Autom谩ticos no Heroku

Reposit贸rio para demonstrar uso de action para Deploys Autom谩ticos no Heroku Expliquei com mais detalhes o processo realizado aqui. Link da aplica莽茫o

Victor Augusto 3 May 13, 2022
TECcrBot (TCRB) es un bot de telegram dedicado a proporcionar informaci贸n y utilidades para los integrantes de la comunidad TEC

TECcrBOT Descripci贸n TECcrBot (TCRB) es un bot de Telegram dedicado a proporcionar informaci贸n y utilidades a los integrantes de la comunidad del ITCR

Alejandro D.P 4 Sep 29, 2022
Integra莽茫o do toolkit openCv com a framework django para realizar reconhecimento facial com ml

OpenCV-Django Integration of the openCv toolkit with the django framework to perform facial recognition with ml (the project isnt done yet, but the co

Thiago Santos 2 Jun 18, 2022
Repositorio para proyecto final Programaci贸n Aplicada 2020-2 Universidad Santo Tomas.

@Proyecto desarrollado en python *Universidad Santo Tomas. *Programacion Aplicada 2020-2. *Prof:Jhon Cardozo. Scrumming Este proyecto satisface los us

Brallan Laverde 1 Jul 25, 2022
Backend para el proyecto de Hospitalizaci贸n en casa trabajado en el marco del ciclo 3 del programa Misi贸n TIC. 2022.

be_hospitalEnCasa Backend para el proyecto de Hospitalizaci贸n en casa trabajado en el marco del ciclo 3 del programa Misi贸n TIC. 2022. Tecnolog铆as: Py

Tutor 16 - Misi贸n Tic 3 Oct 27, 2022
Hola chicos en este repositorio encontraran el codigo fuente para crear una camara inteligente con inteligenica artificial.

Seguimiento Automatico de Rostros con IA Hola chicos en este repositorio encontraran el codigo fuente para yomar una camara usb, un servomotor y un ar

Santiago Sanchez Rios 6 Oct 27, 2022
En este repositorio encontraran el desarrollo metodol贸gico para identificar, a trav茅s de Machine Learning, aquellos clientes m谩s propensos a fugarse en el pr贸ximo mes

Fuga de clientes (I parte: Desarrollo del modelo) La fuga de clientes es una de las principales problem谩ticas que puede enfrentar una empresa, tema qu

null 1 May 5, 2022