
Amazon Bedrock의 「모델 호출 로그 기록」 보안 대책
요약
Amazon Bedrock의 모델 호출 로그 기록 기능 사용 시 발생할 수 있는 개인정보 및 기밀 정보 노출 위험을 분석합니다. 로그 활성화 시 S3와 CloudWatch에 저장되는 데이터의 보안 취약점을 검토하고 대응 방안을 제시합니다.
핵심 포인트
- 모델 호출 로그 활성화 시 프롬프트와 응답 내 개인정보가 그대로 노출됨
- 로그 데이터는 S3 및 CloudWatch Logs를 통해 저장 및 모니터링 가능
- 기밀 정보를 다루는 시스템에서는 로그 기록 기능 사용에 주의 필요
- 필요하지 않은 계정에서는 로그 기록 설정을 무효화하는 것이 권장됨
최근 Amazon Bedrock에서 생성형 AI 앱을 개발하거나, Bedrock을 통해 ClaudeCode를 구동하는 기회가 늘어나고 있습니다.
그 과정에서 Amazon Bedrock의 「모델 호출 로그 기록 (Model invocation logging)」 설정을 우선적으로 활성화하여 개발을 진행해 왔는데,
실제 로그를 확인해 보니 개인정보 등 서버에 보관하면 안 되는 정보들도 여러 가지 저장되어 버리는 상태였습니다.
이에 따라 「모델 호출 로그 기록」의 보안 설정을 검토하게 되었습니다.
Amazon Bedrock이 제공하는 기능으로, Bedrock에서 실행한 AI 모델에 대한 요청(Request) 및 응답(Response)을 기록 및 모니터링하기 위한 메커니즘입니다.
Amazon Bedrock의 추론 데이터는 기본적으로 AWS 측에서 저장되지 않도록 되어 있습니다.
「모델 호출 로그 기록」 설정을 활성화하면
기록할 수 있는 내용으로는 다음과 같은 정보를 취득할 수 있습니다.
입력 데이터: 모델에 보낸 프롬프트(Prompt) 및 파라미터(Parameter)
출력 데이터: 모델이 반환한 응답(Response)
메타데이터: 타임스탬프(Timestamp), 모델 ID, 토큰(Token) 수, 레이턴시(Latency) 등
설정은 Amazon Bedrock 화면에서 할 수 있습니다.
S3와 CloudWatch Logs로 출력할 수 있습니다.
설정은 리전(Region) 단위로 수행해야 합니다. 여러 리전에서 이용하고 싶은 경우에는 각 리전에서 설정을 수행해야 합니다.

출력은 다음과 같은 형태로 출력됩니다.

앱 개발 시 LLM의 동작을 확인하거나, 감사를 위해 누가 어떤 이용을 했는지 보관하는 데 필요한 정보를 취득할 수 있는 반면,
사용자가 입력한 프롬프트 정보, 출력 결과 등이 AWS 콘솔에서 그대로 노출되어 버립니다.
또한, S3에도 기밀 정보를 포함한 데이터가 보관됩니다.
※ 이번에는 ClaudeCode에서 Amazon Bedrock의 Claude를 호출했을 때의 로그입니다.
샘플로 입력한 개인정보(성명, 이메일 주소, 전화번호), IP 주소명이 로그에서 그대로 노출되고 있습니다.
★ 샘플로 일부러 기밀 정보를 입력했습니다만, 실제로 입력해도 되는 정보는 시스템의 보안 요구사항에 맞춰 검토가 필요합니다.
기밀 정보를 다루는 시스템에서 이러한 상황은 보안상 상당히 위험한 상태이므로, 몇 가지 구현 방안을 검토했습니다.
그럼 본론으로 들어가겠습니다. 몇 가지 대책안을 검토했습니다.
우선 「모델 호출 로그 기록」을 함부로 사용하지 않는 것이 하나의 선택지가 될 것이라고 생각합니다.
앞으로 소개할 다른 방안을 구현하더라도 정밀도가 100%라고 단정할 수 없으며, 휴먼 에러(Human Error)를 계기로 정보 유출이 발생할 가능성은 있습니다.
시스템 요구사항을 확인하여 「모델 호출 로그 기록」 취득이 필수적이지 않은 AWS 계정에서는 설정을 무효화할 필요가 있습니다.
또한, 활성화하는 경우에도 취득하는 정보의 보안 리스크를 고객에게 설명한 후, 활성화 설정을 진행해야 합니다.
예를 들어 다음과 같은 판단 기준으로 설정의 활성화/무효화를 판단합니다.
・감사 증적 취득·컴플라이언스(Compliance)를 위해 필요한 경우: 활성화
・고객의 기밀 정보를 다루며, 클라우드 상에 기밀 정보 보관이 불가능한 경우: 무효화
・고객 정보를 다루지 않는 개발용 환경에서 앱의 동작 확인을 하는 경우: 무효화
또한, Amazon Bedrock의 「모델 호출 로그 기록」은 AWS 계정 내의 Amazon Bedrock 처리 전부를 묻지도 따지지도 않고 로그 기록하는 구조이지만,
Amazon Bedrock AgentCore의 트레이스(Trace)를 통해서는 특정 AI 에이전트(Agent)만 트레이스 로그를 채취하는 것도 가능합니다.
설정은 Amazon Bedrock AgentCore의 런타임(Runtime)에서 트레이스 로그를 출력하고 싶은 에이전트를 선택하고,
「로그 전송 및 트레이스 (Log delivery and trace)」를 활성화함으로써 설정할 수 있습니다. (기본값은 무효화)

설정하면 다음과 같이 트레이스를 취득할 수 있습니다.

평소에는 Amazon Bedrock의 「모델 호출 로그 기록」이나 Amazon Bedrock AgentCore의 트레이스 설정을 무효화해 두었다가,
트레이스 로그를 보고 싶을 때만 설정을 일시적으로 활성화하는 운용도 가능합니다.
■ Amazon Bedrock의 「모델 호출 로그 기록」과 Amazon Bedrock AgentCore의 트레이스 비교
| Amazon Bedrock 「모델 호출 로그 기록」 | Amazon Bedrock AgentCore 트레이스 |
|---|---|
| 설정 가능한 범위 | AWS 계정 내의 리전 전체 |
Amazon Bedrock (LLM)에 기밀 정보를 입력하지 않도록 하는 대책도 중요합니다.
사용자 측에서 기밀 정보를 입력하지 않도록 주지시키는 방법이 있습니다. 만약 반드시 기밀 정보를 입력해야 하는 경우에는,
입력해도 문제가 없는 AWS 계정에서 작업을 수행하도록 하는 등 사용자 측에서 할 수 있는 대책도 있습니다.
또한, 시스템 측에서 할 수 있는 대책으로는 Amazon Bedrock (LLM)에서 처리를 수행하기 전에 입력 프롬프트(Prompt)로부터 개인 정보를 삭제하거나 마스킹(Masking)하는 시스템의 도입 검토도 필요합니다.
구체적으로는 AWS 서비스인 Amazon Comprehend를 사용한 개인 정보 (PII) 마스킹이나 서드파티(Third-party) 제 동적 데이터 마스킹 제품 등이 있습니다.
구성 이미지 / 처리 플로우는 다음과 같습니다.

※ 간이 AWS 구성도입니다. 실제로는 네트워크 서비스 (Gateway 등)나 보안 서비스 (Network Firewall) 등이 있습니다.

이 구현을 통해 LLM에는 기밀 정보를 입력하는 일이 없어지게 됩니다.
감사 증적 취득 및 컴플라이언스 (Compliance) 요건 달성을 위해 「모델 호출 로그 기록」 설정이 필요하지만, 일반 사용자가 다른 사용자가 입력한 프롬프트를 볼 수 없게 하고 싶다는 요건을 충족해야 하는 경우,
일반 사용자의 IAM 정책에 「모델 호출 로그 기록」용 CloudWatch Logs, S3의 열람 권한을 명시적으로 거부(Deny)하는 정책을 추가함으로써 실현 가능합니다.
(이번에는 IAM 정책으로 구현했지만, 멀티 계정 환경에서는 AWS Organizations의 SCP로 거부하는 것을 권장합니다.)
단, 일반 사용자에 의한 정보 열람은 방지할 수 있지만, 시스템 관리자는 모든 정보를 열람할 수 있으며 클라우드 내에도 데이터는 보관됩니다.
클라우드 내에 기밀 정보를 보관하고 싶지 않다는 요건이 있는 경우에는, ②에서 해설한 바와 같이 애초에 Amazon Bedrock (LLM)에 기밀 정보를 입력하지 않기 위한 솔루션의 도입이 필요합니다.
클라우드에 기밀 데이터를 보관하는 경우에는 데이터 보관 기간도 요건에 맞춰 변경해야 합니다.
이 설정을 적용하더라도 Amazon Bedrock AgentCore의 트레이스(Trace)를 수행하는 것은 가능하므로,
필요에 따라 LLM의 트레이스를 확인하고 싶을 때는 Amazon Bedrock AgentCore 측에서 취득하는 것을 권장합니다.
부여하는 권한
| 시스템 관리자 | 일반 사용자 |
|---|---|
| Amazon Bedrock 「모델 호출 로그 기록」 | 열람 가능 |
| Amazon Bedrock AgentCore 트레이스 (AI 에이전트(런타임)마다 설정 필요) | 열람 가능 |
실제 설정 방법은 다음과 같습니다.
■ 「모델 호출 로그 기록」용 CloudWatch Logs 열람을 거부하는 IAM 정책
※ 「모델 호출 로그 기록」을 여러 리전에서 활성화한 경우에는 모든 리전의 정보를 입력해 주세요.
예시에서는 도쿄 리전만 설정되어 있습니다.
{
"Version": "2012-10-17",
"Statement": [
...
Resource 부분에는 본인 환경의 「모델 호출 로그 기록」용 CloudWatch Logs의 ARN 정보를 입력해 주세요.
이 설정을 넣으면 CloudWatch 화면에서 「모델 호출 로그 기록」에 관한 정보만 열람할 수 없도록 설정할 수 있습니다.
생성형 AI 옵저버빌리티 (Observability): 모델 호출 화면


로그 관리 화면

CloudWatch Logs 상의 데이터 보존 기간은 「로그 관리」 - 「액션」 - 「보존 기간 설정」에서 변경할 수 있습니다.
시스템 요건에 맞춰 기간을 설정해 주세요.

■ 「모델 호출 로그 기록」용 S3 열람을 거부하는 IAM 정책
※ 「모델 호출 로그 기록」을 여러 리전에서 활성화한 경우에는 모든 리전의 정보를 입력해 주세요.
예시에서는 도쿄 리전만 설정되어 있습니다.
{
"Version": "2012-10-17",
"Statement": [
...
이 설정을 추가하면 아래와 같이 일반 사용자는 「모델 호출 로그 기록 (Model invocation logging)」용 S3 정보를 열람할 수 없게 됩니다.

S3 상의 데이터 보존 기간은 S3 버킷 정책 (S3 bucket policy)으로 설정할 수 있습니다.
이 부분 또한 시스템 요구사항에 맞춰 설정해 주세요.
① 「모델 호출 로그 기록 (Model invocation logging)」의 취득 필요 여부를 판단하여 필요한 AWS 계정에서만 활성화한다
기밀 정보를 다루는 시스템에서는 부주의하게 활성화하지 않는다.
Amazon Bedrock AgentCore 측에서 AI 에이전트별로 개별 활성화가 가능하므로, 이를 통해 대체할 수 없는지 검토한다.
② Amazon Bedrock (LLM)에 기밀 정보를 입력하지 않는다.
기밀 정보를 입력하지 않도록 사용자 측에 공지한다.
필요에 따라 기밀 정보의 마스킹 (Masking)을 수행하는 솔루션을 도입한다.
③ 「모델 호출 로그 기록 (Model invocation logging)」의 적절한 액세스 관리 (Access control)를 수행한다
시스템 관리자 이외의 일반 사용자는 열람할 수 없도록 한다.
필요에 따라 Amazon Bedrock AgentCore 측에서의 로그 수집을 검토한다.
마지막으로
이번에는 Amazon Bedrock의 「모델 호출 로그 기록 (Model invocation logging)」 보안 대책에 대해 해설했습니다.
Amazon Bedrock의 로그는 매우 기밀성이 높은 정보를 보유하고 있어 취급 시 주의가 필요한 정보이므로,
시스템에서 활성화할 때는 충분히 주의하여 도입해야 합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기