PythonからWindows資格情報マネージャーを利用したい

Python

はじめに

何かしらの認証を必要とする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資格情報マネージャーの起動方法

  1. 「スタート」をクリックし「設定」をクリックする。
  2. 設定の検索で「資格情報」を入力する。
  3. 選択項目から「資格情報マネージャー」をクリックする

コメント

タイトルとURLをコピーしました