機密情報を漏洩させずにAIを活用する方法
エラーが発生した。スタックトレースをコピーした。AIに修正を依頼した。そのテキストの中に DATABASE_URL やパスワードが含まれていることを忘れていた。AIは4秒で回答を出す。今や、あなたの機密情報はリクエストログや学習セットの中に残っている。それを削除することはできない。
AIに機密情報を貼り付けることは、公開サイトに貼り付けるのと同じことだ。一度送ってしまうと、取り消すことはできない。
私は毎日、コードをリリースするためにAIを使っている。避けているわけではない。脅威モデル(threat model)を持って活用している。
多くの人は、プロンプトはプライベートなチャットだと思っている。しかし、そうではない。それは外部へのリクエストなのだ。
- 無料版では、多くの場合、モデルの学習にデータが使用される。
- 有料版では、通常、データを使用しないことが約束されている。
- ただし、有料版であっても、不正利用の検知や人間によるレビューのためにログが保存される。
データ漏洩には3つのパターンがある:
- 貼り付けたもの:コードスニペット、設定ファイル、またはトレース。
- ツールが自動的に付加するもの:開いているファイル、リポジトリのコンテキスト、またはターミナルの出力。
- モデルが返したもの:PR(プルリクエスト)の説明やログに反映された機密情報。
AIプロバイダーは信頼できる第三者である。彼らの内部パイプラインを監査することはできない。プロンプト入力欄は、信頼できないネットワークコール(network call)として扱うべきだ。
以下の送信は控えよう:
- 本番環境のAPIキーやトークン。
.envファイルの内容。- プライベートキーや証明書。
- 実際の顧客名、メールアドレス、または決済データ。
- オープンソース化しない独自のロジック。
代わりにプレースホルダーを使用しよう。[API_KEY] や [DB_PASSWORD] を使うのだ。AIはマスクされた状態でも同様にうまく機能する。
次の3つの習慣を身につけよう:
- AI用の ignore ファイルを使用する。
.envや機密情報が含まれるフォルダをツールのコンテキストから外す。 - 送信する前にスキャンする。貼り付ける前に、テキストに対してシークレット検出ツールを実行する。
- 機密情報を暗号化したままにする。機密情報が実行時にメモリ内にのみ存在する場合、それを貼り付けることはできない。
オプションのまとめ:
- 無料版/コンシューマー向け:公開ドキュメントや使い捨てのスニペットに使用する。
- 有料版 Pro/Team:ほとんどのエンジニアリング業務に使用する。契約による保護がある。
- ローカル/セルフホスト:マシン内に留めておく必要がある規制対象データに使用する。
「学習に使用しない」という保証は契約である。技術的な盾ではない。リスクを軽減はするが、リスクをゼロにするものではない。
AIがコードに触れる前に、以下のステップを実行しよう:
- AIツール用の ignore ファイルを追加する。
- 貼り付けるものはすべてスキャンする。
- すべての認証情報をプレースホルダーでマスクする。
- 独自の業務には有料版を使用する。
- KMS(鍵管理サービス)を使用して、機密情報をプレーンテキストとして扱わないようにする。
- AIの出力がログやコミットに反映される前に確認する。
4秒での回答は、依然として非常に速い。ただ、その代償としてセキュリティを犠牲にする必要はないのだ。
Optional learning community: https://t.me/GyaanSetuAi
