Pythonスクリプト)のアプリケーションシークレット(パスワード、アクセストークン)を保存する最も簡単な方法は何ですか?*.yml
Rubyのようなファイルですが、意外にもそうではないことがわかりました。それでは、それは何ですか?最も簡単な解決策は何ですか?
それらをseparateファイルに入れたいので、そのファイルをgithubリポジトリにプッシュしますnot notになります。
別の* pyファイルに資格情報を保存するのが最も安全だと思います。次に、それをインポートします。例は次のようになります
config.py
username = "xy"
password = "abcd"
main.py
import config
login(config.username, config.password)
私はまったく同じ質問を扱っていて、実際にはkecerが提案したのと同じ解決策になりました。何十ものスクリプトを使用する必要があるため、独自のライブラリを作成しました。この解決策を紹介しましょう。
credlib.py-資格情報を処理するためのユニバーサルライブラリ
class credential:
def __init__(self, hostname, username, password):
self.hostname = hostname
self.username = username
self.password = password
mycredentials.py-すべての資格情報を保存するローカルファイル
from credlib import credential
sys_prod = credential("srv01", "user", "pass")
sys_stg = credential("srv02", "user", "pass")
sys_db = credential("db01", "userdb", "passdb")
mysystemlib.py-これは私のシステムにアクセスするための一般的なライブラリです(新しい認証情報システムとレガシーの両方がサポートされています)
from credlib import credential
def system_login(*args): # this is new function definition
#def system_login(hostname, username, password): # this was previous function definition
if len(args) == 1 and isinstance(args[0], credential):
hostname = args[0].hostname
username = args[0].username
password = args[0].password
Elif len(args) == 3:
hostname = args[0]
username = args[1]
password = args[2]
else:
raise ValueError('Invalid arguments')
do_login(hostname, username, password) # this is original system login call
main.py-資格情報とシステムライブラリを組み合わせるメインスクリプト
from mycredentials import sys_stg, sys_db
import mysystemlib
...
mysystemlib.system_login(sys_stg)
従来のホスト名/ユーザー名/パスワードの方法は引き続き機能するため、古いスクリプトには影響しません。
mysystemlib.system_login("srv02", "user", "pass")
これには多くの利点があります:
.gitignore
経由で除外)に保存されないため、pythonスクリプト/ライブラリは、資格情報を公開せずに他のユーザーと共有できます(誰でも自分のローカルで自分の資格情報を定義します)ファイル)