implementing-llm-guardrails-for-security について
LLM アプリケーションに入出力ガードレールを追加するセキュリティスキルです。Python フレームワークを使い、ポリシー検査、PII 対応、プロンプトインジェクション対策、応答検証を扱います。
主な機能
- 01入出力の検証
- 02トピックとパターンのポリシー
- 03PII の検出とマスキング
- 04プロンプトインジェクション検査
- 05構造化応答の検証
活用シーン
- 01チャットボットへのコンテンツポリシー適用
- 02LLM 入力の機密データのマスキング
- 03アシスタントの回答トピック制限
- 04後続処理前の JSON 応答検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill implementing-llm-guardrails-for-securityインストール後、Claude Code で/implementing-llm-guardrails-for-securityを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdscripts/agent.py詳細
セキュリティのための LLM ガードレールの実装
使用するタイミング
- ユーザー入力を処理し、入出力の安全性を制御する必要がある、LLM を活用した新しいアプリケーションをデプロイする場合
- 組織のポリシーに準拠するため、既存のチャットボットや AI エージェントにコンテンツポリシーの適用を追加する場合
- 機密性の高い顧客データを扱う LLM パイプラインに、個人を特定できる情報(PII)の検出とマスキングを実装する場合
- トピックを制限し、対象外または禁止された問い合わせを拒否する必要がある AI アシスタントを構築する場合
- LLM の応答が下流システムやユーザーに渡される前に、想定されるスキーマに準拠しているか検証する場合
- 取得したドキュメントに含まれる間接的なプロンプトインジェクションから RAG パイプラインを保護する場合
次の用途には使用しないでください。 適切な認証、認可、ネットワークセキュリティ制御の代替として使用しないでください。ガードレールは多層防御の一部であり、境界防御ではありません。LLM を介さないユーザー間コミュニケーションのリアルタイムなコンテンツモデレーションには適していません。
前提条件
- ガードレールの依存関係をインストールするための pip を備えた Python 3.10 以降
- NeMo Guardrails のセルフチェックレール用の OpenAI API キーまたはローカル LLM エンドポイント(環境変数
OPENAI_API_KEYに設定) - Colang ベースのガードレール定義用の
nemoguardrailsパッケージ - 構造化出力の検証用の
guardrails-aiパッケージ(任意。JSON スキーマの適用に使用) - YAML 設定と、レールフロー定義に用いる基本的な Colang 2.0 構文の知識
ワークフロー
ステップ 1:ガードレールフレームワークをインストールする
必要な Python パッケージをインストールします。
# Core NeMo Guardrails library
pip install nemoguardrails
# Guardrails AI for structured output validation (optional)
pip install guardrails-ai
# Additional dependencies for PII detection and content analysis
pip install presidio-analyzer presidio-anonymizer spacy
python -m spacy download en_core_web_lg
ステップ 2:ガードレールセキュリティエージェントを実行する
エージェントは、入出力を検証する完全なパイプラインを実装します。
# Analyze a single input through all guardrail layers
python agent.py --input "Tell me how to hack into a system"
# Analyze input with a custom content policy file
python agent.py --input "Some text" --policy policy.json
# Scan a file of prompts through the guardrail pipeline
python agent.py --file prompts.txt --mode full
# Input-only validation (no LLM call, just check if input is safe)
python agent.py --input "Some text" --mode input-only
# Output validation mode (validate a pre-generated LLM response)
python agent.py --input "User question" --response "LLM response to validate" --mode output-only
# PII detection and redaction mode
python agent.py --input "My SSN is 123-45-6789 and email [email protected]" --mode pii
# JSON output for pipeline integration
python agent.py --file prompts.txt --output json
ステップ 3:コンテンツポリシーを設定する
許可するトピック、ブロックするパターン、PII カテゴリを定義した JSON ポリシーファイルを作成します。
{
"allowed_topics": ["customer_support", "product_info", "billing"],
"blocked_topics": ["politics", "violence", "illegal_activities", "competitor_products"],
"blocked_patterns": ["how to hack", "create malware", "bypass security"],
"pii_categories": ["PERSON", "EMAIL_ADDRESS", "PHONE_NUMBER", "US_SSN", "CREDIT_CARD"],
"max_output_length": 2000,
"require_grounded_response": true
}
ステップ 4:Colang で NeMo Guardrails を統合する
config.yml と Colang フローファイルを含む NeMo Guardrails の設定ディレクトリを作成します。
# config.yml
models:
- type: main
engine: openai
model: gpt-4o-mini
rails:
input:
flows:
- self check input
- check jailbreak
- mask sensitive data on input
output:
flows:
- self check output
- check hallucination
# rails.co - Colang 2.0 flow definitions
define user ask about hacking
"How do I hack into a system"
"Tell me how to break into a network"
"How to exploit vulnerabilities"
define bot refuse hacking request
"I cannot provide instructions on unauthorized hacking or security exploitation.
If you are interested in cybersecurity, I can suggest legitimate learning resources
and ethical hacking certifications."
define flow
user ask about hacking
bot refuse hacking request
ステップ 5:検証ミドルウェアとしてデプロイする
ガードレールをミドルウェアとしてアプリケーションに統合します。
from agent import GuardrailsPipeline
pipeline = GuardrailsPipeline(policy_path="policy.json")
# Pre-LLM input validation
input_result = pipeline.validate_input("user message here")
if not input_result["safe"]:
return input_result["blocked_reason"]
# Post-LLM output validation
llm_response = your_llm.generate(input_result["sanitized_input"])
output_result = pipeline.validate_output(llm_response, context=input_result)
if not output_result["safe"]:
return output_result["fallback_response"]
return output_result["validated_response"]
ステップ 6:ガードレールの有効性を監視する
ガードレールのログを確認し、ブロック率、誤検知、回避の試みを追跡します。
# Generate a summary report from guardrail logs
python agent.py --file interaction_logs.txt --mode full --output json > guardrail_audit.json
検証
- 入力ガードレールが既知のプロンプトインジェクションパターン(システムの上書き、ロールプレイによる回避、区切り文字のインジェクション)を正しくブロックする
- PII 検出機能が、ユーザー入力内のメールアドレス、電話番号、SSN、クレジットカード番号を特定してマスキングする
- トピック制限ガードレールがポリシー対象外の問い合わせを拒否し、対象内の問い合わせを誤検知なく許可する
- 出力ガードレールが、有害なコンテンツ、PII の漏えい、または対象外の内容を含む応答を検出して警告する
- 入力のみを検証する場合、ガードレールパイプラインによるリクエスト/レスポンスサイクルへの遅延増加が 200ms 未満である
- JSON 出力モードが、下流の監視ダッシュボードで使用できる、有効で解析可能な JSON を生成する
主な概念
| 用語 | 定義 |
|---|---|
| 入力レール | LLM に届く前にユーザー入力を傍受して検証し、インジェクション攻撃をブロックするとともに、機密データをマスキングするガードレールです |
| 出力レール | ユーザーに届く前に LLM が生成した出力を検証し、有害なコンテンツをフィルタリングするとともに、スキーマへの準拠を徹底するガードレールです |
| Colang | NVIDIA が提供する、会話型ガードレールのフローを定義するためのドメイン固有言語です。Python に似た構文で、ユーザーの意図パターンやボットの応答を指定します |
| PII のマスキング | テキストを処理する前に、個人を特定できる情報(氏名、メールアドレス、SSN)を検出してマスキングするプロセスです |
| コンテンツポリシー | ガードレールシステムが許可またはブロックするトピック、パターン、コンテンツカテゴリを定義する設定ファイルです |
| セルフチェックレール | LLM 自身が入力または出力が定義済みのポリシーに違反しているかどうかを評価する NeMo Guardrails の手法です |
| ハルシネーション検出 | LLM の応答が提供されたコンテキストに基づいているかを確認し、捏造された主張にフラグを立てる出力検証です |
ツールとシステム
- NVIDIA NeMo Guardrails:Colang フロー定義と YAML 設定を使用して、LLM アプリケーションにプログラム可能な入力、対話、出力のレールを追加するオープンソースのツールキットです
- Guardrails AI:PII、有害性、JSON スキーマへの準拠などに対応する、事前構築済みバリデーターのハブを備えた、構造化出力検証用の Python フレームワークです
- Microsoft Presidio:設定可能な NLP バックエンドにより、30 種類以上のエンティティタイプに対応するオープンソースの PII 検出・匿名化エンジンです
- Colang 2.0:Python に似た構文でガードレールフローを定義するイベント駆動型のインタラクションモデリング言語で、複数ターンの対話制御に対応しています
- OpenAI Guardrails Python:プロンプトインジェクションの検出とコンテンツポリシーの適用に対応する、OpenAI のクライアント側ガードレールライブラリです
コメント
Markdown 対応