AIに貼ってよい情報とは
AI利用でのプライバシーとは、貼った文章に含まれる秘密や個人の情報を、手元から出さないことです。プロンプトに貼った文章は、外のサーバーに送られます。
もう1つの危険は、AIが書いたコードに弱点が混ざることです。両方を知っておけば、安全に使えます。
このレッスンのゴール
メモ
AIに貼ってはいけない情報と、生成コードによくある弱点を挙げられる。
今日のキーワード
| ことば | いみ | れい |
|---|---|---|
| 秘密情報 | パスワードや鍵など、知られてはいけない文字です。 | |
| 個人情報 | 氏名や学籍番号など、人を特定できる情報です。 | |
| 環境変数 | コードの外に置く、設定の値です。 | |
| インジェクション | 入力がコードの一部として動いてしまう弱点です。 | |
| プレースホルダ | SQL文で値が入る場所に書く印です。 | ? |
学生が入力するセルは、このプレビューでは空白です。
貼る前に、秘密と個人の情報を消す
貼る前に、一度立ち止まって、文章を読み返します。パスワード、鍵、学生の氏名や学籍番号が入っていないかを見ます。
消す手間は数秒です。一度外に送った情報は、取り戻せません。
貼ってよいものと、いけないもの
| 貼るもの | 判断 |
|---|---|
| パスワード、鍵、トークン | 貼らない |
| 学生の氏名、学籍番号 | 貼らない |
| 自分で書いた短い関数 | 貼ってよい |
| 秘密を消したエラー文 | 貼ってよい |
| 授業や職場の非公開資料 | 先に許可を確かめる |
学生が入力するセルは、このプレビューでは空白です。
ラボのプロジェクトを調べる
貼る前の点検は、検索で助けられます。次の Run は、ラボのプロジェクトから、password、secret、api_key を含む行を探します。何も見つからなければ、何も表示されません。
そのあと、ラボの設定の鍵の行を見ます。本物の鍵ではなく、lab という仮の言葉です。本物は、学生には見えない仕組みで足されます。
秘密の言葉を探す
docker exec -w /home/node/project agent grep -rnE "password|secret|api[_-]?key" .ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
設定の鍵の行を見る
docker exec agent grep -n apiKey /home/node/.config/opencode/opencode.jsonここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
鍵はコードに書かず、外に置く
鍵をコードに書くと、貼った文章や、公開した場所に残ります。コードの外の環境変数に置き、コードからは名前で読みます。
読めなかったときは、はっきり知らせる書き方にします。
環境変数から鍵を読む
import os
# 鍵そのものは書かず、名前だけを書きます。
api_key = os.environ.get("MY_SERVICE_KEY", "")
if api_key == "":
print("鍵が設定されていません")
else:
print("鍵を読み込みました")
生成コードに多い弱点
生成コードには、入力を文字でつないだSQL文が混ざることがあります。入力がSQL文の一部として動くと、関係のない行まで返ります。
値はプレースホルダで渡します。次のコードは、メモリ上の小さな表だけを使います。
連結とプレースホルダの違い
import sqlite3
db = sqlite3.connect(":memory:")
db.execute("CREATE TABLE menu (name TEXT, price INTEGER)")
db.execute("INSERT INTO menu VALUES (?, ?)", ("カレー", 450))
db.execute("INSERT INTO menu VALUES (?, ?)", ("うどん", 380))
name = "x' OR '1'='1"
# 文字でつなぐ書き方: 入力が文の一部になります。
unsafe = "SELECT name FROM menu WHERE name = '" + name + "'"
print(db.execute(unsafe).fetchall())
# プレースホルダ: 入力は、ただの値です。
print(db.execute("SELECT name FROM menu WHERE name = ?", (name,)).fetchall())
よくある間違い
注意
「AIが書いたコードだから、検証済みで安全」と考える人がいます。モデルは安全かどうかを調べていません。入力の扱い、鍵の置き場所、古い部品は、自分で点検します。