메인 콘텐츠로 건너뛰기
Bridger Gateway는 공공데이터와 직접 등록한 API를 한 도메인으로 노출하는 만큼, 보안 경계가 가장 중요한 책임입니다. 다음 4개 레이어가 모든 요청에 적용됩니다.

인증

API Key / OAuth 2.0 으로 호출자 식별.

시크릿 관리

공공데이터 ServiceKey, BYOAPI 토큰을 Vault에 격리.

PII 필터

응답에서 개인정보 패턴을 마스킹.

감사 로그

누가 · 언제 · 어떤 도구를 호출했는지 추적.

1. 인증

API Key

가장 단순한 방식이며 대부분의 사용자가 사용합니다.
curl -X POST https://mcp.datari.kr/mcp \
  -H "x-api-key: $DATA_BRIDGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
  • 헤더: x-api-key 또는 Authorization: Bearer <key>
  • 키는 admin.datari.krSettings → API Keys에서 발급/회수
  • 키는 필요할 때 즉시 회수할 수 있습니다.

OAuth 2.0

조직 단위 권한 관리가 필요할 때 사용합니다. Authorization Code · Client Credentials 두 가지 흐름을 지원하며 자세한 스펙은 API Reference → Authentication에서 다룹니다.

2. 시크릿 관리

Bridger가 처리하는 시크릿은 다음 세 종류입니다.
종류예시저장 위치
공공데이터 ServiceKeydata.go.kr 발급 키Vault (Gateway 측)
BYOAPI Upstream 토큰사용자 API의 OAuth/HTTP Header 토큰Vault per-tenant 격리
Bridger API Key호출자 인증 키 (dk_live_…)DB(해시) + 토큰 자체는 발급 시 1회 노출
원칙
  • 시크릿은 절대 로그·응답·MCP 메타데이터에 포함되지 않습니다.
  • 공공데이터 미들웨어가 ServiceKey를 자동 주입하므로 사용자는 키를 다룰 필요가 없습니다.
  • BYOAPI 등록 시 사용자가 입력한 토큰은 Vault에 암호화 저장 후 즉시 메모리에서 제거됩니다.

3. PII 필터

응답 본문(중첩 JSON 포함)에서 다음 패턴을 자동 마스킹합니다.
  • 주민등록번호 (\d{6}-\d{7}******-*******)
  • 휴대전화 번호 (***-****-****)
  • 신용카드 번호 (13~19자리 숫자열 → ****-****-****-****)
  • 이메일 (***@***.***)

4. 감사 로그

모든 tools/call은 다음 필드와 함께 기록됩니다.
{
  "timestamp": "2026-04-30T07:31:09.412Z",
  "type": "tool_call",
  "action": "tools/call",
  "userId": "usr_...",
  "tenantId": "tnt_...",
  "tool": "getweatherforecast",
  "toolId": "@datari/weather-ultra-shortcast",
  "params": { "...": "마스킹 적용" },
  "status": 200,
  "duration": 312,
  "success": true
}
필드설명
timestampISO 8601 기록 시각
userId / tenantId호출자·테넌트 식별자
tool / toolId호출된 도구 이름과 등록 ID
params입력 파라미터 (PII·시크릿 필드 마스킹 후 저장)
statusupstream HTTP 상태 코드
duration처리 시간(ms)
success성공 여부
  • 입력 파라미터의 민감 필드는 마스킹 후 저장되며, 시크릿은 절대 기록되지 않습니다.
  • 시크릿 작업(secret.store·secret.read·secret.rotate·secret.revoke)은 값 대신 불투명 참조(opaqueRef)만 별도 기록합니다.
  • admin.datari.krAudit에서 GET /api/v1/audit/logs로 검색·다운로드합니다.

5. 네트워크 경계

  • 모든 트래픽은 TLS 1.3 (와일드카드 인증서 *.datari.kr, cert-manager + Let’s Encrypt).
  • Gateway는 Kubernetes NetworkPolicy default-deny를 기본으로 하며, 명시적으로 허용된 ingress 출처에서만 도달 가능합니다.
  • Pod는 runAsNonRoot + readOnlyRootFilesystem + 최소 권한 SecurityContext.

다음 단계

API Reference: Auth

헤더, 에러 코드, OAuth 흐름.

아키텍처

어디에서 인증·미들웨어·로그가 실행되는지.