Docker-ComposeとPythonを使ったAPIキーの管理方法
2023-04-14
この技術ブログでは、Docker-ComposeとPythonを利用してAPIキーなどの機密情報をコードに埋め込まずに利用する方法を解説します。この方法を使うことで、セキュリティリスクを減らし、環境ごとの設定の変更が容易になります。
目次
- はじめに
- Docker-Composeのenvironmentについて
- Pythonで環境変数を読み込む方法
- 実践例
- まとめ
1. はじめに
開発中にAPIキーやデータベース接続情報などの機密情報を扱うことがよくあります。これらの情報をソースコードに直接書き込むと、セキュリティリスクや環境ごとの設定変更の手間が増えるため、適切な方法で管理することが重要です。この記事では、Docker-ComposeとPythonを利用して機密情報を環境変数として扱う方法を紹介します。
2. Docker-Composeのenvironmentについて
Docker-Composeを使ってコンテナを管理する際、環境変数を設定することができます。これにより、コードから機密情報を分離し、環境ごとの設定変更も容易になります。Docker-Composeのenvironmentを利用する方法は以下の2つがあります。
2.1. docker-compose.ymlファイル内で環境変数を定義する
docker-compose.ymlファイル内にenvironmentセクションを追加することで、環境変数を定義できます。例えば、以下のように記述します。
version: '3.8'
services:
app:
image: python:3.8
environment:
API_KEY: your_api_key_here
ただし、この方法ではAPIキーや機密情報がdocker-compose.ymlファイル内に直接書かれてしまうため、別の方法が推奨されます。
2.2. .envファイルを使って環境変数を定義する
.envファイルを使って環境変数を定義する方法が推奨されます。この方法では、環境変数を記述した.envファイルを作成し、docker-compose.ymlファイルと同じディレクトリに配置します。例えば、以下のように.envファイルを作成します。
API_KEY=your_api_key_here
そして、docker-compose.ymlファイル内でenv_fileオプションを使って、.envファイルを指定します。
version: '3.8'
services:
app:
image: python:3.8
env_file: .env
この方法を使うことで、機密情報がdocker-compose.ymlファイルに直接書かれず、.envファイルとして分離されるため、セキュリティリスクを軽減できます。また、.envファイルは次のように.gitignoreに追加してバージョン管理から除外することが推奨されます。
.env
3. Pythonで環境変数を読み込む方法
Pythonでは、osモジュールを使って環境変数を読み込むことができます。以下の例では、先ほど設定したAPI_KEY環境変数を読み込んでいます。
import os
api_key = os.environ['API_KEY']
print("API Key:", api_key)
環境変数が存在しない場合にエラーを回避するため、os.environ.get()メソッドを使うことが推奨されます。このメソッドを使うと、環境変数が存在しない場合にデフォルト値を返すことができます。
api_key = os.environ.get('API_KEY', 'default_value')
4. 実践例
以下に、Docker-ComposeとPythonを使ってAPIキーを環境変数として扱う例を示します。
- .envファイルを作成し、APIキーを設定します。
API_KEY=your_api_key_here
- docker-compose.ymlファイルを作成し、env_fileオプションで.envファイルを指定します。
version: '3.8'
services:
app:
image: python:3.8
env_file: .env
volumes:
- .:/app
working_dir: /app
command: python app.py
- Pythonスクリプト(app.py)を作成し、APIキーを環境変数から読み込みます。
import os
api_key = os.environ['API_KEY']
print("API Key:", api_key)
- Docker-Composeを使ってコンテナを起動します。
docker-compose up
これにより、app.pyが実行され、APIキーが環境変数から読み込まれます。
5. まとめ
この記事では、Docker-ComposeとPythonを使ってAPIキーや機密情報を環境変数として扱う方法を解説しました。Docker-Composeのenvironmentやenv_fileオプションを使って、機密情報をソースコードから分離し、環境変数として管理することで、セキュリティリスクを減らし、環境ごとの設定の変更が容易になります。Pythonでは、osモジュールを使って環境変数を読み込むことができます。
今後の開発では、この方法を活用して、APIキーや機密情報の管理を効果的に行ってください。
タグ
そらえふ
ソフトウェアエンジニア。趣味は競馬、写真、ゲーム。
お問い合わせはXのDMでお願いします。