Enterprise Authentication Integration
Why a DRM-Protected Document Will Not Open on the Server
한국어 원문으로 표시합니다.
한 줄 요약
DRM 이 걸린 문서는 확장자만 평범할 뿐 실제로는 암호문이라, 에이전트가 없는 서버에서는 절대 열리지 않는다 — 이건 버그가 아니라 설계다.
현장 첫 장면
운영 중인 결재 시스템에서 문의가 들어온다.
"첨부파일이 안 열려요. '파일 형식 또는 파일 확장명이 잘못되었습니다'라고 나옵니다."
개발자가 서버에 들어가 파일을 확인한다. 크기도 정상이고 확장자도 .xlsx 다.
로컬로 내려받아 열어 보니 열린다. 그런데 사용자는 안 열린다고 한다.
반대 상황도 있다. 서버에서 배치가 그 엑셀을 파싱하려는데 계속 실패한다.
이 시점에 알아야 할 것: 그 파일은 암호화돼 있다. DRM 때문이다.
DRM 은 무엇을 하는가
국내 기업 문서보안(DRM, Digital Rights Management)의 동작은 대략 이렇다.
- PC 에 DRM 에이전트가 설치돼 있다.
- 사용자가 문서를 저장하면 에이전트가 자동으로 암호화한다.
확장자는 그대로다. 겉보기엔 평범한
.xlsx다. - 사용자가 문서를 열면 에이전트가 정책 서버에 권한을 물어보고, 허용되면 메모리에서 복호화해 오피스 프로그램에 넘긴다.
- 권한은 사람·부서·기간·행위(열람/편집/인쇄/화면캡처) 단위로 걸린다.
즉 파일 자체가 암호화된 상태로 돌아다니고, 복호화는 에이전트가 한다. 이 구조가 사고를 만드는 지점이 여럿이다.
왜 서버에서는 안 열리는가
서버에는 DRM 에이전트가 없다. 그래서 서버 입장에서 그 파일은 확장자만 xlsx 인 알 수 없는 바이너리다.
- 자바 라이브러리(POI 등)로 파싱 →
Invalid header signature류 오류 file명령 →data로 나온다 (정상 xlsx 면Microsoft Excel또는Zip archive)- 미리보기/썸네일 생성 실패
- 전문 검색 색인 실패 (내용을 읽을 수 없으니)
진단 한 줄이 있다.
file 첨부파일.xlsx
head -c 4 첨부파일.xlsx | xxd
정상 .xlsx 는 ZIP 이라 50 4B 03 04(PK..) 로 시작한다.
DRM 암호화 파일은 벤더 고유의 헤더로 시작하거나 무작위 바이트다.
이 두 줄이면 "파일이 깨졌다"와 "DRM 이 걸렸다"를 구분할 수 있고,
그것만으로도 문제 절반이 해결된다. 나머지 절반은 우리가 못 푼다 — 벤더 영역이다.
그래서 SI 프로젝트에서 무엇을 해야 하는가
DRM 은 우리가 만들 수도, 고칠 수도 없다. 우리가 할 수 있는 것은 설계와 협의다.
1. 서버가 문서 내용을 읽어야 하는 요구사항이 있는가?
- 첨부파일 전문 검색
- 서버 사이드 미리보기(PDF 변환)
- 엑셀 업로드 → 데이터 일괄 등록
- 문서 내용 기반 결재 자동 분류
이런 요구사항이 있으면 분석 단계에서 반드시 DRM 담당 부서와 협의해야 한다. 설계가 끝난 뒤에 발견하면 요구사항 자체를 접거나 별도 예산이 필요하다.
2. 협의 결과는 보통 셋 중 하나다
| 방식 | 설명 | 주의점 |
|---|---|---|
| 서버용 복호화 모듈(SDK) | 벤더가 제공하는 서버 라이브러리로 복호화 | 별도 라이선스·비용. 서버 등록 필요 |
| 예외 정책 | 특정 업로드 경로/계정은 평문 저장 허용 | 보안팀 승인 필수. 범위를 최소화 |
| 업로드 시 사용자 PC 에서 복호화 | 에이전트가 있는 PC 에서 평문으로 올림 | 웹 업로드는 대개 자동 복호화가 안 된다 |
세 번째가 특히 함정이다. "사용자 PC 에 에이전트가 있으니 알아서 풀려서 올라가겠지"는 대부분 틀린다. 오피스 프로그램이 열 때는 복호화되지만, 브라우저가 파일을 읽어 업로드할 때는 정책에 따라 암호문 그대로 올라간다. 그래서 검증계에서 반드시 실제 DRM 이 적용된 PC 로 업로드 테스트를 해야 한다. 개발자 PC 는 대개 예외로 빠져 있어서 테스트가 통과한다. 그리고 오픈 후에 터진다.
3. 반출(복호화) 절차를 요구사항에 포함시켜라
DRM 이 걸린 문서를 외부(협력사, 고객)에 보내야 하는 업무가 있으면 반출 결재 절차가 필요하다. 대기업에서는 한 달에 수천 건씩 일어나는 일이다. 우리 시스템이 그 흐름의 일부라면(예: 협력사 포털에 파일 게시) 결재 연동이나 반출 API 연동이 요구사항에 들어가야 한다.
인접 개념 정리
DRM 과 자주 섞여 쓰이는 용어들을 구분해 두면 회의에서 헤매지 않는다.
| 용어 | 무엇을 하는가 | 통제 지점 |
|---|---|---|
| DRM | 문서 자체를 암호화하고 열람 권한을 통제 | 파일 |
| DLP | 정보 유출 경로(메일·USB·웹)를 감시·차단 | 경로 |
| 문서중앙화 | 문서를 PC 가 아닌 중앙 서버에만 저장 | 저장 위치 |
| VDI / 망분리 | 작업 환경 자체를 분리 | 환경 |
| 워터마킹 | 출력·화면에 식별 정보 표시 (유출 시 추적) | 사후 추적 |
이 다섯이 동시에 걸려 있는 현장이 흔하다. 그래서 "파일이 안 올라간다"는 증상 하나에 원인 후보가 다섯 개다. 문제를 좁히는 순서는 이렇다.
- 같은 파일이 로컬에서는 열리는가 → 열리면 파일은 정상, 환경 문제
- 파일 시그니처가 정상인가 → 아니면 DRM 암호화
- 다른 경로(메일/USB)로도 막히는가 → 막히면 DLP
- 특정 사용자만 그러한가 → 그러면 권한/정책
- 특정 망에서만 그러한가 → 그러면 망분리/방화벽
마지막으로 — 로그에 남길 것
DRM 관련 장애는 재현이 어렵다. 사용자 PC 환경에 달려 있기 때문이다. 그래서 업로드 처리 지점에 다음을 로그로 남기면 분석 시간이 크게 준다.
- 파일명, 크기, 선두 8바이트의 16진수
- 업로더 계정, 부서, 접속 IP, 브라우저
- 파싱 시도 결과와 예외 메시지 전문
선두 바이트 로그 하나만 있어도 "DRM 인가 아닌가"를 사후에 판정할 수 있다. 이걸 안 남기면 매번 사용자에게 파일을 다시 받아야 한다.