[PYTHON] Technologie zur Verwaltung von Passwörtern in der GitHub-Ära

Drei Problemumgehungen, die Sie berücksichtigen müssen, bevor Sie Ihr Passwort festlegen

GitHub ist praktisch. Sie können Ihren eigenen Quellcode kostenlos verwalten. Mit dem kostenlosen Plan wird der Quellcode jedoch für die Welt freigegeben. Mit einem kostenpflichtigen Plan können Sie den Quellcode für 7 US-Dollar pro Monat privat halten, aber er ist ziemlich teuer, daher denke ich, dass nur wenige Leute dafür bezahlen.

Wenn ich ein Programm schreibe, das auf externe Ressourcen zugreift, muss ich das Passwort in config schreiben. Aber denken Sie an vergangene Ereignisse. Die Autorität zum Erstellen eines Cloud-Servers ist Geld. In Japan gab es mehrere Fälle von nicht autorisierter Verwendung von EC2-Instanzen für BitCoin-Mining-Zwecke. Ist es wirklich in Ordnung, dieses Passwort in config zu schreiben?

In diesem Artikel werden Techniken zum guten Verwalten von Passwörtern beschrieben, ohne sich auf Git festzulegen.

Wenn Sie den Befehl aws verwenden, versuchen Sie den folgenden Befehl

Amazon Web Service bietet aws-Befehle, um die lokale Verwendung jedes Dienstes zu vereinfachen. Wenn Sie es verwenden, geben Sie den folgenden Befehl ein. cat ~ / .aws / credentials

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

Es wird mit einem unformatierten Passwort gespeichert. Warum? Dies liegt daran, dass durch einfaches Verschlüsseln die Sicherheit nur verschleiert und garantiert wird. Denn selbst wenn es lokal verschlüsselt und gespeichert wird, wird es in der Phase der Kommunikation mit AWS und des Sendens eines Befehls entschlüsselt und sofort gesendet, sodass technisch jeder es leicht entschlüsseln kann. Daher ist es sinnvoll, es zu verschlüsseln. Es gibt kein.

So zeichnen Sie Passwörter nicht in "~ / .aws / credentials" auf

Es scheint, dass es sicher verwaltet werden kann, indem export AWS_CONFIG_FILE = ~ / path / to / aws.confg und Umgebungsvariablen verwendet werden. (Ich wurde von einem internen Experten unterrichtet!)

Referenz: HowTo: Installieren von AWS CLI - Sicherheitsanmeldeinformationen

Drei Möglichkeiten, das Passwort nicht in den Quellcode zu schreiben

Ich habe drei Methoden aufgelistet: Verwendung der Pit-Bibliothek, Verwendung von .gitignore und Schreiben des Kennworts in die Umgebungsvariable.

1. Verwalten Sie Passwörter mit pit

pit ist eine bekannte Account Management Bibliothek. Die Bibliothek existiert in Python Ruby Perl. In Python wird das unformatierte Passwort in ~ / .pit / default.yaml gespeichert.

install


pip install pit
export EDITOR="vim"

Anwendungsbeispiel,a.py


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

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

Wenn Sie es zum ersten Mal ausführen, wird Vim gestartet und Sie werden zur Eingabe Ihres Kennworts aufgefordert. Das eingegebene Passwort wird in ~ / .pit / default.yaml gespeichert. スクリーンショット 2015-12-24 17.36.16.png

Ab dem zweiten Mal werden nach Eingabe des Passworts die folgenden Ergebnisse zurückgegeben.

Ausführungsergebnis


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

2. Verwalten Sie Passwörter mit gitignore und importieren Sie sie

Setzen Sie password.py auf dem Server, setzen Sie es auf .gitignore und lesen Sie aus der conf-Datei.

スクリーンショット 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)

Ausführungsergebnis


>>> python production_config.py 
HOGEHOGE

3. Verwalten Sie Kennwörter mit Umgebungsvariablen

Dies ist eine Methode zum Festlegen eines Kennworts in der Umgebungsvariablen und zum Lesen mit dem Befehl os.env. Der Einfachheit halber verwalten Sie Ihr Passwort mit ".bash_profile".

Passworteinstellung


export PASSWORD="aiueo"

production_config.py


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

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

Ausführungsergebnis


>>> python production_config.py
aiueo

Recommended Posts

Technologie zur Verwaltung von Passwörtern in der GitHub-Ära
Codierungsinterviews in ausländischem Besitz in der Leetcode-Ära
Geben Sie das sudo-Passwort beim Start in Fabric ein
Geben Sie ein Passwort in das PDF ein
Greifen Sie auf Github zu, indem Sie den SSH-Schlüssel in GitPython angeben
Extrahieren Sie jeden Standort aus Stargazers im Github-Repository
Melden Sie sich von Selenium aus beim Fortigate (6.0) -Verwaltungsbildschirm an, um sich abzumelden
So melden Sie sich automatisch wie 1Password von der CLI an
Spielen Sie mit dem Passwortmechanismus von GitHub Webhook und Python