3秒で盗まれるAPIキーを守る環境変数
4分37秒 | セキュリティ暗号
基本情報技術者試験の頻出テーマを解説した音声コンテンツです。
トランスクリプト(字幕テキスト)
お聞きのアナタ、今回の徹底解剖へようこそ。 今日のミッションは非常に実用的で、かつ少しスリリングなテーマです。 自作アプリなどで使う APIキー をいかに安全に守るか。 これを紐解いていきましょう。 情報漏洩を防ぐための必須知識、環境変数という概念を今回は紹介します。 はい。大きな視点で見るとですね、 AI や便利な API を誰もが手軽に組み込める現代において、この知識はプロのエンジニアだけでなく、コードに触れる全ての人にとって不可欠なリテラシーになっていますね。 そうなんですよ。 今回の資料で一番個人的にゾッとしたのが、直書きの恐怖です。 例えばプログラムの画面に
API_KEY=SK12345 のように直接秘密のキーを書いたコードを作ってしまうと。 はい。 それを GitHub なんかの公開スペースにアップロードしようものなら。 ストップ!ああ、それだけは絶対にやってはいけません! うわあ、びっくりしました。 は、すみません。本当に焦るような切迫した問題なので、つい大声を出してしまいました。 ここからは落ち着いて、その対策について具体的にお話ししますね。 今の直書きをやってしまうと、世界中を巡回している悪党のボットにわずか3秒でキーを盗まれるんです。 わずか3秒? ええ。そして翌日には恐ろしい額の高額請求が届くリスクがあります。 なるほど。それだけ一発アウトの危険な行為だということですね。 では、コードに直書きせずにどうやって API を使えばいいんでしょうか? そこで登場するのが 環境変数 です。 仕組みはシンプルで、コードと秘密の情報を物理的に分離します。 絶対に外に出さない秘密のファイルとして、.env という別のファイルを作り、キーはそこに隔離するんです。 .env ですね。 そうです。 そしてプログラム側には os.getenv のような安全な箱、つまり変数の名前だけを残しておくんです。 コードには変数の名前だけを書き、中身である実体は外から注入する。 これが重要な結論です。 なるほど。つまり、これってどういう意味なんでしょうか? 貴重品は頑丈な .env という金庫にしまっておいて、机の上には「金庫を開けろ」と書かれた付箋だけを貼っておくようなものですかね? まさにその通りです。 他の人が机を見ても付箋しか見えないから、実際の貴重品は絶対にわからないですよね? ええ、ええ。 OS に対して「あの秘密のファイルに書いてある言葉を教えて」と頼み仕組みにすることで、コード自体は誰に見られても安全な状態を保てるんです。 これは非常に理にかなっていますね。 そして資料には、この 環境変数 を扱う上での3つの鉄則が挙げられています。 まず1つ目は、ソースコードに書かない。 はい。 流出を防ぐための大前提として、キーは必ず .env ファイルに隔離するという事ですね。 2つ目が、.env は共有しないです。 ええ。開発者ごとに使う環境やキーが違いますからね。 ここで必ず .gitignore という無視リストに .env を追記して守る必要があります。 それを忘れると、せっかく分離した意味がなくなってしまいますもんね。 はい。絶対にアップロードしないでと指示を出すわけです。 そして最後の3つ目が、.env.example を作る。 これも開発者としての良いマナーですね。 誰かがプログラムをダウンロードした時、どんなキーを用意すればこれが動くんだと迷わないように、キーの名前だけを書いた空のテンプレートを用意してあげるという配慮です。 .env 自体は共有しないからこそ、構造だけは共有するということですね。 その通りです。 今回の総括として、現代のエンジニアにおける最大の鉄則をお伝えします。 それは、ロジックは共有し、秘密は切り離すということです。 ロジックは共有し、秘密は切り離す。 はい。この原則を守れば安全に開発を進められます。 お聞きのアナタもご自身で AI など組み込んだコードを書かれる際、このシンプルな分離作業が、いかに自分の身を守る強力な盾になるか実感していただけるはずです。 ええ、本当にそうですね。 最後に、あなたに1つ問いかけさせてください。 プログラミングに限らず、私たちが普段のデジタル生活の中で、無意識のうちに公開スペースへ直書きしてしまっている秘密は他にないでしょうか? 少し立ち止まって、自分自身の周りを見渡してみてください。このコンテンツは Web society で視聴・学習できます。