Upgrade to Pro — share decks privately, control downloads, hide ads and more …

生成AIシステムのセキュリティ対策 〜 ベストプラクティスと実践 〜 / Security m...

生成AIシステムのセキュリティ対策 〜 ベストプラクティスと実践 〜 / Security measures for generative AI systems

2024/07/08「Classmethod ODYSSEY Online」で発表した資料です

解説ブログ記事はこちら
https://dev.classmethod.jp/articles/classmethod-odyssey-online-generative-ai-aoyagi/

Hideaki Aoyagi

July 15, 2024
Tweet

More Decks by Hideaki Aoyagi

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 3 青柳 英明 新規事業部 生成AIチーム ソリューションアーキテクト オンプレインフラエンジニア歴: 20年 2019.04~

    クラスメソッド AWS事業本部 2019 AWS Samurai (JAWS-UG福岡支部) 2021 APN AWS Top Engineer 2024 Japan AWS All Certifications Engineer 2024.07~ 現職
  2. ⽣成 AI 利⽤時のセキュリティ懸念 情報漏洩‧盗聴 ‧ユーザーが⼊⼒したテキスト (質問内容に含まれている個⼈情報) ‧⽣成 AI が出⼒したテキスト (回答内容に含まれている機密情報)

    ‧RAG で使⽤する社内ドキュメント 5 不正アクセス ‧情報漏洩 ‧なりすまし 脆弱性を突いた攻撃 ‧サービス停⽌ ‧不正利⽤
  3. データ転送中の暗号化 アプリ 〜 サービス間の通信: TLS デフォルトで TLS が使⽤される ‧Bedrock、S3、DynamoDB 等

    設定により TLS を使⽤可能 ‧RDS、EFS 等 使⽤される TLS のバージョンに気をつける 現在の推奨は TLS 1.2 10
  4. データ保管時の暗号化 KMS (Key Management Service) を使⽤して暗号化 ※ KMS キーの種類による暗号化強度の違いは無い 「データの重要度」「企業∕サービスのセキュリティポリシー」「コスト」

    などを勘案して適切な種類を選択することが重要 13 AWS 所有キー (「デフォルト暗号化」とも) AWS 管理キー カスタマー管理キー キーの保管場所 AWS 管理アカウント 顧客アカウント 顧客管理アカウント キーの管理者 AWS AWS 顧客 キーの⾼度な管理 ✕ △ (⼀部のみ) ◯ 費⽤ 発⽣しない KMS の利⽤費 KMS の利⽤費
  5. クライアント〜アプリのアクセス アプリケーションへアクセスするユーザーの認証を⾏い、 許可されたユーザーのみに利⽤を許可する 社内ユーザーの認証: SAML ベース ‧Active Directory (ADFS)、Entra ID、Google

    Workspace、etc. 社外ユーザーの認証: OpenID Connect ベース ‧Apple、Facebook、X、GitHub、etc. アプリケーションへのユーザー認証の実装 IAM Identity Center、Cognito、サードパーティ製ツールなどを使⽤ 20
  6. IAM ロールのポリシー定義 ‧「AWS 管理ポリシー」は使わない (定義が⼤雑把すぎるため) ‧必要な権限を記述したカスタムポリシーを作成する ‧極⼒、アクション‧対象リソースを必要最⼩限に絞って記述 アプリ (ECS) に割り当てる

    IAM ロールのポリシー定義 (例) 22 "Action" : "bedrock:invokeModel" "Resource": "<基礎モデルのARN>" (※特に制限が不要であれば "*" でもよい) "Action" : "kendra:query" "Resource": "<KendraインデックスのARN>" "Action" : ["dynamodb:getItem", "dynamodb:putItem"] "Resource": "<DynamoDBテーブルのARN>"
  7. ⽣成 AI のセキュリティ OWASP Top 10 for Large Language Model

    Applications https://github.com/owasp-ja/Top10-for-LLM ‧01: Prompt Injection (プロンプトインジェクション) ‧02: Insecure Output Handling (安全が確認されていない出⼒ハンドリング) ‧03: Training Data Poisoning (訓練データの汚染) ‧04: Model Denial of Service (モデルのDoS) ‧05: Supply Chain Vulnerabilities (サプライチェーンの脆弱性) ‧06: Sensitive Information Disclosure (機微情報の漏えい) ‧07: Insecure Plugin Design (安全が確認されていないプラグイン設計) ‧08: Excessive Agency (過剰な代理⾏為) ‧09: Overreliance (過度の信頼) ‧10: Model Theft (モデルの盗難) 24
  8. プロンプトインジェクション 悪意を持った者が LLM を意図的に誤動作させる指⽰を与え、 好ましくない内容を⽣成 AI に出⼒させる攻撃 (例) ‧犯罪⾏為に使うことができる情報を回答させる (ex.

    爆弾の作り⽅) ‧個⼈情報、機密情報を聞き出す LLM 側で対策は⾏なっているものの、特定の指⽰の与え⽅をすることで 対処策をすり抜けて攻撃が⾏われることがある 25
  9. プロンプトインジェクション プロンプトインジェクションを⽤いた攻撃⼿法: ‧攻撃者が LLM に対して直接プロンプトインジェクションを試みる ‧プロンプトインジェクションを含む情報 (ファイル、Webページ等) を ユーザーの⽬につく場所に置き、ユーザーが LLM

    へ指⽰を⾏うように 仕向ける (間接的な攻撃) (例) ⼀⾒普通の内容に⾒える Web ページだが、ユーザーがコピペして 「要約して」と指⽰するとプロンプトインジェクションが発動する 26
  10. ⽣成 AI の出⼒の精査が不⼗分 対策 ‧LLM が出⼒したコードは、必ず⼈の⼿でチェック∕レビューを⾏う ‧LLM の出⼒に対して検証やサニタイズを⾏う ‧LLM の出⼒をそのまま表⽰せずエンコード∕エスケープする

    → 検証やエンコードを⾏うようにプロンプトで指⽰を与えることも できるが、LLM は完全ではないため抜け漏れが発⽣することもある 後処理で⾏うのが確実 29
  11. プラグイン‧エージェントのリスク 「プラグイン」 ⽣成 AI に「コマンドの実⾏」「API の呼び出し」「アプリとの連係」 などの機能を与えることによって、⽣成 AI の出⼒結果を⼈間が解釈 して作業を⾏う代わりに、⽣成

    AI が⾏えるようにするもの 「エージェント」 与えられた指⽰を遂⾏するために必要なタスクを⽣成 AI が⾃ら考え、 必要に応じて API の呼び出しやアプリとの連係を⾏うことで⾃律的に 作業を⾏えるようにするもの 30
  12. Guardrails for Amazon Bedrock LLM への⼊⼒‧LLM からの出⼒を精査して、 問題がある⼊出⼒を検出∕ブロックしてくれる機能 ‧「差別」「暴⼒」などが含まれる内容のフィルタリング ‧個⼈情報∕機密情報と判定される情報のフィルタリング

    ‧任意の単語∕フレーズによるフィルタリング Bedrock サービスと統合されており、シームレスなセキュリティ対策が可能 ※ ただし、現時点 (2024年7⽉) では⽇本語をサポートしておらず、 誤検出が発⽣したり、全く検出されないことがある 33
  13. その他のセキュリティ対策 ロギング ‧AWS サービスやアプリのロギングを有効にする → インシデント発⽣時に追跡が⾏えるようにしておく シークレットの取り扱い ‧OpenAI の API

    Key など機微情報の取り扱いを厳密にする → アプリに直書きしない、Secrets Manager などを利⽤する GuardDuty、Security Hub などのセキュリティ対策サービスの活⽤ ‧⼈⼒による監視や対処は漏れや対応の遅れを⽣じさせる 35