Google Docs 애드온을 설치하면 체크박스 몇 개짜리 동의 화면이 뜹니다. 구글이 권한을 요약할 때 쓰는 압축된 문장들이라, 내가 정확히 무엇에 동의하는 건지 궁금한 게 당연합니다.
LaTeXFlow 가 요청하는 권한 전부와, 각각이 어디까지 닿는지, 그리고 더 쓸모 있는 쪽 — 무엇에는 닿지 못하는지를 정리합니다.
한 문장 요약: 열려 있는 그 문서 하나를 읽고 고칠 수 있고, 다른 문서나 Drive 의 무엇에도 손댈 수 없습니다. 이건 정책상의 약속이 아니라 어떤 권한을 요청했느냐의 결과이고, 강제하는 쪽은 구글입니다.
1. 동의 화면이 보여 주는 것과 실제 권한
흐름이 두 페이지 입니다. 한 페이지가 아닙니다.
1 페이지 는 계정 화면입니다 — 이름, 프로필 사진, 이메일 주소. 이메일 권한이 여기서 승인됩니다.
2 페이지 가 권한 요약입니다. 체크박스 세 개 와 Continue 버튼.
셋 더하기 하나가 넷이고, 그게 전부입니다. “확인되지 않은 앱” 경고 화면은 나오지 않습니다 — 구글 검토를 거쳐 게시된 앱입니다. 만약 이걸 사칭한 무언가에서 그 경고를 보신다면 주소를 확인해 보세요.
찾아보신 분들이 헷갈리는 지점이 하나 있습니다. 구글 개발자 콘솔에는 동의 화면보다 권한이 하나 더 표시됩니다 — “이름과 프로필 사진” 항목입니다. 이건 제거할 수 없는 플랫폼 기본값이고, 애드온의 매니페스트에 없고, 코드가 쓰지 않으며, 동의 화면의 권한 목록에도 나오지 않습니다. 1 페이지에 보이는 이름과 프로필 사진 줄은 구글의 표준 계정 패널이지 애드온의 요청이 아닙니다.
2. 요청하는 권한 목록
정확히 넷입니다.
| 권한 | 뜻 |
|---|---|
documents.currentonly | 애드온이 지금 열려 있는 그 문서 하나 만 읽고 고칩니다 |
script.container.ui | Docs 안에 메뉴 · 사이드바 · 설정 창을 그립니다 |
script.external_request | 바깥으로 나가는 서버 요청 하나 — 동의한 수식을 수집 엔드포인트로 보냅니다 |
userinfo.email | 계정 이메일을 한 번 읽어 익명 식별자를 만듭니다 |
3. 각 권한이 닿는 범위
documents.currentonly — 지금 그 문서, 그리고 다른 어떤 문서도 아님.
핵심은 이거고, currentonly 라는 부분이 전부입니다. 넓은 문서 권한을 받아 두고 예의상 안 쓰는 게 아닙니다. 더 좁은 권한이라 다른 문서에 접근하는 것이 불가능 합니다. 시도해도 다른 파일을 열 수 없습니다. 구글이 거부합니다.
현재 문서 안에서는 다섯 가지에 쓰입니다 — 이미지 삽입, 텍스트를 이미지로 교체, 텍스트 스캔, 이미지를 LaTeX 으로 되돌리기, 선택 영역을 구분자로 감싸기.
script.container.ui — 화면 그리기.
메뉴, 사이드바 패널, 설정 창. Docs 창 안에 무언가를 표시하는 권한입니다. 문서 내용을 읽거나 쓰는 능력은 여기 들어 있지 않습니다. 그건 온전히 앞 권한의 몫입니다.
script.external_request — 요청 하나, 목적지 하나.
애드온의 서버 쪽 코드가 바깥으로 HTTP 요청을 보낼 수 있게 합니다. 이 코드베이스에서 그런 호출은 정확히 한 번, 함수 하나에 나오고, 목적지가 소스에 그대로 적힌 문자열입니다. 수식 하나를 수집 엔드포인트로 보내며, 데이터 수집이 켜져 있을 때만 동작합니다.
userinfo.email — 한 번 읽어 익명 ID 를 만든다.
이메일 주소는 코드의 한 지점에서, 수집 경로에서만 읽힙니다. 이메일에 salt 를 붙여 SHA-256 을 계산하고 앞에서 잘라 16 글자짜리 익명 식별자를 만드는 데 씁니다. 주소 자체는 전송되지도 저장되지도 않습니다.
4. 닿지 못하는 것
이쪽이 더 쓸모 있을 때가 많습니다.
| 접근 불가 | 이유 |
|---|---|
| 다른 Google Docs 문서 | documents.currentonly 가 불가능하게 만듭니다 |
| Drive, 폴더, 파일 목록 | Drive 권한을 아예 요청하지 않습니다 |
| Gmail · 캘린더 · 주소록 · 사진 | 어느 쪽 권한도 없습니다 |
| 스프레드시트 · 슬라이드 | 권한 없음 |
| 무언가를 삭제하는 것 | 삭제를 허용하는 권한이 목록에 없습니다 |
| 이메일 주소를 데이터로 | 해시를 만들려고 읽을 뿐, 전송·저장하지 않습니다 |
| 문서 제목 · 문서 ID · 수식 바깥의 본문 | 보내는 항목에서 의도적으로 빠져 있습니다 |
마지막 줄에 대해 — 데이터 수집이 켜져 있을 때 변환된 수식 하나에 대해 애드온을 떠나는 것은 LaTeX 원문, 렌더된 이미지, 어떤 종류의 구분자였는지, 익명 해시, 시각, 그리고 애드온에서 왔다는 표시입니다. 문서 ID 도, 문서 제목도, 그 수식 말고 다른 본문도 들어가지 않습니다.
5. 왜 이 권한이 필요한가
권한 목록은 그게 없으면 무엇이 깨지는지와 나란히 놓아야 뜻이 생깁니다.
- 문서 권한 을 빼면 수식을 읽지도 이미지를 넣지도 못합니다. 기능이 아예 없어집니다.
- 화면 표시 를 빼면 메뉴도 사이드바도 없어서 누를 자리가 없습니다.
- 외부 요청 을 빼면 데이터 수집이 멈춥니다. 그 외에는 아무것도 안 바뀝니다. 렌더링은 서버가 아니라 사이드바에서 일어나므로 변환에 영향이 없습니다.
- 이메일 을 빼면 익명 식별자를 만들 수 없어 수집된 표본을 사용자 단위로 묶지 못합니다.
세 번째에 한 줄 더. 이 권한이 제일 넓게 들리는데, 서버 쪽 요청만 해당합니다. 사이드바가 쓰는 수식 렌더링 라이브러리는 여느 웹 페이지가 스크립트를 불러오듯 브라우저가 가져오는 것이고, 이 권한의 범위가 아닙니다.
6. 수집은 여기서 opt-in 입니다
따로 적어 둘 만합니다. LaTeXFlow 두 제품의 기본값이 다르고, 그 방향이 사람들이 예상하는 쪽과 반대이기 때문입니다.
애드온 은 opt-in 입니다. 사이드바를 처음 열면 동의 오버레이가 덮고 Decline 과 Agree 가 있습니다. 동의하기 전에는 수집 함수가 즉시 반환하고 바깥으로 나가는 요청 자체가 없습니다. 줄어드는 게 아니라 없습니다. 답은 확장 프로그램 → LatexFlow → Data Collection Settings 에서 언제든 바꿀 수 있습니다.
웹 도구 는 opt-out 입니다. 기본으로 켜져 있고 끄는 설정이 있습니다.
같은 곳에서 만든 두 제품인데 기본값이 반대인 이유는 설치 단계의 마찰이 다르기 때문입니다. 이 부분이 신경 쓰이신다면, 애드온에서는 처음 열 때 답하는 그 화면이 결정 지점입니다.
7. 권한을 거두는 법
한 번 승인했다고 묶이지 않습니다. 애드온이 아니라 구글 쪽에서 합니다.
- Google 계정 에 접속합니다.
- 보안 → Google 계정으로 로그인 (또는 타사 앱 및 서비스와의 연결) 으로 들어갑니다.
- 목록에서 해당 앱을 고르고 액세스 권한 삭제 를 누릅니다.
이미 변환해 둔 문서에는 영향이 없습니다. 그 안의 수식은 이미지라 이미지로 남습니다. Marketplace 에서 삭제하면 애드온이 문서에서 사라지고, 액세스 권한 삭제는 권한을 회수합니다.
8. 회사 · 학교 계정이라면
조직에서 관리하는 계정은 관리자가 애드온 설치를 막아 둔 경우가 있습니다. 이때는 동의 화면 대신 관리자에게 문의하라는 안내가 뜹니다. 사용자 쪽에서 우회할 방법은 없고, 대안은 웹 도구 입니다. 끌어다 놓기 경로는 설치도 계정도 필요 없습니다.
9. 자주 묻는 질문
전에 열어 둔 문서도 볼 수 있나요. 아닙니다. currentonly 는 애드온이 실행 중인 그 문서에 대한 접근입니다. 기록도 없고 다른 문서 목록도 없습니다.
내 문서가 업로드되나요. 문서 본문은 전송되지 않습니다. 수집이 켜져 있으면 수식 단위로 — LaTeX 과 렌더 이미지, 익명 식별자 — 가 전송되고, 문서를 식별할 수 있는 것은 들어가지 않습니다. 수집이 꺼져 있으면 나가는 요청이 없습니다.
콘솔에 동의 화면보다 권한이 하나 더 보입니다. “이름과 프로필 사진” 항목은 콘솔에서 제거할 수 없는 구글 플랫폼 기본값입니다. 매니페스트에 없고, 코드가 쓰지 않고, 동의 화면 권한 목록에도 없습니다. 하나 어긋나는 게 정상입니다.
데이터 수집을 거절하면 어떻게 되나요. 수집만 안 합니다. 스캔 · 변환 · 되돌리기 전부 똑같이 동작합니다.
웹 도구도 권한이 같은가요. 아닙니다. 다른 제품입니다. 웹은 끌어다 놓기에 계정이 필요 없고, Drive 가져오기 버튼을 쓸 때만 drive.file 을 요청합니다. Picker 에서 고른 그 파일 하나에 대한 권한이고 그 밖에는 없습니다 — Drive 가져오기 경로 에 정리해 두었습니다.
10. 정리
- 권한은 넷입니다. 현재 문서만, 화면 표시, 외부 요청 하나, 이메일 한 번 읽기.
documents.currentonly는 단단한 경계입니다. 다른 문서는 안 건드리는 게 아니라 못 건드립니다.- Drive 접근 없음, 다른 구글 서비스 없음, 삭제 없음, 이메일은 전송되지 않습니다.
- 애드온의 수집은 opt-in 이고, 동의 전에는 외부 요청이 아예 일어나지 않습니다.
- 콘솔에 플랫폼 기본값 하나가 더 보이는 건 정상입니다.
- 권한은 Google 계정 보안 설정에서 언제든 거둘 수 있습니다.
이 권한들이 무엇에 쓰이는지 먼저 보고 결정하고 싶으시다면 설치부터 첫 변환까지 가 그 경로 전체를 다룹니다. 확인이 끝나셨다면 애드온은 Google Workspace Marketplace 에 있습니다.