OpenAI

API キーの安全性に関するベストプラクティス

更新日: 7 days ago

1. アカウント内の各チームメンバーごとに、必ず一意の API キーを使用する

API キーは、API に対するリクエストを識別するための一意のコードです。API キーは、あなた自身が使用することを目的としています。API キーの共有は利用規約の違反となります。

実験を始める際、API アクセスをチーム全体に拡張したい場合があるかもしれませんが、OpenAI は API キーの共有をサポートしていません。「Members(メンバー)」ページから新しいメンバーをアカウントに招待してください。サインイン後すぐに、そのメンバー専用の一意のキーが発行されます。また、個々の API キーに対して権限を割り当てることも可能です。

2. ブラウザーやモバイルアプリなどのクライアントサイド環境にキーをデプロイしない

ブラウザーやモバイルアプリなどのクライアントサイド環境で OpenAI API キーを公開すると、悪意のあるユーザーがそのキーを取得し、あなたに代わってリクエストを送信することが可能になります。これにより、予期しない料金が発生したり、特定のアカウントデータが侵害されたりする可能性があります。リクエストは必ず、API キーを安全に保管できる独自のバックエンドサーバー経由で送信してください。

3. キーをリポジトリにコミットしない

API キーをソースコードにコミットすることは、認証情報が漏洩する一般的な原因の1つです。公開リポジトリを使用している場合、意図せずインターネット上にキーを共有してしまう典型的なケースとなります。非公開リポジトリは公開リポジトリよりも安全ですが、データ侵害が発生した場合にはキーが漏洩する可能性もあります。これらの理由から、予防的なキー保護対策として、環境変数の使用を強く推奨します。

4. API キーの代わりに環境変数を使用する

環境変数とは、アプリケーション内ではなく、オペレーティングシステム上で設定される変数です。これは名前と値のペアで構成されます。変数名は OPENAI_API_KEY に設定することをおすすめします。この変数名をチーム全体で統一することで、API キーを公開するリスクなく、コードをコミットおよび共有できます。

Windows の設定

オプション1:コマンドプロンプトから環境変数「OPENAI_API_KEY」を設定する

コマンドプロンプトで次のコマンドを実行します。<yourkey> をご自身のAPI キーに置き換えてください。

setx OPENAI_API_KEY "<yourkey>"

これは今後のコマンドプロンプトウィンドウに適用されるため、curl でこの変数を使用するには新しいウィンドウを開く必要があります。この変数が設定されていることを確認するには、新しいコマンドプロンプトウィンドウを開き、以下を入力します。

echo %OPENAI_API_KEY%

オプション2:コントロールパネルから環境変数「OPENAI_API_KEY」を設定する

1.「システム」プロパティを開き、「システムの詳細設定」を選択します

Windows 10 System settings with Advanced system settings highlighted in Control Panel

2.「環境変数...」を選択します。

Windows System Properties Advanced tab with Environment Variables button highlighted

3. ユーザー変数セクション(上部)で「新規…」を選択します。名前/キーと値のペアを追加します。<yourkey> をご自身の API キーに置き換えてください。

変数名:OPENAI_API_KEY
変数値:<yourkey>

Linux / macOS の設定

オプション1:zsh を使用して環境変数「OPENAI_API_KEY」を設定する

1. ターミナルで次のコマンドを実行します。「yourkey」をご自身のAPI キーに置き換えてください。

echo "export OPENAI_API_KEY='yourkey'" >> ~/.zshrc

2. 新しい変数でシェルを更新します。

source ~/.zshrc

3. 次のコマンドを使用して、環境変数が設定されていることを確認します。

echo $OPENAI_API_KEY

API キーの値が結果として出力されます。

オプション2:bash を使用して環境変数「OPENAI_API_KEY」を設定する

オプション1の手順に従い、.zshrc.bash_profile に置き換えてください。

これで準備完了です!curl でキーを参照したり、Python で読み込んだりすることができます。

import os
import openai

openai.api_key = os.environ["OPENAI_API_KEY"]

5. キー管理サービスを使用する

API キーなどの機密情報を安全に管理するための製品は数多く存在します。これらのツールを使うことで、キーへのアクセスを制御し、全体的なデータセキュリティを向上させることができます。アプリケーションでデータ侵害が発生した場合でも、キーは暗号化され、完全に別の場所で管理されているため、漏洩することはありません。

本番環境にアプリケーションをデプロイするチームには、これらのサービスの利用を検討することをおすすめします。

6. アカウントの使用状況を監視し、必要に応じてキーをローテーションする

API キーが漏洩すると、第三者があなたの同意なしにアカウントのクォータへアクセスすることが可能になります。これにより、データ損失、予期しない料金の発生、月次クォータの枯渇、API アクセスの中断などが発生する可能性があります。

チームの使用状況は「Usage(使用状況)」ページで追跡できます。不正使用の懸念がある場合は、アカウントを保護するために以下の対応を行ってください。

  • 使用状況を確認し、チームの作業内容と一致しているかを確認します。複数の組織(例:会社用と個人用)に属しているユーザーの場合、使用状況の追跡が有効になっており、使用状況と追跡のデフォルト組織が設定されていることを確認してください。

  • キーが漏洩した可能性がある場合は、「API Keys(API キー)」ページから直ちにキーをローテーションしてください。本番環境でアプリケーションを運用している場合は、それに応じてキーの値を更新する必要があります。

  • さらなる調査が必要な場合は、help.openai.com からお問い合わせください。

7. IP 許可リストを使用して API アクセスを制限する

IP 許可リストを使用することで、OpenAI API にアクセスできる IP アドレスを制限できます。有効化すると、設定済みの IP アドレスまたは範囲からのリクエストのみが許可され、それ以外の IP アドレスについては有効な API キーが含まれていても拒否されます。

これにより、API はバックエンドサーバーやクラウド環境などの信頼できるインフラストラクチャからのみアクセス可能となり、セキュリティがさらに強化されます。

詳細については、OpenAI API の IP 許可リストに関する記事をご覧ください。

この記事は役に立ちましたか?