> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 신뢰 및 보안

> 데이터 처리, 빌드 배포, 보안 책임에 대해 알아보세요.

Ayakaleaf Pro는 사용자의 인프라에서 실행됩니다. 데이터, 접근, 네트워크 경계는 사용자가 직접 제어합니다. 이 페이지에서는 기본 보안 모델을 설명하고, 사용자가 맡아야 할 운영상의 책임도 안내합니다.

### Ayakaleaf Pro는 신뢰할 수 있고 안전한가요?

Ayakaleaf Pro는 자체 호스팅 Overleaf Pro의 확장판이며, 소스 코드는 [ayaka-notes/ayakaleaf-pro](https://github.com/ayaka-notes/ayakaleaf-pro)에서 확인할 수 있습니다. 서비스가 실행되는 위치와 데이터가 저장되는 위치는 사용자의 배포가 결정합니다.

보안은 사용자의 구성과 운영에 달려 있습니다. 관리자 접근을 보호하고, HTTPS를 활성화하고, 백업을 유지하세요.

OpenAI의 친절한 지원에 감사드립니다. 저희는 [Codex Security](https://chatgpt.com/codex/cloud/security/findings)를 정기적으로 사용하여 저장소의 보안 문제를 검사하고 취약점 수정 결과를 공개적으로 공유할 예정입니다.

### 내 데이터는 어디로 가나요?

기본적으로 애플리케이션 데이터는 사용자의 배포 내에 유지됩니다.

* MongoDB는 사용자 및 프로젝트 데이터를 저장합니다.
* Redis는 캐시와 실시간 협업 데이터를 저장합니다.
* 로컬 볼륨 또는 S3 호환 스토리지가 프로젝트 파일을 보관합니다.

기본적으로 웹 서비스만 외부에 노출됩니다. 내부 서비스는 Docker 네트워크를 통해 통신합니다.

### 내 데이터가 제3자에게 전송되거나 제3자로부터 데이터를 가져오나요?

외부 통신이 필요한 기능을 활성화하지 않는 한 어떤 데이터도 배포 밖으로 나가지 않습니다. Ayakaleaf Pro는 *텔레메트리, 사용 분석, 충돌 보고서를 전혀 전송하지 않습니다*. 기본 구성에서는 오류 보고와 분석이 비활성화되어 있습니다.

일부 기능은 외부 요청을 전혀 하지 않습니다. 템플릿은 사용자의 배포에 저장되고 그곳에서 제공됩니다. Python 스크립트 실행기는 WebAssembly를 통해 사용자의 브라우저에서 실행되며, 런타임은 공개 CDN이 아닌 사용자의 웹 서비스에서 제공되므로 스크립트 코드와 출력은 네트워크로 전송되지 않습니다. Git Bridge는 내부 Docker 네트워크에서만 접근할 수 있습니다. 전체 프로젝트 검색, 기호 팔레트, 변경 내용 추적, 프로젝트 기록, 관리자 패널은 모두 로컬에서 동작합니다. 샌드박스 컴파일 컨테이너는 네트워크가 비활성화된 상태로 생성됩니다.

나머지 기능의 요청은 다음 대상으로 전송됩니다. 각 요청은 웹 서비스에서 시작됩니다.

<Accordion title="AI 어시스턴트 및 검색">
  AI 기능은 기본적으로 비활성화되어 있습니다. 활성화하면 채팅과 LaTeX 오류 제안 기능이 프롬프트와 관련 프로젝트 컨텍스트를 `AI_BASE_URL`로 구성된 모델 엔드포인트로 전송합니다. 선택적 웹 검색은 구성된 Tavily 호환 서비스로 쿼리를 보내고, 문서 검색은 `DOCS_MCP_URL`(기본값: `https://docs.overleaf.com/~gitbook/mcp`)로 쿼리를 보냅니다. 검색 결과는 모델 제공자에 대한 요청에 포함될 수 있습니다. 구성 및 사용자 제어에 대해서는 [AI 연동](/ko/on-premises/configuration/overleaf-toolkit/ai-integration "mention")을 참고하세요.
</Accordion>

<Accordion title="GitHub 연동">
  **GitHub 연동**은 `github.com` 및 `api.github.com`과 통신합니다. 사용자별로 GitHub 계정을 연결하면 활성화되며, 인증 시 `read:org`, `repo`, `workflow` 스코프를 요청합니다. 푸시하면 전체 프로젝트 파일 내용이 Git blob으로 업로드된 다음 트리와 커밋으로 조립됩니다. 또한 브랜치, 참조, 비교, 병합 작업을 수행하며, 연결된 계정의 프로필, 조직 멤버십, 저장소 목록을 읽습니다. 프로젝트 콘텐츠는 양방향으로 배포 밖으로 나갑니다. 연결된 GitHub 계정은 해당 계정에 연결된 모든 프로젝트의 내보내기 경로로 간주하세요.
</Accordion>

<Accordion title="Zotero 연동">
  **Zotero 연동**은 인증을 위해 `www.zotero.org`, 라이브러리 데이터를 위해 `api.zotero.org`와 통신합니다. 사용자별로 Zotero 계정을 연결하면 활성화됩니다. OAuth 핸드셰이크와 사용자의 API 키가 전송됩니다. 읽기는 단방향입니다. 참고문헌 라이브러리를 BibTeX로 가져오며, 프로젝트 콘텐츠는 업로드되지 않습니다.
</Accordion>

<Accordion title="Mendeley 연동">
  **Mendeley 연동**은 인증과 라이브러리 데이터 모두를 위해 `api.mendeley.com`과 통신합니다. 사용자별로 Mendeley 계정을 연결하면 활성화됩니다. OAuth 핸드셰이크는 Mendeley의 `all` 스코프(해당 API가 제공하는 유일한 스코프)를 요청하지만, Ayakaleaf는 읽기 작업만 수행합니다. 참고문헌 라이브러리와 그룹 라이브러리를 BibTeX로 가져오며, 프로젝트 콘텐츠는 업로드되지 않습니다. 액세스 토큰은 자동으로 갱신되며, Mendeley가 권한을 취소하면 저장된 자격 증명이 폐기되고 사용자에게 계정을 다시 연결하도록 요청합니다.
</Accordion>

<Accordion title="문서 페이지">
  **문서 페이지**는 `https://learnwiki.overleaf.com`에서 가져오며, `WIKI_URL`로 구성할 수 있습니다. 요청은 사용자의 브라우저가 아닌 웹 서비스에서 이루어지므로, 업스트림 위키에는 사용자의 서버만 보이고 사용자들의 주소는 절대 노출되지 않습니다. 요청한 페이지 제목만 전송되며, 응답은 디스크에 캐시됩니다. 외부로 나가는 문서 트래픽이 허용되지 않는다면 `WIKI_URL`을 자체 미러로 지정하거나 해당 대상을 차단하세요.
</Accordion>

<Accordion title="이메일 전송">
  **이메일 전송**은 사용자가 구성한 SMTP 서버나 메일 API와 통신하며, 기본값은 없습니다. 비밀번호 재설정 및 초대 링크를 포함하여 수신자 주소와 메시지 내용이 배포 밖으로 나갑니다.
</Accordion>

<Accordion title="두 가지 선택적 검사(PWD/reCAPTCHA)">
  <strong>두 가지 선택적 검사는 기본적으로 비활성화되어 있습니다.</strong> 유출된 비밀번호 검사는 `HAVE_I_BEEN_PWNED_ENABLED`가 설정되지 않으면 비활성 상태입니다. 활성화하면 비밀번호 자체가 아니라 비밀번호 SHA-1 해시의 앞 몇 글자만 `api.pwnedpasswords.com`으로 전송합니다. CAPTCHA 인증은 reCAPTCHA 사이트 키가 구성되지 않으면 비활성 상태이며, 활성화되면 `www.google.com`과 통신합니다.
</Accordion>

<Accordion title="싱글 사인온(OAuth/LDAP/SAML)">
  **싱글 사인온**은 사용자가 지정한 ID 공급자에만 연결하며, 전송되는 내용은 프로토콜에 따라 다릅니다. LDAP의 경우 웹 서비스가 디렉터리에 직접 연결합니다. 구성한 서비스 계정으로 바인딩하고, 정의한 base, 필터, 속성 목록으로 검색하며, 로그인 양식에 입력된 비밀번호를 디렉터리와 대조해 확인하므로 사용자 이름과 비밀번호가 디렉터리 서버에 전달됩니다. 디렉터리 기반 연락처를 활성화하면 연락처 목록을 채우기 위한 추가 검색이 수행됩니다. OIDC의 경우 웹 서비스가 토큰 엔드포인트에서 인증 코드를 교환한 다음 user-info 엔드포인트를 호출하며, 기본적으로 `openid profile email` 스코프를 요청합니다. 이는 `OVERLEAF_OIDC_SCOPE`로 구성할 수 있습니다. SAML의 경우 인증 요청은 서버 간 직접 연결이 아니라 사용자의 브라우저를 거쳐 ID 공급자로 전달됩니다. 세 가지 경우 모두 사용자의 이름과 이메일 주소는 공급자로 전송되는 것이 아니라 공급자로부터 수신되며, 이후 로컬 사용자 레코드에 저장됩니다.
</Accordion>

<Accordion title="타사 자격 증명">
  **타사 자격 증명**(OAuth 토큰 및 API 키)은 MongoDB의 사용자 레코드에 보관되며, 레코드별 salt와 초기화 벡터를 사용해 AES-256-CTR로 암호화됩니다. 평문으로 저장되거나 로그에 기록되는 일은 절대 없습니다. 암호화 키는 `${PROVIDER}_CIPHER_PASSWORD`가 설정되어 있으면 그 값을 사용하고(Zotero, Mendeley 등), 그렇지 않으면 처음 사용할 때 생성되어 소유자 전용 권한으로 데이터 볼륨 안에 저장됩니다. 이 키는 데이터 볼륨과 함께 백업하세요. 키를 잃어버리면 저장된 자격 증명을 복호화할 수 없으며, 모든 사용자가 계정을 다시 연결해야 합니다.
</Accordion>

<Accordion title="URL에서 연결된 파일">
  **URL에서 연결된 파일**은 사용자를 대신하여 배포가 가져오므로, 대상은 사용자가 입력한 주소가 됩니다. URL 연결 파일은 `ENABLED_LINKED_FILE_TYPES`에 `url`을 추가하지 않는 한 비활성화되어 있으며, 기본 구성에는 포함되어 있지 않습니다. Open in Overleaf API를 통한 외부 ZIP 및 TeX 가져오기도 동일한 `linked-url-proxy` 구성 요소를 사용합니다. 직접 요청의 경우 대상 호스트 이름을 확인하고 제한된 네트워크 대역을 거부하며, 구성된 허용 리소스 예외가 적용됩니다. `OVERLEAF_LINKED_URL_OUTBOUND_PROXY`를 구성하면 아웃바운드 프록시가 호스트 이름을 확인하므로 프록시 자체에서 내부 네트워크 제한을 적용해야 합니다. 애플리케이션의 네트워크 검사는 IP 주소가 포함된 URL에만 적용됩니다. 자세한 내용은 [외부 URL — 아웃바운드 프록시](/ko/on-premises/configuration/overleaf-toolkit/external-url#outbound-proxy "mention")를 참고하세요. 이러한 요청은 프로젝트 파일을 업로드하는 것이 아니라 입력된 URL을 가져옵니다.
</Accordion>

정책상 아웃바운드 허용 목록이 필요하다면, 활성화한 기능에 해당하는 호스트만 허용하세요. GitHub는 `github.com` 및 `api.github.com`, Zotero는 `www.zotero.org` 및 `api.zotero.org`, Mendeley는 `api.mendeley.com`, 문서는 `learnwiki.overleaf.com` 또는 자체 `WIKI_URL`, 비밀번호 검사는 `api.pwnedpasswords.com`, CAPTCHA는 `www.google.com`이며, 여기에 자체 메일 서버와 ID 공급자를 추가합니다. AI 기능이나 검색을 활성화했다면 구성한 모델, 웹 검색, 문서 MCP 엔드포인트도 허용하세요. 활성화한 기능에 필요하지 않은 대상은 거부하세요. 외부로 나가는 트래픽을 중앙에서 검사하거나 기록해야 하는 경우, `GITHUB_SYNC_PROXY_URL`, `MENDELEY_PROXY_URL`, `ZOTERO_PROXY_URL`을 설정하여 GitHub, Zotero, Mendeley 연동을 각각 HTTP 프록시를 통해 라우팅할 수 있습니다. URL 연결 파일 가져오기와 원격 가져오기는 `OVERLEAF_LINKED_URL_OUTBOUND_PROXY`를 사용할 수 있습니다. URL에서 연결된 파일은 요청 시점에 사용자가 대상을 선택하므로 호스트 목록으로 제한할 수 없습니다. 이 기능은 프록시 구성 요소 자체의 허용 리소스 설정으로 제한하거나 비활성화된 상태로 두세요.

<Warning>
  [s3.md](/ko/on-premises/configuration/overleaf-toolkit/s3 "mention") 스토리지를 활성화하여 Ayakaleaf Pro를 배포하면 S3에 저장된 데이터가 암호화되나요?

  *<strong>아니요.</strong>* 데이터는 암호화되지 않습니다. 모든 기록 청크, 템플릿 파일, PDF 및 기타 파일은 평문으로 저장됩니다. 타사 외부 S3 스토리지 공급자를 사용하는 경우 데이터 보안과 개인정보 보호에 각별히 주의하세요.
</Warning>

### 프로젝트 컴파일은 격리되나요?

Ayakaleaf Pro는 샌드박스 컴파일을 지원합니다. 각 컴파일은 별도의 컨테이너에서 실행됩니다. 샌드박스 컨테이너는 기본적으로 네트워크에 접근할 수 없습니다. 이를 통해 내부 네트워크 리소스의 노출을 줄입니다.

샌드박스 컴파일에는 호스트 Docker 소켓에 대한 접근이 필요합니다. 호스트 관리 권한은 신뢰할 수 있는 운영자로 제한하세요.

### CI 빌드와 컨테이너 이미지를 신뢰할 수 있나요?

GitHub Actions가 Ayakaleaf Pro 컨테이너 이미지를 빌드하고 게시합니다. 이미지는 공개 GitHub Container Registry에서 받을 수 있습니다.

이미지는 `amd64`와 `arm64`를 지원합니다. Docker는 이미지를 pull할 때 일치하는 아키텍처를 선택합니다.

프로덕션 환경에서는 `latest` 태그를 사용하지 마세요. 명시적인 버전, 가능하면 이미지 다이제스트로 고정하세요.

모든 업그레이드는 비프로덕션 환경에서 테스트하세요. 배포하기 전에 이미지, 구성, 연동을 검증하세요.

### 코드는 오픈소스인가요?

Ayakaleaf Pro와 관련 기능 저장소는 공개되어 있습니다. 따라서 사용자는 변경 사항을 검토하고 업스트림 소스를 추적할 수 있습니다.

공개된 소스 코드는 독립적인 검토를 가능하게 합니다. 하지만 그 자체로 릴리스 빌드의 재현성을 보장하지는 않습니다.

업그레이드하기 전에 다음을 검토하세요.

* 릴리스 태그 또는 커밋.
* 이미지 버전 또는 다이제스트.
* 타사 종속성 및 라이선스 요구 사항.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.