
Amazon Bedrock Guardrails를 사용해 보았다
요약
Amazon Bedrock Guardrails를 활용하여 생성형 AI 서비스의 안전성을 확보하는 방법을 다룹니다. 유해 콘텐츠 필터링, 특정 토픽 제어, 개인정보 마스킹 등 다양한 보안 정책 설정법을 실습 중심으로 설명합니다.
핵심 포인트
- Amazon Bedrock Guardrails를 통한 유해 콘텐츠 및 프롬프트 인젝션 방어
- 입력과 출력에 대해 차단 또는 탐지만 수행하도록 개별 액션 설정 가능
- 콘텐츠 필터, 거부된 토픽, 워드 필터 등 다양한 정책 조합 지원
- AWS 공식 워크숍 기반의 실습을 통한 보안 기능 검증
1. 서론
생성형 AI (Generative AI)를 프로덕트에 통합할 때는 안전 대책이 필수적입니다. 사용자에 의한 부적절한 질문이나 개인정보를 포함한 입력은, 실제로 운용해 보면 상상 이상으로 빈번하게 발생합니다. Amazon Bedrock의 Guardrails는 유해 콘텐츠 필터링, 특정 토픽 제어, 개인정보 마스킹, 프롬프트 인젝션 (Prompt Injection) 대책 등 이러한 과제에 대한 대표적인 안전 기능을 두루 갖추고 있습니다.
이번에는 AWS가 공개한 공식 워크숍인 「Building with Amazon Bedrock featuring Claude Code, Kiro, AgentCore, and Strands Agents」에 포함된 Security & safeguards labs (Lab S-1~S-6)를 실제로 직접 조작하며 테스트해 보았습니다. 참고로, 이 워크숍에서는 무료 샌드박스 (Sandbox) 환경이 제공되므로 추가 비용은 발생하지 않습니다. 본 기사는 해당 검증 결과를 바탕으로 정리했습니다.
2. Guardrails의 전체상 정리
Amazon Bedrock Guardrails에서는 하나의 Guardrail 안에 여러 정책 (Policy, 필터)을 조합하여 설정할 수 있습니다. 각 정책은 차단 (해당 내용을 차단함)과 탐지만 (차단하지 않고 탐지 결과만 기록함) 중 하나의 액션 (Action)을 선택할 수 있으며, 나아가 입력 (사용자의 프롬프트) · 출력 (모델의 응답) 각각에 대해 개별적인 액션을 설정할 수 있는 것이 특징입니다.
탐지만으로 설정하면, 우선 실제 운용 과정에서 오탐지 경향을 확인한 뒤 차단으로 전환하는 것과 같은 단계적인 도입도 가능합니다.
| 정책 | 개요 | 설정 가능한 액션 | 보충 |
|---|---|---|---|
| 콘텐츠 필터 (Content Filter) | 입력 · 응답의 유해성을 Hate (증오) / Insults (모욕) / Sexual (성적) / Violence (폭력) / Misconduct (부정 행위) 카테고리별로 판정함 | 차단 / 탐지만 | 카테고리별로 탐지 강도 (임계값) 설정 가능. Prompt Attack은 프롬프트 인젝션 · 탈옥 (Jailbreak) 탐지에 사용하는 전용 카테고리 |
| ... |
3. 콘솔에서 Guardrail을 만들어 보기
콘솔에서 「Amazon Bedrock」을 선택하고, 왼쪽 메뉴 목록에서 「가드레일 (Guardrails)」을 선택합니다.
「가드레일 생성」 버튼을 누릅니다.

가드레일 상세 정보 제공
생성할 가드레일 이름과, 가드레일이 프롬프트를 차단했을 때 표시할 메시지를 정의합니다.

콘텐츠 필터 설정
「유해 카테고리 필터 활성화」를 클릭합니다.
「프롬프트 공격 (Prompt Attack)」을 클릭합니다.
「Content filters tier」는 「Standard」를 선택합니다 (이번에는 깊게 다루지 않겠지만, 일본어 동작 확인을 위해서입니다. 자세한 내용은 아래 문서를 참조해 주세요).

거부된 토픽 추가
주식 관련 토픽을 거부하도록 「정의」와 「샘플 문구」를 추가합니다.

워드 필터 추가
모욕적 표현 필터를 활성화하고, 커스텀 단어 (라면)를 추가하여 입력 · 출력 모두 차단 대상으로 설정합니다.

민감 정보 필터 추가

「새로운 PII 추가」를 선택하면, 이미 준비되어 있는 PII (개인 식별 정보) 중에서 선택할 수 있습니다. 미국 · 영국 등의 PII는 존재했지만, 현재로서는 일본 고유의 것은 없습니다.
「건너뛰고 확인 및 생성」을 클릭하여 Guardrail을 생성합니다.
동작 확인
Guardrail이 생성되면 콘솔 상에서 테스트를 수행할 수 있습니다.
「모델 선택」을 클릭하여 프롬프트를 입력하고 「실행」을 클릭합니다.

주식에 관한 프롬프트를 입력한 결과, 거부 토픽 필터에 의해 차단되는 것을 확인할 수 있었습니다.

4. 코드로 Guardrail을 만들어 보기
Guardrail의 생성
import boto3, random, string
# 가드레일(Guardrail) 관리용 API(생성, 업데이트, 버전 발행 등)는 bedrock 클라이언트입니다.
# 실제로 추론 시 적용하는 ApplyGuardrail / InvokeModel은 bedrock-runtime 측이므로 혼동하지 마십시오.
...
실행 명령
python3 create_guardrail.py
Guardrail을 지정하여 프롬프트 실행하기
import json, sys, boto3
# python3 create_guardrail.py 실행 후, 콘솔에서 Guardrail ID를 확인하십시오.
GUARDRAIL_ID = "xxxxxxxxxxxx"
...
동작 확인
거부 토픽(Denied topics)과 워드 필터(Word filters)에 의해 차단되고 있음을 확인했습니다.
(.venv) participant:/environment/workshop/labs/guardrails$ python3 test_basic.py "千葉県の美味しいラーメン屋さんを教えて"
Apologies, the model's response to your request was blocked.
(.venv) participant:/environment/workshop/labs/guardrails$ python3 test_basic.py "Teslaの株をいつ購入して売却すべきかアドバイスを下さい"
...
5. 요금 체계
| 가드레일 필터 | 요금 |
|---|---|
| 콘텐츠 필터 (텍스트 콘텐츠) (Standard 티어와 Classic 티어 모두 해당) | 1,000 텍스트 유닛당 0.15 USD |
| ... |
주의 사항으로, 가드레일은 사용자의 입력 프롬프트와 모델의 응답 양쪽을 모두 검사하기 때문에, 1회 호출 시 2회분의 텍스트 유닛이 과금됩니다.
6. 요약
이번에는 Amazon Bedrock Guardrails를 콘솔과 코드(Boto3) 양쪽에서 실제로 생성해 보고, 거부 토픽(Denied topics), 워드 필터(Word filters), 콘텐츠 필터(Content filters), 민감 정보 필터(Sensitive information filters)가 어떻게 동작하는지 검증했습니다.
검증을 통해 다음과 같은 점들을 체감할 수 있었습니다.
- 콘솔에서 GUI 기반으로 직관적으로 가드레일을 생성할 수 있으며, 생성 후 즉시 테스트 기능을 통해 차단 동작을 확인할 수 있습니다.
- 코드로도 동일한 설정을 재현할 수 있으므로, 버전 관리나 CI/CD 통합 등 IaC(Infrastructure as Code)로서의 운영에도 확장하기 쉽습니다.
- 요금은 사용자 입력과 모델 응답 양쪽 모두에 대해 과금된다는 점과, 필터 종류에 따라 단가가 다르다는 점은 사전에 파악해 두어야 합니다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기