[PYTHON] Technologie de gestion des mots de passe à l'ère GitHub

Trois solutions de contournement à considérer avant git commit votre mot de passe

GitHub est pratique. Vous pouvez gérer votre propre code source gratuitement. Cependant, avec le plan gratuit, le code source sera publié dans le monde entier. Avec un forfait payant, vous pouvez garder le code source privé pour 7 dollars américains par mois, mais c'est assez cher, donc je pense que peu de gens paient pour cela.

Lors de l'écriture d'un programme qui accède à des ressources externes, je suis invité à écrire le mot de passe dans config. Mais pensez aux événements passés. L'autorité pour créer un serveur cloud est de l'argent. Il y a eu plusieurs cas au Japon où des instances EC2 ont été abusées à des fins d'extraction BitCoin. Est-il vraiment correct d'écrire ce mot de passe dans la configuration?

Dans cet article, nous examinerons les techniques pour bien gérer les mots de passe sans s'engager dans git.

Si vous utilisez la commande aws, essayez la commande suivante

Amazon Web Service fournit des commandes aws pour faciliter l'utilisation de chaque service localement. Si vous l'utilisez, essayez de taper la commande suivante. chat ~ / .aws / informations d'identification

>>> cat ~/.aws/credentials
[default]
aws_access_key_id =  XXXXXXXXXXXXXXXXXXXXXZQ
aws_secret_access_key = XXXXXXXXXXXXXXXXXX8a

Il est enregistré avec un mot de passe brut. Pourquoi? En effet, le simple fait de chiffrer cela ne fera qu'obscurcir et garantir la sécurité. En effet, même s'il est chiffré et enregistré localement, il est déchiffré et envoyé à portée de main au stade de la communication avec AWS et de l'envoi d'une commande, de sorte que techniquement, tout le monde peut facilement le déchiffrer, il est donc logique de le chiffrer. Il n'y a pas.

Comment ne pas enregistrer les mots de passe dans ~ / .aws / credentials

Il semble qu'il puisse être géré en toute sécurité en utilisant ʻexport AWS_CONFIG_FILE = ~ / path / to / aws.confg` et des variables d'environnement. (J'ai appris par un expert interne!)

Référence: HowTo: Install AWS CLI --Security Credentials

Trois façons de ne pas écrire le mot de passe dans le code source

J'ai répertorié trois méthodes: comment utiliser la bibliothèque pit, comment utiliser .gitignore et comment écrire le mot de passe dans la variable d'environnement.

1. Gérez les mots de passe à l'aide de Pit

pit est une bibliothèque de gestion de compte bien connue. La bibliothèque existe en Python Ruby perl. En python, le mot de passe brut est enregistré dans ~ / .pit / default.yaml.

install


pip install pit
export EDITOR="vim"

Exemple d'utilisation,a.py


# -*- coding: utf-8 -*-
from pit import Pit

token = Pit.get('hipchat_v1',
                {'require': {'token': 'your hipchat access token API v1'}})
print(token)

La première fois que vous l'exécutez, Vim démarrera et vous serez invité à entrer votre mot de passe. Le mot de passe que vous entrez est enregistré dans ~ / .pit / default.yaml. スクリーンショット 2015-12-24 17.36.16.png

À partir de la deuxième fois, les résultats suivants seront renvoyés après la saisie du mot de passe.

Résultat d'exécution


>>>python a.py 
{'token': 'your token'}

2. Gérez les mots de passe à l'aide de gitignore et importez

Définissez password.py sur le serveur, définissez-le sur .gitignore et lisez le fichier de configuration.

スクリーンショット 2015-12-24 17.45.05.png

password.py


# -*- coding: utf-8 -*-
PASSWORD = "HOGEHOGE"

production_config.py


# -*- coding: utf-8 -*-
from password.password import *
print(PASSWORD)

Résultat d'exécution


>>> python production_config.py 
HOGEHOGE

3. Gérez les mots de passe avec des variables d'environnement

Il s'agit d'une méthode permettant de définir un mot de passe dans la variable d'environnement et de le lire avec la commande os.env. Pour plus de commodité, vous gérerez votre mot de passe avec .bash_profile.

Réglage du mot de passe


export PASSWORD="aiueo"

production_config.py


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import os

print(os.environ.get('PASSWORD'))

Résultat d'exécution


>>> python production_config.py
aiueo

Recommended Posts

Technologie de gestion des mots de passe à l'ère GitHub
Mesures des entretiens de codage détenus par des étrangers à l'ère du leetcode
Entrez le mot de passe sudo au démarrage dans Fabric
Mettez un mot de passe sur le PDF
Accédez à Github en spécifiant la clé SSH dans GitPython
Extraire chaque emplacement de Stargazers dans le référentiel Github
Connectez-vous à l'écran de gestion fortigate (6.0) à partir de sélénium-essayez de vous déconnecter
Comment se connecter automatiquement comme 1Password depuis CLI
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python