.NET 문서 뷰어의 보안 고려 사항 (엔터프라이즈 앱용)
← Back to Blog7 min read

.NET 문서 뷰어의 보안 고려 사항 (엔터프라이즈 앱용)

Introduction

Doconut을 사용한 임베디드 .NET 문서 뷰어 보안 아키텍처
Doconut을 사용한 임베디드 .NET 문서 뷰어 보안 아키텍처

.NET‑based 문서 뷰어를 구축한다는 것은 처음부터 보안을 고민해야 함을 의미합니다. 엔터프라이즈 .NET 앱에 뷰어를 임베드할 때 가장 중요한 질문은 콘텐츠를 기밀로 유지하면서도 사용자에게 풍부하고 인터랙티브한 경험을 제공하는 방법입니다. DMS, 고객 포털, 혹은 법률‑테크 워크플로우를 구축하든, 보기 파이프라인의 모든 단계에서 지적 재산, 개인 데이터, 그리고 규제에 의해 요구되는 정보를 보호해야 합니다. 이 글에서는 시니어 개발자와 아키텍트를 대상으로 가장 흔한 공격 벡터, 위험을 최소화하는 아키텍처 선택, 그리고 Doconut의 범용 문서 뷰어가 어떻게 모든 문서 중심 .NET 솔루션의 안전한 기반으로 설계되었는지 살펴봅니다.


1. 임베디드 뷰어의 위협 환경

아름답게 디자인된 UI라도 뷰어가 데이터를 유출하거나 신뢰할 수 없는 코드를 실행한다면 공격 표면이 됩니다. 아래는 가장 흔히 마주하게 될 세 가지 위협 카테고리입니다:

위협일반적인 구현 형태비즈니스 영향
데이터 유출직접 다운로드 링크, 보안되지 않은 API, 혹은 원시 바이트를 브라우저로 전송하는 클라이언트‑사이드 렌더링.기밀 계약 손실, PII 유출, 규제 벌금.
교차 사이트 스크립팅 (XSS) 및 인젝션PDF 또는 Office 파일 내부에 악성 마크업이 포함되어 렌더링 시 스크립트가 실행됨.세션 탈취, 자격 증명 도난, 랜섬웨어 피벗.
무단 조작사용자가 주석을 추가·수정한 뒤, 감사 로그 없이 변경된 파일을 내보냄.법적 분쟁, 위조 기록, 규정 위반.

뷰어는 복잡한 포맷(PDF, DOCX, DWG 등)을 렌더링하고 주석OCR 같은 기능을 지원해야 하기 때문에 코드 경로가 늘어나고 공격 표면도 커집니다. 첫 번째 방어선은? 신뢰할 수 있는 서버‑사이드 처리제어된 클라이언트‑사이드 인터랙션 사이에 명확한 분리를 유지하는 것입니다.


2. .NET에서 서버‑사이드 vs. 클라이언트‑사이드 렌더링

서버‑사이드가 중요한 이유

  • 데이터 노출 제로 – 원본 파일이 신뢰된 백엔드를 떠나지 않습니다. 렌더링된 이미지 또는 안전한 HTML 조각만 브라우저로 전송됩니다.
  • 중앙 집중식 정책 적용 – 암호화, 레드액션, 시각적 마킹을 문서가 사용자에게 도달하기 전에 일관되게 적용할 수 있습니다.
  • 확장 가능한 격리 – 무거운 변환(예: CAD DWG를 래스터 이미지로 변환)은 격리된 백그라운드 작업으로 실행되어 침해 요청이 발생했을 때 영향을 제한합니다.

클라이언트‑사이드가 허용되는 경우

  • 지연 시간이 주요 고려 사항인 저감도 프리뷰(공개 브로셔 등).
  • 전체 인프라가 에어‑갭되어 있고 클라이언트가 신뢰된 기업 디바이스에서 실행되는 환경.

Doconut의 균형 잡힌 아키텍처

Doconut은 무거운 변환, OCR, 주석 준비를 서버에서 수행하고, 가벼운 HTML5‑기반 뷰어를 통해 모든 최신 브라우저에서 동작하도록 제공합니다. 뷰어는 서드‑파티 플러그인이 필요 없으며, 모든 렌더링은 서버‑사이드 Viewer 컴포넌트에서 생성된 스트림을 통해 전달됩니다. 이 설계는 많은 보안 취약 솔루션이 사용하는 “원본 파일 다운로드” 패턴을 근본적으로 차단합니다.

ASP.NET Core 파이프라인에 Doconut을 등록하는 방법

코드 스니펫 대신, 등록 과정을 DocImage.axd와 같은 Doconut 이미지 엔드포인트에 대한 요청을 가로채는 미들웨어 컴포넌트를 추가하는 것으로 생각하세요. 미들웨어는 기존 인증/인가 로직에 따라 각 요청을 검증한 뒤 이미지 스트림을 클라이언트에 전송합니다. 보안 기준을 충족하지 못하는 모든 요청을 차단하도록 미들웨어를 구성하면, 검증된 문서만 렌더링됩니다.


3. 접근 제어, 인증 및 인가 관리

접근 제어 전략

정적 파일 경로나 공개 URL을 노출하는 대신 Doconut을 기존 아이덴티티 제공자와 연동합니다. 사용자가 문서를 요청하면 서버‑사이드 코드는 다음을 수행해야 합니다:

  1. 표준 ASP.NET Core 인증 파이프라인을 통해 사용자의 신원과 역할을 확인합니다.
  2. 추가 비즈니스 로직 검증(예: 사용자가 올바른 부서에 속해 있는지, 특정 클레임을 보유하고 있는지) 을 수행합니다.
  3. 검증이 통과하면 Doconut 뷰어를 호출해 보안 스트림을 생성하고, 해당 스트림을 현재 HTTP 요청에 바인딩합니다. 세션이 종료되면 스트림은 재사용될 수 없습니다.

주석 권한

Doconut의 Annotation Plugin은 페이지 단위로 동작합니다. 사용자의 권한이 확인된 후 서버는 요청된 페이지에 대한 AnnotationManager를 생성합니다. 사용자가 CanAnnotate와 같은 적절한 클레임을 보유하지 않으면 서버는 읽기 전용 뷰를 반환하고, 주석 변경 시도는 403 응답으로 거부됩니다. 이를 통해 인가된 인원만 리뷰 코멘트를 추가·수정할 수 있습니다.


4. 데이터 유출 방지: 암호화, 시각적 마킹, 제어된 인쇄

엔드‑투‑엔드 암호화

Doconut이 처리하는 모든 문서 스트림은 HTTPS를 통해 전송되고, Azure Blob, SQL Transparent Data Encryption 등 선택한 스토리지 제공자에서 암호화된 상태로 보관됩니다. 뷰어는 래스터화된 페이지만 받으며 원본 파일에 직접 접근할 수 없으므로 클라이언트는 소스 문서를 절대 얻지 못합니다.

주석 기반 시각적 마킹(워터마크)

서버에서 렌더링하기 때문에 페이지가 브라우저로 전송되기 전에 사용자별 주석(예: 이름, 이메일, 타임스탬프가 포함된 반투명 텍스트 오버레이)을 삽입할 수 있습니다. 이 방식은 스크린샷을 억제하고 유출 시 포렌식 증거를 제공하면서 Doconut의 검증된 주석 기능 내에서 이루어집니다.

제어된 인쇄

많은 기업이 문서를 인증된 디바이스에서만 혹은 복사 횟수를 제한하여 인쇄하도록 요구합니다. Doconut의 Controlled Printing 기능은 서버에서 인쇄 명령을 가로채 사용자의 역할을 검증하고, 필요 시 “Printed on” 메모를 PDF에 삽입합니다. 인쇄 작업이 서버‑사이드에서 생성되므로 클라이언트는 마크가 없는 원본을 받지 않습니다.


5. OCR 및 주석을 위한 감사, 로깅, 규정 준수

불변 감사 로그

주석 추가·수정·삭제 각각은 XML 페이로드를 생성하고, 이를 Azure Append Blob이나 불변 데이터베이스 테이블에 저장할 수 있습니다. Doconut의 GetAnnotationXml() 메서드는 각 변경 후 정확한 상태를 반환하므로, XML과 타임스탬프, 사용자 식별자를 함께 보관하면 누가 언제 무엇을 어떻게 보았는지를 완벽히 재구성할 수 있습니다.

안전한 OCR 처리

OCR은 검색 가능한 PDF에 필수적이지만, OCR 엔진이 원시 텍스트를 클라이언트에 노출할 위험이 있습니다. Doconut은 OCR을 서버‑사이드에서 수행하고 검색 가능한 인덱스 데이터만 반환합니다. 원본 스캔 이미지는 암호화된 채 유지되며, 검색 텍스트는 뷰어와 동일한 요청 수명 규칙을 따르는 읽기 전용 캐시에 저장됩니다.

규제 정합성

모든 처리가 온프레미스(또는 고객이 제어하는 프라이빗 클라우드)에서 이루어지기 때문에 Doconut은 GDPR, HIPAA, PCI‑DSS 등 제3자 SaaS 엔드포인트로 보호 데이터를 전송하는 것을 금지하는 규정을 충족합니다. 또한 제품 아키텍처는 감사‑준비 로그를 지원해 재무, 법무, 의료 분야의 컴플라이언스 보고를 크게 간소화합니다.


6. Doconut이 보안 요구 사항을 경쟁력으로 전환하는 방법

보안 요구 사항Doconut 기능비즈니스 이점
데이터 유출 제로서버‑사이드 변환 및 스트림 기반 렌더링기밀 파일이 신뢰된 환경을 벗어나지 않음.
XSS 방어정제된 HTML 출력, 문서에서 클라이언트‑사이드 스크립트 실행 차단별도 코딩 없이 공격 표면 감소.
세분화된 권한 부여클레임 인식 미들웨어, 페이지 단위 주석 매니저기존 RBAC 모델과 일치하고 관리 부담 감소.
제어된 인쇄 및 시각적 마킹주석 기반 오버레이가 포함된 인쇄 워크플로데이터 유출 억제와 포렌식 추적 제공.
감사 가능성GetAnnotationXml(), 요청 범위 스트림, 서버 로그재무·법무·헬스케어 분야의 규정 보고 간소화.
확장 가능한 OCR서버‑사이드 OCR 플러그인, JSON 형태 검색 인덱스 반환원시 텍스트 노출 없이 수백만 페이지 즉시 검색.
크로스‑플랫폼 제공HTML5 뷰어는 모든 브라우저에서 동작, React, Angular, Vue, Blazor와 통합 가능데스크톱·모바일·키오스크 전반에 걸친 투자 미래 보장.

서버에서 무거운 작업을 담당하게 함으로써 Doconut은 비즈니스 로직에 집중할 수 있게 합니다—예를 들어 계약을 다단계 승인 워크플로에 연결하거나, 엔지니어링 도면을 안전한 포털에 노출하는 경우 등. 동일 코드베이스는 .NET 6, .NET Core, 최신 .NET 8에서도 동작하므로 공급업체 종속성을 걱정할 필요가 없습니다.

Try it yourself – Doconut은 무료 체험을 제공하며, 여기에는 뷰어, 주석, OCR, 변환 플러그인 모두가 포함됩니다. 몇 분 안에 샘플 ASP.NET Core 앱을 실행해 보시고 보안 모델이 실제로 어떻게 느껴지는지 확인해 보세요.


핵심 정리

  • 서버‑사이드 렌더링 및 스트림 기반 전송은 오래된 링크 공격을 차단하고 원본 파일을 신뢰 경계 안에 머물게 합니다.
  • 중앙 집중식 정책 적용(암호화, 레드액션, 주석 기반 마킹)은 데이터가 클라이언트에 도달하기 전에 수행됩니다.
  • 세분화된 클레임 검증을 통해 문서 열람 및 주석 추가를 기업 RBAC 정책에 맞게 제어합니다.
  • 제어된 인쇄와 주석 기반 워터마크는 데이터 유출을 억제하고 포렌식 증거를 제공합니다.
  • 불변 감사 로그GetAnnotationXml()을 통해 생성되어 규제 보고를 단순화합니다.
  • HTML5 뷰어는 모든 최신 브라우저에서 동작하므로 React, Angular, Vue, Blazor 프론트엔드와 손쉽게 통합됩니다.
  • Doconut의 무료 체험을 통해 보안, 성능, 개발자 경험을 실제 환경에서 검증한 뒤 도입을 결정할 수 있습니다.

자주 묻는 질문

Q1: Doconut이 Word 또는 Excel 변환을 위해 서버에 Microsoft Office 설치가 필요합니까?
A: 필요하지 않습니다. Doconut의 Converter Plugin은 로컬 Office 설치 없이 서버‑사이드에서 모든 Office‑to‑PDF 및 기타 포맷 변환을 수행합니다.

Q2: Doconut을 에어‑갭 환경에서 사용할 수 있나요?
A: 가능합니다. Doconut은 문서를 완전히 온프레미스에서 처리하고 외부 SaaS 서비스에 의존하지 않으므로 격리된 네트워크에서도 동작합니다.

Q3: 대용량 파일은 어떻게 처리하나요?
A: Doconut은 페이지를 필요에 따라 스트리밍하며, 메모리에는 필요한 부분만 로드합니다. 이 페이징 방식은 백그라운드 작업 및 대규모 워크로드에 최적화되어 있습니다.

Q4: 뷰어가 장애인 접근성을 지원하나요?
A: HTML5 뷰어는 표준 접근성 관행을 따르며, ARIA 속성을 추가하여 WCAG 가이드라인을 만족하도록 확장할 수 있습니다.

Q5: 무료 체험은 어디서 받을 수 있나요?
A: 공식 Doconut 사이트(https://doconut.com)에서 체험 라이선스를 요청하세요. 체험에는 뷰어, 주석, OCR, 변환 등 모든 핵심 플러그인이 포함됩니다.

#document viewer#security#.NET#enterprise architecture#OCR#annotation#문서 뷰어#보안#엔터프라이즈 아키텍처#주석