コードに秘密情報を残さない
認証情報を平文ではなく安全に保存します。
「コードに秘密情報を残さない」はCoddyKit上の無料Arduino & IoT Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはArduino & IoT Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Arduino & IoT Academyコースには全4レッスンが含まれています。
秘密情報に当たるもの
WiFiパスワード、APIトークン、秘密鍵はすべて秘密情報です。アクセスを許可するものは、スケッチ内に決してそのまま置かないでください。🔑
平文のキーが危険な理由
フラッシュメモリは通信経由で読み出される可能性があります。コード内の平文のキーは、チップダンプを1回取得されるだけで、誰にでもコピーされてしまいます。
String apiKey = "AKIA12345SECRET"; // visible to anyone who reads the flashGitで悪化する理由
秘密情報を一度コミットすると、それは履歴に永久に残ります。削除した後でも、古いコミットには露出したキーが残っています。
別のヘッダーファイルを使う
認証情報をsecrets.hのような小さなファイルに入れ、バージョン管理の対象外にします。この秘密情報用ヘッダーによって、スケッチを共有可能なまま、キーをGitHubから遠ざけられます。
#include "secrets.h" // holds WIFI_SSID and WIFI_PASS, never committedGitで無視する
秘密情報のファイルを.gitignoreに追加し、誤ってコミットされないようにします。この1行で、現実に起こるキー漏洩の大半を防げます。
# .gitignore
secrets.hセットアップ時にプロビジョニングする
キーを埋め込む代わりに、デバイスが初回起動したときに一度だけ入力します。設定ページ経由のプロビジョニングにより、秘密情報をソースコードから完全に切り離せます。
NVSまたはEEPROMに保存する
ESP32には、実行時の秘密情報を保存できるフラッシュ上のキーバリューストアNVSがあります。トークンを一度書き込めば、起動するたびに読み戻せます。
preferences.begin("net", false);
preferences.putString("token", userToken);1台に1つのキー
共有のマスターキーではなく、各ユニットに固有の認証情報を与えます。デバイスごとのキーを使えば、他のデバイスに影響を与えずに、盗まれた1台のキーだけを無効化できます。
ローテーションと失効
定期的にキーを変更し、漏洩したキーはすぐに無効化できるよう計画します。ローテーションによって、盗まれた1つの秘密情報が使える期間を制限できます。
最小権限
各トークンには、本当に必要なアクセス権だけを与えます。最小権限とは、デバイスのキーが漏洩しても、自分のトピックだけを読み取れ、アカウント全体にはアクセスできないようにすることです。
プッシュ前にスキャンする
ツールを使えば、キーがリモートリポジトリに到達する前に検出できます。ワークフローにシークレットスキャナーを組み込むことで、偶発的な漏洩を未然に防げます。
クイックチェック
次のうち、公開リポジトリにキーを置かずに済むものはどれですか?
まとめ
秘密情報をコードに埋め込んではいけません。gitignoreに追加したヘッダーを使い、セットアップ時にプロビジョニングし、NVSに保存し、ローテーションできるデバイスごとのキーを使用します。🔐
AI チューターと学ぶ C++ — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「コードに秘密情報を残さない」レッスンは無料ですか?
はい。「コードに秘密情報を残さない」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Arduino & IoT Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Arduino & IoT Academyコースには全4レッスンが含まれています。
「コードに秘密情報を残さない」で何を学びますか?
認証情報を平文ではなく安全に保存します。 ブラウザで直接実行するハンズオンコードでArduino & IoT Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Arduino & IoT Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのArduino & IoT Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「コードに秘密情報を残さない」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このArduino & IoT Academyレッスンでコードを書いて実行できますか?
はい。すべてのArduino & IoT Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- IoTでよくある攻撃対象
- コードに秘密情報を残さない
- TLSで暗号化し証明書を検証する
- ファームウェアに署名して保護する