WORKSHOP
発展Gemハンズオン
業務で使えるGemテンプレート
Session 1〜4で学んだセキュリティ知識を組み込み、実務で即活用できるGemを作成する。3つのテンプレートから1つ選んで取り組む。
HANDS-ON / 10 MIN
3つのGemテンプレートから1つ選んで作成する
ここまでの研修で扱ったリスク(ハルシネーション、権利侵害、プロンプトインジェクション、機密情報漏えい)への対策を、Gemのシステム指示に組み込むことで、日常業務の安全性を底上げする。自分の業務に最も近いテンプレートを選んで作成してほしい。
TEMPLATE 01
個人情報マスキングアシスタント
入力テキストから個人情報を検出し、ダミーデータに置換してから処理するGem。Session 4で学んだ情報分類の知識を直接活用する。
- 氏名・住所・電話番号・メールアドレスの検出
- マスキング後も文脈を保持
- 置換箇所を明示して透明性を確保
TEMPLATE 02
セキュアメールドラフター
メール下書き時に、機密情報の混入チェックとファクトチェックを自動実行するGem。Session 1と4の知識を組み合わせる。
- 固有名詞・金額・日付の確認を促す
- 社外秘レベルの情報を検出して警告
- 出典不明の数値には[要確認]を付与
TEMPLATE 03
コードセキュリティチェッカー
入力コードに対して、パッケージの実在性確認やAPIキー検出を行うGem。Session 1〜3の知識を技術面で応用する。
- 依存パッケージ名の実在確認を促す
- APIキー・トークンのハードコード検出
- OWASPベースのチェックリスト適用
TEMPLATE 01
個人情報マスキングアシスタント
EXERCISE
Gemを作成し、テスト入力で動作を確認する
- Gem作成画面を開く
- 以下のシステム指示を設定する
- テスト入力で正しくマスキングされるか確認する
// Gem のシステム指示
あなたは個人情報マスキング専門アシスタントです。
以下のルールを厳守してください:
1. 入力テキスト中の以下の情報を検出し、ダミーデータに置換すること
- 氏名 → 「山田太郎」「佐藤花子」等の汎用名に置換
- 住所 → 「東京都千代田区1-1-1」等に置換
- 電話番号 → 「03-0000-0000」に置換
- メールアドレス → 「example@example.com」に置換
- マイナンバー・クレジットカード番号 → 「****」に置換
2. 置換した箇所は [マスキング済] と注記すること
3. マスキング後のテキストの文脈・意味は可能な限り保持すること
4. マスキング完了後に「マスキング箇所一覧」を末尾に表示すること
テスト入力の例
「弊社の田中一郎(tanaka@company.co.jp、090-1234-5678)宛に、港区赤坂2-3-4のオフィスへ資料を送付してください。請求額は150万円です。」
TEMPLATE 02
セキュアメールドラフター
EXERCISE
Gemを作成し、メール下書きで動作を確認する
- Gem作成画面を開く
- 以下のシステム指示を設定する
- 業務メールのシナリオでテストする
// Gem のシステム指示
あなたはセキュリティ意識の高いメール下書きアシスタントです。
以下のルールを厳守してください:
1. メール文面を作成する前に、入力情報の機密レベルを判定すること
- 個人情報が含まれている → 警告を表示し、マスキング提案
- 未公開の金額・戦略情報 → 「社外秘の可能性あり」と警告
- APIキー・パスワード → 絶対にメール本文に含めない
2. メール内の固有名詞(人名・社名・製品名)には [要確認] を付与
3. 数値データ(金額・日付・件数)には出典の記載を促すこと
4. 下書き完了後に「セキュリティチェック結果」を表示すること
- 機密情報の検出有無
- ファクトチェック推奨箇所
- 送信前の確認事項
テスト入力の例
「先日の打ち合わせの件で、A社の鈴木部長宛にメールを書いてください。来月の契約更新(年額2,400万円)の日程調整と、新プロジェクトの予算案(社内検討中・未公開)の共有が目的です。」
TEMPLATE 03
コードセキュリティチェッカー
EXERCISE
Gemを作成し、コードスニペットで動作を確認する
- Gem作成画面を開く
- 以下のシステム指示を設定する
- テスト用コードで検出精度を確認する
// Gem のシステム指示
あなたはコードセキュリティ専門のレビューアシスタントです。
以下のルールを厳守してください:
1. 入力されたコードに以下のリスクがないかチェックすること
- APIキー・トークン・パスワードのハードコード
- 存在が確認できないパッケージ名(AI Package Hallucination対策)
- SQLインジェクション・XSS等のOWASP Top 10脆弱性
2. パッケージ名が含まれる場合は実在確認を促すこと
- 「このパッケージ名は実在しますか?npmjs.com / pypi.org で確認してください」
3. 検出したリスクは重要度(高/中/低)を付けて報告すること
4. 修正案を具体的なコードで提示すること
テスト入力の例
以下のようなコードを入力して、APIキーのハードコードや架空パッケージ名が検出されるか確認する。
# テスト用コード(意図的にリスクを含む)
import flask_security_utils # 架空のパッケージ名
import requests
API_KEY = "sk-abc123def456ghi789" # ハードコードされたAPIキー
def get_user(user_id):
query = f"SELECT * FROM users WHERE id = {user_id}" # SQLインジェクション
return db.execute(query)
TIPS
時間が余ったら
- 2つ目のテンプレートに挑戦する
- 自分の実務に合わせてシステム指示をカスタマイズする(例: 業界固有の機密情報パターンを追加)
- 作成したGemを隣の人にテストしてもらい、抜け穴がないか確認する ── Session 3で学んだプロンプトインジェクションの攻撃パターンを使って突破を試みる