azure-ai-content-safety について
azure-ai-content-safety は、チャット、エージェント、RAG などの生成 AI アプリ向けに、コンテンツモデレーションと安全対策を設計するスキルです。入力・出力の検査、プロンプトインジェクション検出、応答の根拠確認を扱います。
主な機能
- 01テキスト、画像、マルチモーダルの審査
- 02プロンプトインジェクションと脱獄の検出
- 03根拠ソースに基づく応答確認
- 04保護対象のテキストとコードの検出
- 05カスタムカテゴリとブロックリスト
活用シーン
- 01チャットアプリの入出力審査
- 02RAG コンテンツへの間接攻撃の防止
- 03重要な応答の根拠確認
- 04生成テキストやコードの保護対象チェック
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ vinayaklatthe/ microsoft-security-skills --skill azure-ai-content-safetyインストール後、Claude Code で/azure-ai-content-safetyを入力して読み込まれたか確認します。
詳細
Azure AI Content Safety
Azure AI Content Safety は、リアルタイムのコンテンツモデレーションと生成 AI の安全性を実現するプラットフォームです。テキスト、画像、マルチモーダルコンテンツを有害カテゴリに基づいて分析し、プロンプトインジェクション/ジェイルブレイクの試みをブロックし(Prompt Shields)、根拠のない応答を検出し(Groundedness)、保護対象のテキストやコードの再現を検知します。
Azure OpenAI と組み合わせることで、組み込みのコンテンツフィルター(デフォルトの安全策)として機能するほか、(Microsoft 以外のモデルを含む)あらゆる AI/LLM アプリケーション向けに設定可能なガードレールとしても利用できます。
使用する場面
ガードレールが必要な生成 AI アプリケーション(チャットアシスタント、エージェント、RAG アプリ、マルチモーダル製品など)の構築やセキュリティ強化に使用します。
このスキルは使用しないでください。AI ワークロードの SOC 脅威検出(defender-for-cloud-ai)、エンドユーザーの AI 利用ガバナンス(purview-ai-hub)、汎用的な AI アプリケーションアーキテクチャには使用しないでください。
機能一覧
| 機能 | 内容 | 適用先 |
|---|---|---|
| テキストモデレーション | テキストをヘイト、暴力、性的、自傷(重大度 0~7)に分類します | 入力+出力 |
| 画像モデレーション | 画像を同じカテゴリに分類します | ユーザーのアップロード、生成画像 |
| マルチモーダルモデレーション | テキストと画像を組み合わせたコンテキストを分析します | マルチモーダルチャット |
| Prompt Shields — ユーザープロンプト | ユーザープロンプト内のジェイルブレイクの試みを検出します | 入力 |
| Prompt Shields — 間接プロンプトインジェクション | 信頼できない根拠コンテンツ(RAG、ツールの結果、ウェブページ)内のインジェクションを検出します | 根拠付けの前処理 |
| Groundedness 検出 | LLM の応答を根拠ソースと照合し、ハルシネーションを確認します | 出力 |
| 保護対象コンテンツ — テキスト | 著作権で保護されたテキストの逐語的な再現を検出します | 出力 |
| 保護対象コンテンツ — コード | 公開リポジトリのコードの再現を検出します | コード生成の出力 |
| カスタムカテゴリ | お客様が定義する有害カテゴリ(例:ブランドイメージにそぐわない話題)です | 入力+出力 |
| ブロックリスト | 完全一致と正規表現に対応したブロックリストです | 入力+出力 |
アプローチ
-
まず Azure OpenAI の既定のコンテンツフィルターを使用します。 Azure OpenAI の各デプロイには、4 つすべての有害カテゴリに対して中程度の重大度に設定された既定の Content Safety フィルターがあります。これを設定せずにデプロイしないでください。
-
ユースケースごとに重大度のしきい値を調整します。
- 子ども向け製品:しきい値を低く設定します(重大度 2 でブロック)。
- 成人向けクリエイティブアプリ:しきい値を高く設定します(重大度 6 の場合のみブロック)。 Azure OpenAI Studio でカスタムコンテンツフィルターを作成し、デプロイに割り当てます。
-
ユーザー向けのチャットやエージェントでは、Prompt Shields を有効にします。
- 入力プロンプトには User Prompt Shield を適用します。
- モデルに渡す前に、グラウンディングコンテンツ(RAG のドキュメントチャンク、ツールの出力、取得したウェブページ)に Indirect Prompt Shield を適用します。間接的なプロンプトインジェクションは、影響が大きい一方で、可視性が低いリスクです。
-
RAG アプリではグラウンディング検出を行います。 モデルが応答を生成した後、ソースチャンクとともにグラウンディング検出を呼び出します。根拠のない主張にはフラグを立てるか、拒否します。レイテンシーは増加します(モデル呼び出しが 1 回増えます)が、重大な影響を及ぼし得るアプリ(医療、法律、金融)では、ハルシネーションに対する主な防御策です。
-
大規模にテキストやコードを生成する製品では、保護対象コンテンツの検出を使用します。
- テキスト:SaaS のコピーライティングツール。
- コード:開発者向けアシスタント(Copilot 形式)。 出力にフラグを立て、抑制するか注釈を付けます。
-
ブランド固有またはドメイン固有のリスク(競合他社への言及、規制対象の開示文言、社内コードネーム)には、カスタムカテゴリとブロックリストを使用します。 Content Safety Studio で、カテゴリごとに約 100 件のサンプルを使ってカスタムカテゴリをトレーニングします。
-
アーキテクチャパターン(サイドカー/ミドルウェア)。
- リクエスト → Prompt Shield →(LLM 呼び出し)→ 出力分類器(有害性、グラウンディング、保護対象コンテンツ)→ 応答。
- フェイルクローズにします。Content Safety の呼び出しでエラーが発生した場合、制御されていない LLM の出力を返さないでください。
- 監査と調整のため、すべての判定(許可/ブロック/フラグ設定)をログに記録します。
-
パフォーマンス。 各ガードレールによって 50~300 ms の遅延が追加されます。入力チェックと出力チェックは並列化し、最初にハードブロックが発生した時点で処理を打ち切ります。ユーザーが想定する応答時間を踏まえて、レイテンシーを見積もります。
-
運用。 プライバシー対策を講じたうえで、ブロックされたコンテンツのサンプルを毎週確認します。しきい値、カスタムカテゴリ、ブロックリストを調整します。カテゴリごとに誤検知率と見逃し率を追跡します。
ガードレール
- 既定のフィルターは基本設定であり、安全対策のすべてではありません。 Prompt Shields、グラウンディング、カスタムカテゴリで実際の抜け穴を塞ぎます。
- 有害カテゴリのスコアをエンドユーザーに公開しないでください。 「あなたの発言の暴力スコアは 6 です」のようなメッセージは、攻撃者がジェイルブレイクを調整する助けになります。
- Content Safety のエラー時はフェイルクローズにします。 サービスからの 500 エラーによって、モデレーションされていない LLM の出力がユーザーに届いてはなりません。
- 間接的なプロンプトインジェクションは、見過ごされがちなリスクです。 ユーザーのプロンプトは見えますが、取得したウェブページやドキュメントに含まれる悪意のある文字列は見えません。グラウンディングコンテンツには常にシールドを適用してください。
- グラウンディング検出では、グラウンディングソースを送信する必要があります。 RAG アプリにはもともとソースがありますが、チャットのみのアプリにはありません。
- カスタムカテゴリは、製品ポリシーの代わりにはなりません。 カスタムカテゴリは検出するものであり、ユーザーが別のツールで有害なコンテンツを生成するのを防ぐものではありません。
- 保護対象コンテンツの検出は、最善努力によるものです。 著作権や知的財産(IP)の審査は法的な手続きであり、API の結果ではありません。
- Content Safety は呼び出しごとに課金されます。 トラフィックの多いアプリではコストの見積もりが必要です。すべての機能を呼び出しごとに実行する必要はありません(グラウンディング検出は高コストのため、ユースケースに応じて適用してください)。
- SOC 側で試行やパターンを検出するには、Defender for Cloud AI と組み合わせてください(
defender-for-cloud-ai)。
よくあるアンチパターン
- 「デフォルトのフィルターで十分」 — ジェイルブレイクやインジェクションに対する保護がありません。
- 「『すべてのソースが信頼できる』ため、間接的なプロンプトシールドは省略」 — ソースはそこに存在することは信頼できますが、侵害されていないとは限りません。RAG コーパスはポイズニングされる可能性があります。
- 「グラウンディングの有無にかかわらず、すべてのチャット呼び出しでグラウンデッドネスを確認」 — 照合するグラウンディングソースのない純粋なチャットにもコストがかかります。
- 「チューニング用にユーザーのプロンプトを平文で記録」 — プライバシーや個人を特定できる情報(PII)が漏えいするおそれがあります。仮名化してください。
- 「エラーメッセージに Content Safety の重大度スコアを返す」 — 攻撃者に調整の手掛かりを与えます。
- 「5 件の例でカスタムカテゴリをトレーニング」 — モデルの性能向上は見込めません。最低でも約 100 件必要です。
- 「ブロックリストを主な対策として使用」 — 言い換えを見逃します。分類器カテゴリと組み合わせてください。
- 「出力に対してのみ Content Safety を実行」 — 入力攻撃(ジェイルブレイク)がモデルに届いてしまいます。
プロンプトの例
Azure OpenAI 上の RAG ベースのカスタマーサポートアシスタント向けに、Content Safety のガードレールを設計してください。インターネットをグラウンディングに利用するツールを備えた Foundry エージェント向けに、Prompt Shields を構成してください。10 代のユーザー向け製品のコンテンツフィルターの重大度しきい値を調整してください。医療 Q&A アシスタントの幻覚を検出するため、グラウンデッドネス検出を追加してください。「競合他社への言及」のカスタムカテゴリをトレーニングし、出力ブロックリストとして統合してください。コストとレイテンシのモデルを作成してください。ユーザー数 1 万人のアプリで、チャットの各ターンに発生する Content Safety の呼び出し回数を見積もります。インシデント対応手順書を作成してください。「プロンプトシールドがジェイルブレイクの試行をブロックした」パターンを SOC がどのように処理するかを説明します(Defender for Cloud の AI アラートと組み合わせます)。
Microsoft Learn
- Content Safety の概要:https://learn.microsoft.com/azure/ai-services/content-safety/overview
- テキストのモデレーション:https://learn.microsoft.com/azure/ai-services/content-safety/concepts/harm-categories
- 画像のモデレーション:https://learn.microsoft.com/azure/ai-services/content-safety/quickstart-image
- Prompt Shields:https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection
- グラウンデッドネス検出:https://learn.microsoft.com/azure/ai-services/content-safety/concepts/groundedness
- 保護対象のコンテンツ:https://learn.microsoft.com/azure/ai-services/content-safety/concepts/protected-material
- カスタムカテゴリ:https://learn.microsoft.com/azure/ai-services/content-safety/concepts/custom-categories
- Azure OpenAI のコンテンツフィルタリング:https://learn.microsoft.com/azure/ai-services/openai/concepts/content-filter
- Content Safety Studio:https://learn.microsoft.com/azure/ai-services/content-safety/studio-quickstart