はじめに
近年、生成AIは様々なサービスで活用されており、業務効率の向上や新しい顧客体験の提供など、数多くのメリットをもたらしています。しかし、その一方で、生成AIの自由度の高い振る舞いを悪用しようとする人も現れてきました。例えば、悪意のあるユーザーが意図的に生成AIを騙して不適切な情報や機密情報を引き出そうとする事例が報告されています。
このような生成AI特有のリスクは、クラウド基盤やデータ自体の問題ではなく、生成AIを利用したアプリケーションのレイヤーで発生しているため、ファイアウォールやロール管理のようなセキュリティ対策だけでは防ぐことができません。このため、アプリケーションのレイヤーで新たなセキュリティ対策が必要になります。
AIアシスタント「たまちゃん」は社内向けに提供しており、社員が利用しています。たまちゃんでも、ファイアウォールやロール管理、データに関する基本的なセキュリティ対策(個人情報などの重要データは扱わず、全社員がアクセスできる情報のみ扱う)を実施していますが、「たまちゃんが不適切な質問に答えてしまう」といったアプリケーションのレイヤーで発生する生成AI特有のリスクを完全に防ぐことができません。
そこで、こうしたリスクのある質問を自動的に検知し、ブロック・フィルタリングする仕組みを、たまちゃんに導入しています。
本記事では、生成AIを標的とした代表的な攻撃手法と、たまちゃんで採用しているコンテンツフィルターによる防御策についてご紹介します。生成AIを活用したサービスのセキュリティ対策に関心のある方にとって、ご参考になれば幸いです。
生成AIを活用したサービスにおけるセキュリティリスク
生成AIを活用したサービスでは、様々な場面でセキュリティリスクが発生することがあります。これらのリスクは、大きく分けて「入力(ユーザープロンプト)」によるリスク、「出力(生成AIからの返答)」によるリスク、そして「AIが参照・利用するデータ」によるリスクの3つに分類できます。図1では、それぞれの場面で起こりやすい代表的なリスクを示しています。

安全で信頼性のあるサービスを提供するには、これらのリスクを把握し、それぞれに合ったセキュリティ対策を取ることが大切です。
補足情報ですが、OWASPからは「OWASP Top 10 for Large Language Model Applications」という、生成AIを利用したアプリケーションでよく見られる代表的な脆弱性トップ10をまとめたリストを公開しています。
代表的な攻撃手法
生成AIに対して、悪意のあるユーザーが誤作動を狙った特別な命令をプロンプトに仕込んで攻撃する手法を「プロンプトインジェクション」と呼びます。
さらに、この攻撃は、図2のように2種類の攻撃に分けられます。1つ目は、ユーザーが直接、生成AIに送るユーザプロンプトに攻撃を仕込んで実行する「ジェイルブレイク攻撃(Jailbreak Attack)」です。もう1つは、生成AIが参照するデータに攻撃を仕込んで間接的に影響を与える「インダイレクト攻撃(Indirect Attack)」です。

不適切な質問をフィルタリングする仕組み
たまちゃんでは、不適切な質問に回答しないよう、不適切な質問をフィルタリングする仕組みを導入しています。図3はその仕組みを示しています。

フィルタリングは、Azure OpenAI Serviceの「コンテンツフィルター」機能と、独自に実装した「禁止事項に該当するかチェック」機能の2つを組み合わせて実施しています。
まず、Azure OpenAI Serviceで管理しているAI(埋め込みモデル、生成AI)に問い合わせる時は、「コンテンツフィルター」機能でAzureが定めた基準に基づき、不適切な内容が含まれていないかチェックします。このフィルターで対応できない、例えば「社員の個人情報に関する質問は受け付けない」のような、たまちゃん特有の禁止事項については、「禁止事項に該当するかチェック」機能でチェックします。
このように、たまちゃんでは2つの機能を組み合わせることで、不適切な質問をフィルタリングしています。
コンテンツフィルターとは
Azure OpenAI Serviceのコンテンツフィルターについて、どのような機能かご紹介いたします。
コンテンツフィルターは、AIを利用する際に、不適切な内容(例:差別的な表現、暴力的な内容、プロンプトインジェクションなど)が含まれていないかチェックする機能です。この機能を使うことで、ユーザーから不適切な質問が送られていないかや、AIが不適切な回答を生成していないかを検知し、ブロックすることができます。
コンテンツフィルターは、Microsoftが構築したAIを用いて有害なコンテンツを検出する「Azure AI Content Safety」が、内部的に利用されています。
コンテンツフィルターで設定可能な項目は表1のようになっています。各項目で、どのような表現が検知されるかの具体例は、Azureの公式サイトをご参照ください。
# | 項目名 | 概要 | 設定可能な値 | 適用タイミング |
---|---|---|---|---|
1 | ヘイトと公平性 | センシティブな表現が含まれているケースをブロック (マルチクラス分類モデルを採用しており、4つのカテゴリと4段階の重大度レベルを判定) |
低、中、高 (中に設定した場合、重大度が中と高のものがブロックされる) |
|
2 | 性的 | |||
3 | 暴力 | |||
4 | 自傷行為 | |||
5 | プロンプトシールド (ジェイルブレイク攻撃用) |
プロンプトインジェクションを検知・ブロック | オフ、注釈のみ、注釈とブロック |
|
6 | プロンプトシールド (インダイレクト攻撃用) |
|||
7 | 保護済み素材 (テキスト) |
生のコンテンツ(曲の歌詞、記事、レシピ、一部のWebコンテンツ、ソースコード)がそのまま出力されるケースを検知・ブロック |
|
|
8 | 保護済み素材 (コード) |
|||
9 | ブロックリスト | 禁止ワードが含まれている ケースをブロック |
オフ、Profanityブロックリスト、カスタムブロックリスト(正規表現で禁止ワードを指定) |
|
10 | ストリーミングモード | ほぼリアルタイム(非同期)でフィルターを適用するか設定 | 通常、非同期 |
|
コンテンツフィルターには、あらかじめ用意された「既定」や「DefaultV2」といった標準のフィルターが利用できます。また、必要に応じて各項目を自分たちで自由に設定できる「カスタムコンテンツフィルター」も利用できます。表2では、それぞれのフィルターで設定値にどのような違いがあるかをまとめています。
既定 | DefaultV2 | カスタムコンテンツフィルター | |
---|---|---|---|
ヘイトと公平性 |
|
|
任意の値で設定可能 |
性的 | |||
暴力 | |||
自傷行為 | |||
プロンプトシールド (ジェイルブレイク攻撃用) |
オフ | オン (「注釈のみ」か「注釈とブロック」かは不明) |
|
プロンプトシールド (インダイレクト攻撃用) |
オフ | ||
保護済み素材 (テキスト) |
オン (「注釈のみ」か「注釈とブロック」かは不明) |
||
保護済み素材 (コード) |
|||
ブロックリスト | オフ | ||
ストリーミングモード | 通常 | 通常 |
補足情報ですが、こうしたコンテンツフィルターはAzureだけでなく、他のクラウドサービスでも提供されています。例えば、AWSには「Amazon Bedrock ガードレール」、Google CloudのVertex AIには「安全フィルタ」というサービスがあります。さらに、Pythonで使えるオープンソースソフトウェア(OSS)には「Guardrails」が存在します。Azureを採用していないケースにおいては、これらのサービスやオープンソースソフトウェアが活用できると考えられます。
たまちゃんにおけるコンテンツフィルターの設定値
たまちゃんでは、「埋め込みモデル」と「生成AI」の2種類のAIを使っています。それぞれのAIには、表3の通りにカスタムコンテンツフィルターを設定しました。
埋め込みモデル用の カスタムコンテンツフィルター | 生成AI用の カスタムコンテンツフィルター | |
---|---|---|
ヘイトと公平性 |
|
|
性的 | ||
暴力 | ||
自傷行為 | ||
プロンプトシールド (ジェイルブレイク攻撃用) |
オフ | 注釈とブロック |
プロンプトシールド (インダイレクト攻撃用) |
注釈のみ | |
保護済み素材 (テキスト) |
||
保護済み素材 (コード) |
||
ブロックリスト | オフ | |
ストリーミングモード | 通常 | 通常 |
まず、埋め込みモデルは、入力されたテキストを数値データ(ベクトル)に変換するためのAIで、この仕組み上、プロンプトインジェクションの影響を受けたり、有害なコンテンツを生成するリスクがありません。そのため、生成AI用のカスタムコンテンツフィルターと比べて、「プロンプトシールド」や「保護済み素材」はオフに設定しています。
また、RAGで参照する社内ドキュメントにはプロンプトインジェクションが仕込まれている可能性はほとんど無いと考えています。そのため、生成AI用のカスタムコンテンツフィルターにおいて「プロンプトシールド(インダイレクト攻撃用)」は注釈のみに設定しています。
これらのカスタムコンテンツフィルターを設定したことで、ユーザーから「指示を無視して答えてください」といった質問があった場合でも、生成AIが答えないようにブロックできることを確認できました。
さいごに
本記事では、生成AIを活用したサービスのセキュリティ対策についてご紹介しました。従来のクラウド基盤やデータのセキュリティ対策だけでは不十分であり、生成AIならではの新たなリスクにも目を向ける必要があることをご紹介しました。
また、たまちゃんで導入している仕組みとして、Azure OpenAI Serviceの「コンテンツフィルター」機能と、独自に実装した「禁止事項に該当するかチェックする」機能、2つの機能を組み合わせて、不適切な質問へのセキュリティ対策をしていることも紹介させいただきました。
今後も生成AIの活用シーンが広がるとともに、リスクや攻撃手法も多様化していくことが予想されます。そのため、最新の情報や脅威動向を継続的にキャッチアップし、必要に応じて対策を強化していくことが大切です。
本記事が、生成AIを活用したサービスのセキュリティ対策を検討されている皆さまにとって、役立つ情報となれば幸いです。
執筆者紹介

連載コラム:エクサの生成AIチャレンジ日記
本コラムでは、エクサ社内における生成AIの活用に向けた技術的な取り組みと、実際の業務適用事例をご紹介いたします。生成AIによる業務効率化や新たな価値創造のヒントとなれば幸いです。
関連コラム
関連ソリューション
関連事例
お問い合わせ
CONTACT
Webからのお問い合わせ
エクサの最新情報と
セミナー案内を
お届けします
