- Bedrock Guardrailsで生成AIの入出力を自動フィルタリングしセキュリティリスクを95%低減
- PII(個人情報)の自動検出・マスキングで情報漏洩対策をインフラ層で実現
- コンテンツフィルター・トピック制御・ワードフィルターの多層防御でエンタープライズ品質を確保
生成AIをプロダクションに導入する際、最大の懸念事項の一つが安全性の確保です。有害コンテンツの生成、個人情報の漏洩、不適切なトピックへの応答 — これらのリスクを適切に管理しなければ、企業での生成AI活用は進みません。
Amazon Bedrock Guardrailsは、生成AIの入出力に対してフィルタリングと制御を行うマネージドサービスです。SES案件でAI機能の開発に携わるエンジニアにとって、必須の知識となっています。
- Bedrock Guardrailsの基本概念と機能一覧
- コンテンツフィルター・トピック制御の設定方法
- PII(個人情報)の検出・マスキング実装
- SES案件でのGuardrails活用パターン
Amazon Bedrock Guardrailsとは
生成AIのセーフティレイヤー
Amazon Bedrock Guardrailsは、Bedrockの基盤モデル(Claude、Titan、Llama等)の入力と出力の両方にフィルタリングを適用するサービスです。
Guardrailsの主要機能は以下の4つです。
- コンテンツフィルター: 有害コンテンツ(暴力、性的、ハラスメント等)の検出とブロック
- トピック制御: 特定のトピック(投資アドバイス、医療診断等)を禁止
- ワードフィルター: 特定キーワードやフレーズのブロック
- PII(個人情報)制御: 電話番号、メール、住所等の検出とマスキング
アーキテクチャ概要
ユーザー入力
↓
┌──────────────────┐
│ Guardrails │
│ (入力フィルター) │
│ ・コンテンツ │
│ ・トピック │
│ ・PII検出 │
└───────┬──────────┘
↓
┌──────────────────┐
│ 基盤モデル │
│ (Claude等) │
└───────┬──────────┘
↓
┌──────────────────┐
│ Guardrails │
│ (出力フィルター) │
│ ・コンテンツ │
│ ・ワード │
│ ・PII マスク │
└───────┬──────────┘
↓
ユーザーへの応答
この入出力の二重チェックにより、アプリケーション層でのバリデーション実装を最小限に抑えられます。
コンテンツフィルターの設定
フィルターカテゴリと感度レベル
Bedrock Guardrailsのコンテンツフィルターは、以下のカテゴリをカバーしています。
| カテゴリ | 内容 | フィルター対象 |
|---|---|---|
| Hate | 差別的・偏見的な内容 | 入力・出力 |
| Insults | 侮辱的な表現 | 入力・出力 |
| Sexual | 性的な内容 | 入力・出力 |
| Violence | 暴力的な内容 | 入力・出力 |
| Misconduct | 犯罪行為の助長 | 入力・出力 |
| Prompt Attack | プロンプトインジェクション | 入力のみ |
各カテゴリは4段階の感度レベル(NONE / LOW / MEDIUM / HIGH)で設定できます。
AWS CLIでの設定例
aws bedrock create-guardrail \
--name "ses-project-guardrail" \
--description "SES案件向けAIチャットボットのGuardrail" \
--content-policy-config '{
"filtersConfig": [
{
"type": "SEXUAL",
"inputStrength": "HIGH",
"outputStrength": "HIGH"
},
{
"type": "VIOLENCE",
"inputStrength": "HIGH",
"outputStrength": "HIGH"
},
{
"type": "HATE",
"inputStrength": "HIGH",
"outputStrength": "HIGH"
},
{
"type": "INSULTS",
"inputStrength": "MEDIUM",
"outputStrength": "MEDIUM"
},
{
"type": "MISCONDUCT",
"inputStrength": "HIGH",
"outputStrength": "HIGH"
},
{
"type": "PROMPT_ATTACK",
"inputStrength": "HIGH",
"outputStrength": "NONE"
}
]
}' \
--blocked-input-messaging "申し訳ございません。このリクエストにはお応えできません。" \
--blocked-output-messaging "申し訳ございません。適切な回答を生成できませんでした。"
Terraform/CDKでの設定
Infrastructure as Code(IaC)でGuardrailsを管理する方法も重要です。
resource "aws_bedrock_guardrail" "ses_project" {
name = "ses-project-guardrail"
description = "SES案件向けAIチャットボットのGuardrail"
blocked_input_messaging = "申し訳ございません。このリクエストにはお応えできません。"
blocked_output_messaging = "申し訳ございません。適切な回答を生成できませんでした。"
content_policy_config {
filters_config {
type = "SEXUAL"
input_strength = "HIGH"
output_strength = "HIGH"
}
filters_config {
type = "VIOLENCE"
input_strength = "HIGH"
output_strength = "HIGH"
}
filters_config {
type = "HATE"
input_strength = "HIGH"
output_strength = "HIGH"
}
filters_config {
type = "PROMPT_ATTACK"
input_strength = "HIGH"
output_strength = "NONE"
}
}
}

トピック制御の設定
業務外トピックのブロック
企業のAIチャットボットでは、業務に関係ないトピックをブロックすることが重要です。
aws bedrock create-guardrail \
--name "ses-topic-control" \
--topic-policy-config '{
"topicsConfig": [
{
"name": "investment-advice",
"definition": "株式投資、仮想通貨、FXなどの金融投資に関するアドバイスや推奨",
"examples": [
"この株は買い時ですか?",
"ビットコインの将来性はどうですか?"
],
"type": "DENY"
},
{
"name": "medical-diagnosis",
"definition": "病気の診断、治療法の推奨、薬の処方に関する内容",
"examples": [
"この症状は何の病気ですか?",
"この薬を飲んでも大丈夫ですか?"
],
"type": "DENY"
},
{
"name": "competitor-comparison",
"definition": "競合他社の製品やサービスとの比較、評価",
"examples": [
"A社とB社のどちらがいいですか?",
"競合他社のサービスについて教えてください"
],
"type": "DENY"
}
]
}'
SES業界固有のトピック制御
SES案件のAIアプリケーションでは、以下のトピック制御が特に重要です。
{
"topicsConfig": [
{
"name": "salary-negotiation",
"definition": "具体的な単価交渉のアドバイスや他社の単価情報の開示",
"type": "DENY"
},
{
"name": "client-confidential",
"definition": "クライアント企業の内部情報、プロジェクトの機密情報",
"type": "DENY"
},
{
"name": "legal-advice",
"definition": "契約書の法的解釈、労働法に関する具体的なアドバイス",
"type": "DENY"
}
]
}
PII(個人情報)の検出とマスキング
PII検出の設定
Bedrock Guardrailsは以下のPIIタイプを検出・マスキングできます。
| PIIタイプ | 検出対象 | 推奨アクション |
|---|---|---|
| メールアドレス | ANONYMIZE | |
| PHONE | 電話番号 | ANONYMIZE |
| NAME | 個人名 | ANONYMIZE |
| ADDRESS | 住所 | BLOCK |
| SSN | 社会保障番号 | BLOCK |
| CREDIT_CARD | クレジットカード番号 | BLOCK |
| DRIVER_ID | 運転免許証番号 | BLOCK |
| IP_ADDRESS | IPアドレス | ANONYMIZE |
aws bedrock create-guardrail \
--name "ses-pii-protection" \
--sensitive-information-policy-config '{
"piiEntitiesConfig": [
{
"type": "EMAIL",
"action": "ANONYMIZE"
},
{
"type": "PHONE",
"action": "ANONYMIZE"
},
{
"type": "NAME",
"action": "ANONYMIZE"
},
{
"type": "ADDRESS",
"action": "BLOCK"
},
{
"type": "CREDIT_DEBIT_CARD_NUMBER",
"action": "BLOCK"
}
],
"regexesConfig": [
{
"name": "my-number",
"description": "日本のマイナンバー(12桁)",
"pattern": "\\b\\d{4}\\s?\\d{4}\\s?\\d{4}\\b",
"action": "BLOCK"
},
{
"name": "employee-id",
"description": "社員番号パターン",
"pattern": "\\b[A-Z]{2}-\\d{6}\\b",
"action": "ANONYMIZE"
}
]
}'
ANONYMIZEとBLOCKの使い分け
- ANONYMIZE: PIIをプレースホルダー({EMAIL}等)に置換して処理を続行
- BLOCK: PIIが検出された場合、リクエスト全体をブロック
SES案件では、以下の使い分けが推奨されます。
- チャットボット: 入力はANONYMIZE(会話を続行)、出力はBLOCK(PII出力を防止)
- 文書処理: 入力・出力ともにANONYMIZE(処理結果が必要)
- 金融系: 入力・出力ともにBLOCK(厳格なコンプライアンス対応)
ワードフィルターの活用
カスタムワードリスト
業界固有の用語や企業名をフィルタリングする場合に活用します。
aws bedrock create-guardrail \
--name "ses-word-filter" \
--word-policy-config '{
"wordsConfig": [
{"text": "社外秘"},
{"text": "内部資料"},
{"text": "取扱注意"}
],
"managedWordListsConfig": [
{"type": "PROFANITY"}
]
}'
マネージドワードリスト
Bedrockが提供するマネージドワードリスト(PROFANITY)は、多言語の不適切表現を網羅しています。カスタムリストと組み合わせることで、包括的なフィルタリングが実現できます。
実践例 — SES案件での実装パターン
パターン1: カスタマーサポートBot
import boto3
import json
bedrock = boto3.client('bedrock-runtime')
def invoke_with_guardrail(user_input: str) -> str:
response = bedrock.invoke_model(
modelId='anthropic.claude-3-5-sonnet-20241022-v2:0',
guardrailIdentifier='ses-guardrail-id',
guardrailVersion='DRAFT',
body=json.dumps({
'anthropic_version': 'bedrock-2023-05-31',
'max_tokens': 1024,
'messages': [
{
'role': 'user',
'content': user_input
}
]
})
)
result = json.loads(response['body'].read())
# Guardrailの介入チェック
if response.get('x-amzn-bedrock-guardrail-action') == 'BLOCKED':
return "申し訳ございません。このリクエストにはお応えできません。"
return result['content'][0]['text']
パターン2: 文書要約サービス
def summarize_with_pii_protection(document: str) -> str:
"""PII保護付きの文書要約"""
response = bedrock.apply_guardrail(
guardrailIdentifier='ses-pii-guardrail',
guardrailVersion='1',
source='INPUT',
content=[{
'text': {'text': document}
}]
)
if response['action'] == 'GUARDRAIL_INTERVENED':
# PIIがマスキングされたテキストで処理続行
sanitized_text = response['outputs'][0]['text']
# マスキング済みテキストで要約を生成
return generate_summary(sanitized_text)
else:
return generate_summary(document)
パターン3: RAG(検索拡張生成)との連携
def rag_with_guardrails(query: str, knowledge_base_id: str) -> str:
"""Guardrails付きRAG検索"""
response = bedrock.retrieve_and_generate(
input={'text': query},
retrieveAndGenerateConfiguration={
'type': 'KNOWLEDGE_BASE',
'knowledgeBaseConfiguration': {
'knowledgeBaseId': knowledge_base_id,
'modelArn': 'anthropic.claude-3-5-sonnet-20241022-v2:0',
'generationConfiguration': {
'guardrailConfiguration': {
'guardrailId': 'ses-guardrail-id',
'guardrailVersion': '1'
}
}
}
}
)
return response['output']['text']
モニタリングとログ分析
CloudWatchでのGuardrails監視
aws cloudwatch get-metric-statistics \
--namespace "AWS/Bedrock/Guardrails" \
--metric-name "GuardrailsBlockedCount" \
--dimensions Name=GuardrailId,Value=ses-guardrail-id \
--start-time 2026-03-25T00:00:00Z \
--end-time 2026-04-01T00:00:00Z \
--period 86400 \
--statistics Sum
監視すべき主要メトリクス
- GuardrailsBlockedCount: ブロックされたリクエスト数
- GuardrailsFilteredCount: フィルタリングされた項目数
- GuardrailsLatency: Guardrails処理のレイテンシ
- PIIDetectedCount: PII検出数(カスタムメトリクス)
高頻度のブロックが発生している場合は、フィルター感度の調整やユーザーガイダンスの改善が必要です。
Amazon Bedrockの基礎知識はこちらで確認できます。
AWS IAMセキュリティガイドでアクセス制御の詳細を学べます。
AWS CloudWatchモニタリングガイドで監視設定の詳細を確認できます。
SES案件でのGuardrails需要
Guardrailsスキルの市場価値
生成AIの企業導入が加速する中、AI安全性エンジニアの需要が高まっています。
SES市場では以下の案件でGuardrailsスキルが求められます。
- 金融機関: コンプライアンス対応のAIチャットボット開発
- 医療機関: 患者データ保護のAI問診システム
- EC企業: 商品レコメンドAIの公平性確保
- 公共機関: 市民向けAI窓口の安全性担保
- SaaS企業: AIアシスタント機能のセーフティ実装
学習ロードマップ
- 基礎: AWS認定クラウドプラクティショナー取得
- AI基礎: Amazon Bedrockの基本操作を習得
- セキュリティ: Guardrailsの設定・テスト方法を習得
- 応用: RAGやAgent Teamsとの連携実装
- 運用: CloudWatch監視とインシデント対応
まとめ — Guardrailsで生成AIを安全にプロダクション投入する
生成AIの企業導入において、安全性の確保はオプションではなく必須です。Amazon Bedrock Guardrailsを適切に設定することで、セキュリティリスクを最小化しつつ、AIの価値を最大限に引き出せます。
本記事のポイントをまとめます。
- ✅ コンテンツフィルターで有害コンテンツの生成を入出力で多層防御
- ✅ トピック制御で業務外の話題をインフラ層で自動ブロック
- ✅ PII検出・マスキングで個人情報漏洩リスクをゼロに近づける
- ✅ ワードフィルターで業界固有のセンシティブ用語を制御
- ✅ CloudWatch連携でGuardrailsの動作をリアルタイム監視
SES案件でAI機能の開発に携わるエンジニアは、Guardrailsを「知っている」から「使いこなせる」レベルまでスキルアップすることで、市場価値を大きく高められます。