Skip to content

분류 시스템

데이터 분류 시스템은 Triggerfish 보안 모델의 기반입니다. 시스템에 들어오고, 이동하고, 떠나는 모든 데이터는 분류 레이블을 전달합니다. 이 레이블은 데이터가 어디로 흐를 수 있는지 -- 그리고 더 중요하게는 어디로 흐를 수 없는지를 결정합니다.

분류 수준

Triggerfish는 모든 배포에 단일 4단계 정렬 계층 구조를 사용합니다.

수준순위설명예시
RESTRICTED4 (최고)최대 보호가 필요한 가장 민감한 데이터M&A 문서, 이사회 자료, PII, 은행 계좌, 의료 기록
CONFIDENTIAL3비즈니스 민감 또는 개인 민감 정보CRM 데이터, 재무, HR 기록, 계약, 세금 기록
INTERNAL2외부 공유를 위한 것이 아닌 정보내부 위키, 팀 문서, 개인 메모, 연락처
PUBLIC1 (최저)누구나 볼 수 있는 안전한 정보마케팅 자료, 공개 문서, 일반 웹 콘텐츠

No Write-Down 규칙

Triggerfish에서 가장 중요한 보안 불변 규칙:

데이터는 동일하거나 더 높은 분류의 채널 또는 수신자에게만 흐를 수 있습니다. 이것은 고정 규칙입니다 -- 구성, 재정의 또는 비활성화할 수 없습니다. LLM은 이 결정에 영향을 미칠 수 없습니다. :::

분류 계층 구조: PUBLIC → INTERNAL → CONFIDENTIAL → RESTRICTED. 데이터는 위로만 흐릅니다.

이것은 다음을 의미합니다:

  • CONFIDENTIAL 데이터를 포함하는 응답은 PUBLIC 채널로 전송할 수 없습니다
  • RESTRICTED로 taint된 세션은 RESTRICTED 미만의 어떤 채널로도 출력할 수 없습니다
  • 관리자 재정의, 엔터프라이즈 escape hatch, LLM 해결 방법이 없습니다

유효 분류

채널과 수신자 모두 분류 수준을 전달합니다. 데이터가 시스템을 떠나려 할 때, 대상의 유효 분류가 무엇을 보낼 수 있는지 결정합니다:

EFFECTIVE_CLASSIFICATION = min(channel_classification, recipient_classification)

유효 분류는 두 값 중 낮은 값입니다. 이는 높은 분류의 채널과 낮은 분류의 수신자의 조합이 여전히 낮은 분류로 취급된다는 것을 의미합니다.

채널수신자유효 분류CONFIDENTIAL 데이터를 받을 수 있습니까?
INTERNALINTERNALINTERNAL아니오 (CONFIDENTIAL > INTERNAL)
INTERNALEXTERNALPUBLIC아니오
CONFIDENTIALINTERNALINTERNAL아니오 (CONFIDENTIAL > INTERNAL)
CONFIDENTIALEXTERNALPUBLIC아니오
RESTRICTEDINTERNALINTERNAL아니오 (CONFIDENTIAL > INTERNAL)

채널 분류 규칙

각 채널 유형에는 분류 수준을 결정하는 특정 규칙이 있습니다.

이메일

  • 도메인 매칭: @company.com 메시지는 INTERNAL로 분류됩니다
  • 관리자가 어떤 도메인이 내부인지 구성합니다
  • 알 수 없거나 외부 도메인은 EXTERNAL로 기본 설정됩니다
  • 외부 수신자는 유효 분류를 PUBLIC으로 낮춥니다

Slack / Teams

  • 워크스페이스 멤버십: 같은 워크스페이스/테넌트의 멤버는 INTERNAL입니다
  • Slack Connect 외부 사용자는 EXTERNAL로 분류됩니다
  • 게스트 사용자는 EXTERNAL로 분류됩니다
  • 분류는 LLM 해석이 아닌 플랫폼 API에서 도출됩니다

WhatsApp / Telegram / iMessage

  • 엔터프라이즈: HR 디렉터리 동기화와 매칭된 전화번호가 내부 vs. 외부를 결정합니다
  • 개인: 모든 수신자는 기본적으로 EXTERNAL입니다
  • 사용자가 신뢰할 수 있는 연락처를 표시할 수 있지만, 이는 분류 계산을 변경하지 않습니다 -- 수신자 분류를 변경합니다

WebChat

  • WebChat 방문자는 항상 PUBLIC으로 분류됩니다 (방문자는 소유자로 확인되지 않습니다)
  • WebChat은 공개 대면 상호 작용을 위한 것입니다

CLI

  • CLI 채널은 로컬에서 실행되며 인증된 사용자에 따라 분류됩니다
  • 직접 터미널 접근은 일반적으로 INTERNAL 이상입니다

수신자 분류 소스

엔터프라이즈

  • 디렉터리 동기화 (Okta, Azure AD, Google Workspace)가 수신자 분류를 자동으로 채웁니다
  • 모든 디렉터리 멤버는 INTERNAL로 분류됩니다
  • 외부 게스트 및 벤더는 EXTERNAL로 분류됩니다
  • 관리자가 연락처별 또는 도메인별로 재정의할 수 있습니다

개인

  • 기본값: 모든 수신자는 EXTERNAL입니다
  • 사용자가 인플로우 프롬프트 또는 컴패니언 앱을 통해 신뢰할 수 있는 연락처를 재분류합니다
  • 재분류는 명시적이며 로깅됩니다

채널 상태

모든 채널은 데이터를 전달하기 전에 상태 머신을 통과합니다:

채널 상태 머신: UNTRUSTED → CLASSIFIED 또는 BLOCKED
상태데이터 수신 가능?에이전트 컨텍스트에 데이터 전송 가능?설명
UNTRUSTED아니오아니오신규/알 수 없는 채널의 기본값. 완전히 격리됩니다.
CLASSIFIED예 (정책 범위 내)예 (분류 포함)검토되어 분류 수준이 할당되었습니다.
BLOCKED아니오아니오관리자 또는 사용자에 의해 명시적으로 차단되었습니다.

보안 새 채널은 항상 UNTRUSTED 상태로 시작합니다. 에이전트로부터 어떤 데이터도 받을 수 없고 에이전트 컨텍스트에 데이터를 보낼 수 없습니다. 관리자(엔터프라이즈) 또는 사용자(개인)가 명시적으로 분류할 때까지 채널은 완전히 격리된 상태로 유지됩니다. :::

분류와 다른 시스템의 상호 작용

분류는 독립적인 기능이 아닙니다 -- 전체 플랫폼에서 결정을 주도합니다:

시스템분류 사용 방식
세션 taint분류된 데이터에 접근하면 세션이 해당 수준으로 상승합니다
정책 hookPRE_OUTPUT가 세션 taint를 대상 분류와 비교합니다
MCP GatewayMCP 서버 응답이 세션을 taint하는 분류를 전달합니다
데이터 계보모든 계보 기록에 분류 수준과 이유가 포함됩니다
알림알림 콘텐츠도 동일한 분류 규칙의 대상입니다
에이전트 위임수임 에이전트의 분류 상한이 호출자의 taint를 충족해야 합니다
Plugin 샌드박스Plugin SDK가 모든 방출 데이터를 자동 분류합니다