
Python으로 화면 녹화의 비밀 정보를 감사하기
요약
화면 녹화 데이터를 기반으로 AI 에이전트용 스킬을 생성할 때, URL 쿼리나 클립보드 등 민감 정보가 유출되는 것을 방지하기 위한 Python 감사(Audit) 스크립트 구현 방법을 다룹니다. JSON 이벤트 시계열을 분석하여 비밀 정보를 탐지하고 전송을 차단하는 게이트 역할을 수행합니다.
핵심 포인트
- JSON 이벤트 데이터 내 민감한 토큰 및 URL 파라미터 탐지
- 탐지된 비밀 정보는 로그에 남기지 않고 차단 신호만 전달
- OCR 도입 대신 녹화 환경 분리 및 더미 데이터 사용 권장
- 사내 고유 패턴을 반영한 규칙(RULES) 관리의 중요성
오전 중에 관리 화면에서 동일한 조작을 두 번 반복했다. 정형 작업이라면 화면을 한 번 보여주는 것으로 에이전트용 절차로 만들 수 있다면 도움이 될 것이다. 하지만 녹화 데이터를 다시 확인해 보니, URL의 쿼리, 윈도우 이름, 클립보드의 파편이 함께 남아 있었다.
화면 조작으로부터 스킬 (Skill)을 만드는 메커니즘에서는, 절차의 정확성보다 먼저 해석 (Analysis) 단계로 넘기는 기록을 차단할 지점이 필요하다. Microsoft의 Skill Recorder도 해석 시에는 이벤트 시계열, 윈도우나 문서의 타이틀, URL, 클립보드 프리뷰, 화면 이미지, 나레이션을 클라우드로 전송한다고 명시하고 있다. 로컬 녹화라고 해서 그 이후의 해석까지 로컬이라는 법은 없다. README의 주의 사항은 상당히 구체적이다.
여기서는 JSON으로 만든 이벤트 시계열을 해석 직전에 차단하는 작은 감사 (Audit)를 둔다. 이것은 비밀 정보를 안전하게 지우는 코드가 아니다. 탐지했을 때 전송을 중단하고, 녹화를 버린 뒤 안전한 더미 (Dummy) 값으로 다시 촬영하기 위한 게이트 (Gate)로 사용한다.
입력은 session.json으로 하고, 딕셔너리(Dictionary)와 배열(Array) 어디에 문자열이 있어도 조사한다. 값은 표준 출력 (Standard Output)에 내보내지 않는다. CI의 로그에 토큰 (Token)을 다시 남기는 사고를 피하기 위해서다.
import json
import re
import sys
...
파일명은 recording_audit.py로 하여, 해석 처리 전에 실행한다.
python recording_audit.py session.json
URL의 token, 클립보드의 Bearer 값, .env를 연 윈도우 이름, URL에 포함된 Basic 인증의 4건을 포함한 JSON으로 실행했다. 검증 시의 출력은 다음과 같았다.
BLOCK URL의 비밀 파라미터: $.events[0].url
BLOCK Bearer 토큰: $.events[1].preview
BLOCK 비밀 값으로 보이는 대입: $.events[2].title
...
탐지한 값 자체는 표시하지 않는다. 이 부분은 사소해 보이지만 중요하며, 디버깅용으로 print(text)를 추가하면 감사의 의미가 없어진다. 종료 코드 (Exit Code)가 1이므로, 래퍼 스크립트 (Wrapper Script)나 CI에서는 성공했을 때만 다음 해석 API를 호출할 수 있다.
다음 흐름에서 차단한다.
화면 이미지나 영상에 찍힌 시크릿 (Secret)은 이 JSON 감사로는 읽을 수 없다. OCR을 추가하여 만능으로 만들려고 하면, 이번에는 오탐지 (False Positive) 발생 시의 처리가 까다로워진다. 나는 녹화 전에 운영 환경의 관리 화면을 닫고, 더미 값만 사용하는 전용 브라우저 프로필 (Browser Profile)로 조작을 다시 하는 편이 더 빨랐다.
또 다른 함정이 있다. 패턴 일치는 누락을 줄이는 보조 수단일 뿐이다. sid나 사내 고유의 파라미터 이름은 이대로는 잡아낼 수 없다. 운용에 도입하려면 사내의 토큰 접두사 (Prefix)와 금지 호스트 이름을 RULES에 추가하고, 샘플 JSON을 테스트로 남겨두어야 한다. 탐지 누락을 나중에 재현할 수 있는 형태로 만들기 위해서다.
화면 녹화로부터의 스킬화는 UI를 그대로 재생하는 이야기가 아니다. 기록된 사실로부터 다른 입력에도 통하는 절차를 구성하는 공정이 된다. 그 경계를 넘는 데이터에 비밀이 섞여 있다면, 절차가 아무리 편리해도 다음 단계로 흘려보낼 수 없다.
우선 해석 직전에 이 정도 수준의 감사(Audit)를 둔다. 그다음 녹화 환경을 분리한다. 이 두 가지를 먼저 결정해 두면, 스킬을 늘린 후에 '과거의 기록을 전부 재검토하는' 작업을 상당히 줄일 수 있다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기