クラウド・インフラ

環境変数(シークレット)

Environment Variables (Secrets)

APIキーやパスワードなどの機密データをコードの外部に保存し、安全に管理する仕組みです。

環境変数 シークレット管理 APIキー セキュリティ 設定管理
作成日: 2025年12月19日 更新日: 2026年4月2日

環境変数(シークレット)とは?

環境変数は、コードに直接書かずに、実行時にアプリケーションに渡される設定値です。シークレット(機密情報)として使う場合は、APIキーやパスワード、データベース認証情報をコードの外に保管します。 例えば、API_KEY = "abc123" とコードに書く代わりに、環境変数 API_KEY を参照する方法です。

ひとことで言うと: 家の鍵を玄関に貼り付けるのではなく、別の安全な場所に保管して、必要な人だけが取りに行く、という管理方法をコードに応用したものです。

ポイントまとめ:

  • 何をするものか: APIキーやパスワードをコードの外部に保存・管理。
  • なぜ必要か: GitHubなどにシークレットを誤ってアップロードするのを防止。
  • 誰が使うか: すべての開発者、特にクラウド/インフラを扱う人。

なぜ重要か

開発者が誤ってAPIキーをコードに含めてGitHubにコミットしてしまうことがあります。するとハッカーはそのキーを発見して悪用でき、データが盗まれたり、攻撃者がサービスを使って料金が発生したりします。環境変数を使えば、コード内にシークレットが存在せず、安全です。

また、開発環境・テスト環境・本番環境で異なるAPIキーを使い分ける必要があります。環境変数なら、同じコードで環境ごとに異なるキーを自動的に適用できます。

仕組みをわかりやすく解説

環境変数の使い方は3ステップです。

ステップ1:設定ファイルまたはシステムに値を保存 ローカル開発では .env ファイルに OPENAI_API_KEY=sk-abc123 と記述します。本番環境ではAWS Secrets ManagerやAzure Key Vaultなどの専門ツールに保管します。

ステップ2:コードから参照 Node.jsなら process.env.OPENAI_API_KEY で参照でき、Pythonなら os.getenv('OPENAI_API_KEY') です。

ステップ3:アプリケーション起動時に自動注入 アプリケーション起動時に環境変数が読み込まれ、コードに渡されます。

実際の活用シーン

API統合 - OpenAI、Stripe、Google Cloudなどの外部サービスを使う時、APIキーを環境変数に保管。

データベース接続 - ユーザー名、パスワード、ホストをコードに書かず環境変数で管理。

機能フラグ - 特定機能をオン/オフするしきい値を環境変数で制御。

メリットと注意点

セキュリティ向上が最大メリット - シークレットがコードベースに含まれないため、漏洩リスクが大幅に減少。

環境ごとの設定管理が容易 - 同じコードで複数環境に対応。

一方、.env ファイルも安全に管理する必要 - ローカルで .gitignore に追加しないと、やはり漏洩します。

複雑な構造に弱い - 階層的な設定には不向きで、設定ファイル(YAML、JSON)の方が向く場合も。

関連用語

よくある質問

Q: ローカル開発で .env ファイルをGitにコミットしてもいいですか? A: いいえ。絶対に .gitignore に追加してコミットを避けてください。テンプレート .env.example を作成し、チームメンバーが値を埋める方法がおすすめ。

Q: 本番環境での環境変数管理はどうしますか? A: AWS Secrets Manager、Azure Key Vault、HashiCorp Vaultなど、エンタープライズ向けツールを使用。暗号化、監査ログ、自動ローテーション機能があります。

Q: 環境変数の値はいつ変更されますか? A: アプリケーション起動時に読み込まれるので、起動後に環境変数を変更しても反映されません。新しい値を使うにはアプリケーションを再起動する必要があります。

関連用語

APIキー

APIキーは、アプリケーションがAPIに安全にアクセスするための認証用暗号キーです。一意の識別子として機能し、アクセス制御と使用量管理を実現します。...

認可

認証後、ユーザーが何をできるかを決める権限管理プロセス。アクセス制御の中核です。...

TOML/YAML/JSON設定

アプリケーションの設定をソースコードにハードコーディングすることなく、人間が読みやすい形式で保存する設定ファイルフォーマット。...

アクセス制御

アクセス制御は、誰がシステムやデータを利用できるかを管理するセキュリティ仕組み。認証・認可・監査を通じて不正アクセスを防止します。...

×
お問い合わせ Contact