Los servicios de TI requieren configuración. Parte de la configuración son secretos que no deseas que se expongan. Ejemplos comunes son las credenciales de la base de datos o valores aleatorios que protegen cookies de sesión o credenciales de autenticación. Si estás desarrollando software, las cosas tienden a empeorar con los pipelines de construcción, certificados de distribución y claves de acceso.
Los secretos comprometidos pueden llevar a la toma de control de cuentas de usuario, robo de datos, ataques a la cadena de construcción y otros problemas costosos. La mala reputación, la pérdida de propiedad intelectual y potencialmente enormes honorarios legales son solo una fracción de los posibles costos.
Psono ofrece con la última versión de psonoci entornos protegidos. Los entornos protegidos te permiten ejecutar procesos y configurarlos a través de variables de entorno sin exponerlos al sistema. Estas variables de entorno se cargan de manera segura desde Psono, nunca se almacenan en ningún lugar del servidor y solo se exponen a un solo proceso.
Primero tienes que crear un secreto de variables de entorno. Ten en cuenta que un solo secreto puede contener múltiples variables de entorno para que puedas agrupar variables de entorno por ejemplo por entorno o simplemente porque pertenecen juntas como un usuario de base de datos y una contraseña de base de datos.
Después creas una clave API y permites que esta clave API acceda a tu nuevo secreto de variables de entorno.
Ahora toma nota de los secretos de la clave API, ya que estos parámetros son los únicos parámetros que se exponen directamente al sistema.
Instala psono ci en tu servidor o en tu pipeline de construcción con un solo comando:
curl https://get.psono.com/psono/psono-ci/x86_64-linux/psonoci --output psonoci && chmod +x psonoci
Y en lugar de simplemente ejecutar ./some_command
inicias tu proceso así:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./some_command
Para simplificar, pasamos los parámetros como --api-key-id
o --api-secret-key-hex
como argumentos, pero también puedes
configurar un archivo de configuración en su lugar.
Con fines de demostración creamos este pequeño script en python service.py
que imprime todas las variables de entorno y argumentos que
fueron pasados al script.
#!/usr/bin/python3
import os
import sys
print("args: {}".format(sys.argv))
print("environment: {}".format(os.environ))
En lugar de ejecutar, por ejemplo, ./service.py --whatever=argument_1
podemos ejecutarlo así:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./service.py --whatever=argument_1
Obtenemos la siguiente salida:
args: ['service.py', '--whatever', 'argument_1']
environment: environ({'db_host': 'prd-db.example.com:5432', 'db_password': 'Df55sr2UQm7Wshv7', 'db_username': 'production'})
Como podemos ver, todos los argumentos fueron pasados correctamente y todas las variables de entorno que configuramos anteriormente estaban disponibles para el proceso. Hay banderas disponibles que permiten pasar las variables de entorno normales del sistema también y extenderlas con las de Psono. Se puede encontrar más información detallada en nuestra documentación para psonoci.
Espero que hayas disfrutado de nuestra pequeña excursión demostrando cómo Psono puede ayudar a proteger tu infraestructura. Todo esto no sería posible sin Bernd, la mente maestra detrás de esta característica, ¡así que muchas gracias Bernd!