Python プログラミング

APIキーを外部の設定ファイルで安全に管理する方法

2023年8月24日

広告

背景

普段Pyhon使う際にAPIキーを直接Jupyter labに入力してしまっていたのですが、セキュリティ的に良くないので直していこうと思います。

ChatGPTに設定方法を聞いてみたので試してみました。

APIキーを外部の設定ファイルで安全に管理する方法

APIキーは、アプリケーションやウェブサービスが外部サービスにアクセスするための重要な資格情報です。これを適切に管理することは、セキュリティ上の要件として不可欠です。この記事では、APIキーを外部の設定ファイル、特にconfig.iniに保存する方法とその利点について詳しく解説します。

1. キーの参照に外部ファイルを使う理由

APIキーを直接コードに埋め込むのは、多くのリスクを伴います。ソースコードが公開されたり、第三者に漏洩した場合、APIキーも同時に公開される可能性があります。外部の設定ファイルにAPIキーを保存することで、このリスクを大幅に軽減できます。また、APIキーの変更や更新が必要な場合、設定ファイルのみを変更すれば良いため、メンテナンスも容易です。

2. キーの参照に外部ファイルを使わないリスク

  • セキュリティの脆弱性: コード内にAPIキーが明文で存在すると、不正アクセスや不正利用のリスクが高まります。
  • メンテナンスの困難さ: APIキーの変更や更新が必要な場合、コードの変更が必要となります。
  • バージョン管理の問題: ソースコードのバージョン管理ツールにAPIキーが含まれると、履歴にもキーが残ります。

3. 外部の設定ファイルを使用する際の流れ

  1. config.iniという名前の設定ファイルを作成します。
  2. このファイルにAPIキーを保存します。
  3. Pythonのconfigparserモジュールを使用して、設定ファイルからAPIキーを読み込みます。

4. 使用するライブラリの説明とインポートの方法

configparserは、Pythonの標準ライブラリの一部であり、INI形式の設定ファイルを読み書きするためのモジュールです。INI形式は、セクションとキー/値のペアを持つシンプルなテキストベースの設定ファイル形式です。

Pythonでconfigparserを使用するには、以下のようにインポートします。

import configparser

5. configparserを用いたconfig.iniの作成方法

config.iniの作成方法ですが2パターン紹介します。

  1. テキストエディタを使用して手動で作成する
  2. configparserを用いてPythonで作成する

1.テキストエディタを使用して手動で作成する

テキストエディタを開き、以下の内容をconfig.iniとして保存します。

[DEFAULT]
API_KEY = あなたのAPIキー

2.configparserを用いてPythonで作成する

  1. まず、configparserモジュールをインポートします。
import configparser
  1. ConfigParserオブジェクトを作成します。
config = configparser.ConfigParser()
  1. 必要なセクションとキー/値のペアを追加します。
config['DEFAULT'] = {'API_KEY': 'あなたのAPIキー'}

#複数のAPIキーを一度に作成したい場合
#同一セクションの場合
config['DEFAULT'] = {
    'API_KEY1': 'あなたのAPIキー1',
    'API_KEY2': 'あなたのAPIキー2'
}

#異なるセクションの場合
config['SERVICE1'] = {'API_KEY': 'あなたのAPIキー1'}
config['SERVICE2'] = {'API_KEY': 'あなたのAPIキー2'}
  1. 設定ファイルを書き出します。この例では、config.iniという名前のファイルに書き出しています。
with open('config.ini', 'w') as configfile:
    config.write(configfile)

上記のコードを実行すると、カレントディレクトリにconfig.iniという名前のファイルが作成され、その中に以下の内容が保存されます。

[DEFAULT]
API_KEY = あなたのAPIキー

この方法を使用すると、プログラム上で動的に設定ファイルを作成・更新することができます。特に、複数の設定ファイルを自動的に生成する必要がある場合や、設定の内容をプログラム上で変更する場合に便利です。

6. Pythonでのconfig.iniの読み込み方法

  • 同じディレクトリにある場合:
import configparser
config = configparser.ConfigParser()
config.read('config.ini')
api_key = config['DEFAULT']['API_KEY']
  • 異なるパスにある場合:
import configparser
config = configparser.ConfigParser()
config.read('C:\\path\\to\\your\\config.ini')  # 実際のパスに置き換えてください
api_key = config['DEFAULT']['API_KEY']

まとめ

APIキーの管理は、アプリケーションのセキュリティを確保するための重要なステップです。外部の設定ファイルを使用することで、APIキーを安全に、かつ効率的に管理することができます。この方法を採用することで、APIキーの漏洩リスクを大幅に減少させることができます。

-Python, プログラミング