【Tips】APIキーとシークレットキーの保管方法

こんにちは、minaulです。
最近は主にbotの開発など(結果が出なくて沼ってます泣)に追われて中々記事を書く機会が取れないのですが、今回は初心者の方に向けてAPIキー・シークレットキーの管理方法のTips記事を簡単に書いてみたいと思います。

はじめに


みなさんAPIキーの管理はどうしてますか?
ローカルで開発してると、面倒くて平文のままで書いてませんか?
筆者もそういうのには正直疎いですが、少なくとも平文でベタ書きはよくないと思います。

と言われても、じゃあどうすればいいんじゃいということで、筆者がローカル環境で実際にやってる、比較的簡単な一例を紹介したいと思います。

今回紹介する管理法は、環境変数を利用してAPIキーを管理します。


環境変数を利用した管理方法


環境変数とは、プログラム外で値が割り振られる変数のことを言います。
つまり、メインのファイルと独立した外部ファイルから環境変数として、APIキーを読み取ることで管理することになります。
ここではPythonを使って書いています。

具体的な手順は以下の通りです。

1. .envファイルにAPIキーとシークレットキーを記述する
2. dotenvを使って.envファイルの環境変数を取得する.pyファイルを作成する
3. メインで使う.pyファイルに2の.pyファイルをインポートすることで、APIキーとシークレットキーを取得する

ざっくりとしたイメージ図はこんな感じです。

ファイル間を繋げるイメージ

以下、参考にしたサイトを貼っておきます。

上記サイトは様々な管理方法を紹介している記事です。ここでは、3. 環境変数に書くにあたります。

基本的には上記の記事を参考にさせて頂きました。


1. .envファイルにAPIキー・シークレットキーを記述する


まずは、.envファイルを用意します。
.envファイルは、環境変数を記述するためのファイル形式です。
ここでは例えば、key.envというファイル名にして作成したとします。

key.envに以下のようにAPIキーとシークレットキーを記述します。

api_key = '************'
secret_key = '************'

'*****'のところに各自発行されているAPIキーとシークレットキーを記述します。

初心者向けのため一応言いますが、APIキーなどは各取引所から所定の方法で発行できますので、持っていない方はまず発行しに行きましょう。


2. dotenvを使って.envファイルの環境変数を取得する.pyファイルを作成する


.envファイルを読み込むために、dotenvを使います。
今回の使用言語はPythonを想定しているため、ここではpython-dotenvを使います。
python-dotenvモジュールはpipでインストールできます。

$ pip install python-dotenv

.envファイルのパスを取得するために、osモジュールもインポートします。
こちらは標準ライブラリのため、インストールする必要はありません。

上記一連の流れをまとめたsettings.pyファイルを以下のように定義します。

import os
from os.path import join, dirname
from dotenv import load_dotenv

dotenv_path = join(dirname(__file__), 'key.env')
load_dotenv(dotenv_path)

AK = os.environ.get('api_key')
SK = os.environ.get('secret_key')

このコードの意味をざっくり説明します。

1. os, dotenvのライブラリをインポートする
2. osのjoin, dirnameを用いて、key.envのパスを取得する
3. load_dotenvでkey.envを読み込む
4. os.environで環境変数(APIキー・シークレットキー)を取得する


3. メインで使う.pyファイルに2の.pyファイルをインポートすることで、APIキーとシークレットキーを取得する


1.と2.の2つのファイルを作成して環境変数として設定すれば、あとはそれぞれAPIキーが必要なメインファイルに読み込むだけで、簡単に使うことができます。
メインファイルをmain.pyとすると、main.pyに以下のコードを記述するだけです。

import settings

api_key = settings.AK
secret_key = settings.SK

先ほどのsettings.pyをインポートして、main.pyで使うそれぞれの変数に環境変数(APIキー・シークレットキー)の値を渡しています。


最後に


前述した通り、環境変数を設定さえすれば、あとはそれぞれの.pyファイルに読み込むだけで、APIキーとシークレットキーの値を使うことができます。

以上の管理法はあくまで一例であり、本番環境時はセキュリティレベルをさらに高めた環境変数の管理法などもあります。

とはいえ、少なくとも平文のまま値を使用するより、リスク的に安全で管理上も便利だと思いますので、ぜひ参考にしてみて下さい。


この記事が気に入ったらサポートをしてみませんか?