Les services informatiques nécessitent une configuration. Une partie de cette configuration comprend des secrets que vous ne voulez pas voir exposés. Des exemples courants sont les identifiants de base de données ou des valeurs aléatoires qui protègent les cookies de session ou les identifiants d'authentification. Si vous développez des logiciels, les choses tendent à empirer avec les pipelines de build, les certificats de distribution et les clés d'accès.
Les secrets compromis peuvent conduire à des prises de contrôle de comptes utilisateurs, des vols de données, des attaques de chaîne de build et d'autres problèmes coûteux. Une mauvaise réputation, la perte de propriété intellectuelle et des frais juridiques potentiellement énormes ne sont qu'une fraction des coûts possibles.
Psono offre avec la dernière version de psonoci des environnements protégés. Les environnements protégés vous permettent d'exécuter des processus et de les configurer via des variables d'environnement sans les exposer au système. Ces variables d'environnement sont chargées de manière sécurisée depuis Psono, jamais stockées nulle part sur le serveur et sont uniquement exposées à un seul processus.
Tout d'abord, vous devez créer un secret de variables d'environnement. Veuillez noter qu'un seul secret peut contenir plusieurs variables d'environnement, vous pouvez donc regrouper les variables d'environnement par exemple par environnement ou simplement parce qu'elles vont ensemble comme un utilisateur de base de données et un mot de passe de base de données.
Ensuite, vous créez une clé API et permettez à cette clé API d'accéder à votre nouveau secret de variables d'environnement.
Prenez maintenant note des secrets de la clé API, car ces paramètres sont les seuls paramètres directement exposés au système.
Installez psono ci sur votre serveur ou dans votre pipeline de build avec une seule commande :
curl https://get.psono.com/psono/psono-ci/x86_64-linux/psonoci --output psonoci && chmod +x psonoci
Et au lieu de simplement exécuter ./some_command
, vous lancez votre processus comme ceci :
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./some_command
Pour plus de simplicité, nous passons les paramètres comme --api-key-id
ou --api-secret-key-hex
en tant qu'arguments, mais vous pouvez également configurer un fichier de configuration à la place.
À des fins de démonstration, nous avons créé ce petit script python service.py
qui imprime toutes les variables d'environnement et les arguments passés au script.
#!/usr/bin/python3
import os
import sys
print("args: {}".format(sys.argv))
print("environment: {}".format(os.environ))
Au lieu d'exécuter par exemple ./service.py --whatever=argument_1
, nous pouvons l'exécuter comme ceci :
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
Nous obtenons la sortie suivante :
args: ['service.py', '--whatever', 'argument_1']
environment: environ({'db_host': 'prd-db.example.com:5432', 'db_password': 'Df55sr2UQm7Wshv7', 'db_username': 'production'})
Comme nous pouvons le voir, tous les arguments ont été correctement passés et toutes les variables d'environnement que nous avons configurées précédemment étaient disponibles pour le processus. Il existe des indicateurs qui vous permettent de passer les variables d'environnement système normales aussi et de les étendre avec celles de Psono. Plus d'informations détaillées peuvent être trouvées ici dans notre documentation pour psonoci.
J'espère que vous avez apprécié notre petite excursion démontrant comment Psono peut aider à protéger votre infrastructure. Tout cela ne serait pas possible sans Bernd, le cerveau derrière cette fonctionnalité, alors merci beaucoup Bernd !