はじめに
何かしらの認証を必要とするPythonのプログラムを作成する際、プログラムの中にパスワードを直書きしていました。セキュアなプログラムを作成するために、パスワードを記載した設定ファイルを作成し、その設定ファイルを読み込むことで、パスワードの直書きを回避できることを学びました。また、設定ファイルのアクセス権限を設けることで、一定のセキュリティを担保できることを学びました。
ふと、下記について考えが浮かびました
- 設定ファイルのアクセス権限更新で作業ミスしたら。。。
- よりセキュアな方法でパスワードを管理できないか。
Windowsの資格情報マネージャーを利用してパスワードを管理できないか。
そこにパスワードを保存して、必要に応じて取り出せないか。
調べたところ、keyringライブラリを使用することで実現できることが判りました。
keyringの使い方について整理しました。
準備
keyringライブラリは、pipを使用してインストールすることができます。
pip install keyring
プログラム
Windows資格情報マネージャーにパスワードを保存する
保存するコードは下記となります。
# ライブラリを読み込む
import keyring
# 汎用資格情報にサービス名、ユーザ名、パスワードを保存する
keyring.set_password('keyring-test', 'test', 'test-passwd')
上記プログラムを実行すると、Windows資格情報マネージャーの「汎用資格情報」に情報を登録できます。パスワードを保存する際に必要な情報は、サービス名+ユーザ名+パスワードの3つです。
keyring.set_passwordで設定する引数は下記の通りです。
- 第1引数:サービス名
- 第2引数:ユーザ名
- 第3引数:パスワード
<登録結果>
赤枠で囲った箇所に登録したパスワード情報が記載されています。
Windows資格情報マネージャーからパスワードを取得する
取得するコードは下記となります。
# ライブラリを読み込む
import keyring
# 汎用資格情報から指定したサービス名、ユーザ名のパスワードを取得する
password = keyring.get_password('keyring-test', 'test')
# 取得したパスワードを表示する
print(password)
実行結果
'test-passwd'
パスワードを取得する際に必要な情報は、サービス名+ユーザ名の2つです。
keyring.get_passwordで設定する引数は下記の通りです。
- 第1引数:サービス名
- 第2引数:ユーザ名
Windows資格情報マネージャーからサービス名を削除する
削除するコードは下記となります。
# ライブラリを読み込む
import keyring
# 汎用資格情報から指定したサービス名、ユーザ名のパスワードを取得する
keyring.delete_password('keyring-test', 'test')
パスワードを削除する際に必要な情報は、サービス名+ユーザ名の2つです。
keyring.delete_passwordで設定する引数は下記の通りです。
- 第1引数:サービス名
- 第2引数:ユーザ名
参考:Windows資格情報マネージャーの起動方法
- 「スタート」をクリックし「設定」をクリックする。
- 設定の検索で「資格情報」を入力する。
- 選択項目から「資格情報マネージャー」をクリックする
コメント