본문으로 바로가기
리옵트 핸드북
리옵트 핸드북
Expo 엔터프라이즈 프로덕션

New Architecture

SDK 56 브레이킹 체인지 총정리New Architecture 딥다이브React 19.2 동시성 패턴

네이티브 확장

Ch4. Expo UI — SwiftUI·Compose 선언형 네이티브Ch5. expo-widgets 홈 화면 위젯Expo Modules API v2 네이티브 확장

빌드·배포

EAS Build 고급 파이프라인EAS Update OTA 배포 전략보안·코드 서명·컴플라이언스

운영·품질

성능 모니터링·프로파일링테스트 전략 — E2E·네이티브·비주얼엔터프라이즈 앱 배포·MDM 통합

부록

검증 리포트업데이트 내역
핸드북›Expo 엔터프라이즈 프로덕션›보안·코드 서명·컴플라이언스
한국어English

보안·코드 서명·컴플라이언스

Store signing·OTA code signing·secrets·runtime config 네 경계로 본 Expo 보안. expo-updates codesigning, EAS 변수 visibility, App Attest·Play Integrity, 릴리스 승인 체크리스트.

핵심 요약

  • Expo 엔터프라이즈 보안은 Store signing(binary), OTA code signing(JS update), Secrets(자격 증명), Runtime config(tenant·flag) 네 경계로 나뉩니다.
  • EAS Update code signing은 Production/Enterprise 플랜에서 expo-updates codesigning:generate·configure로 인증서를 발급하고 적용 전 서명을 검증합니다.
  • private key는 repo 밖에서 생성해 KMS·비밀번호 관리자에 보관하고, certificate는 repo에 두되 만료 전 binary rollout으로 교체합니다.
  • EAS 환경 변수는 값별로 plain text·sensitive·secret visibility를 구분하고 Apple API key·Android service account JSON·signing key path는 secret으로 둡니다.
  • App Integrity는 Play Integrity·DeviceCheck/App Attest, jailbreak/root 오탐 정책, certificate pinning rotation, deep link hijacking 방지를 threat model에 포함합니다.

보안 경계

Expo 엔터프라이즈 앱의 보안은 네 개의 서명·신뢰 경계로 나뉩니다.

경계보호 대상Expo/EAS 표면
Store signing앱 binary 무결성EAS Build credentials, App Store/Play signing
OTA code signingJS update 무결성expo-updates code signing, EAS Update
Secretsbuild·submit·backend 자격 증명EAS environment variables, CI secrets
Runtime configtenant, API endpoint, feature flagapp config, MDM managed config, remote config

EAS Update code signing

EAS Update code signing은 Production 또는 Enterprise 플랜에서 쓰며, update가 클라이언트에 적용되기 전에 앱에 내장된 certificate로 서명을 검증합니다.

npx expo-updates codesigning:generate \
  --key-output-directory ../keys \
  --certificate-output-directory certs \
  --certificate-validity-duration-years 3 \
  --certificate-common-name "Company Mobile"

npx expo-updates codesigning:configure \
  --certificate-input-directory certs \
  --key-input-directory ../keys

운영 규칙:

  • private key는 repo 밖에서 생성하고 KMS 또는 비밀번호 관리자에 보관합니다.
  • certificate는 repo에 포함하되 만료 전 binary rollout으로 교체합니다.
  • key rotation runbook에는 compromise, expiration, personnel offboarding 상황을 포함합니다.
  • signed update 게시 권한은 release manager와 CI service account로 제한합니다.

EAS 환경 변수 visibility

값권장 visibility주의
EXPO_PUBLIC_API_URLplain text클라이언트 번들에 들어감
Sentry DSNplain text 또는 sensitivepublic DSN이라도 환경별 분리
Apple API keysecretsubmit/build job 전용
Android service account JSONsecret로그 출력 금지
OTA signing private key pathsecretCI workspace에 임시 파일로만 materialize

App Integrity

엔터프라이즈·금융·내부업무 앱은 다음 항목을 별도 threat model에 포함합니다.

  • Android Play Integrity / iOS DeviceCheck 또는 App Attest 연계
  • jailbreak/root 탐지의 오탐 정책
  • MDM managed app configuration 검증
  • certificate pinning 적용 범위와 rotation 계획
  • deep link hijacking 방지를 위한 scheme·universal links 검증

릴리스 승인 체크리스트

  • EAS Build credentials owner와 rotation 날짜 확인
  • OTA code signing certificate 만료일 확인
  • production EAS environment에서 secret 로그 노출 없음
  • sourcemap·dSYM·mapping 파일 업로드 권한 분리
  • runtimeVersion 변경이 필요한 native 변경을 OTA로 배포하지 않음
  • rollback key와 certificate가 퇴사자 개인 계정에 묶여 있지 않음

관련 문서

엔터프라이즈 앱 배포·MDM 통합

App Store·Play Store 심사, 엔터프라이즈 사이닝, MDM 배포 자동화

검증 리포트

Expo SDK 56 엔터프라이즈 프로덕션 핸드북의 공식 자료, 최신성, 소스 충돌, 코드 예제 검증 결과

Android 앱 엔터프라이즈 운영

결제·리포트·스토어 페이지·정책 대응을 Play Console 기준으로 운영하는 실무 핸드북

iOS 앱 엔터프라이즈 운영

결제·리포트·스토어 페이지·심사·리뷰를 App Store Connect 기준으로 운영하는 실무 핸드북

EAS Update OTA 배포 전략

SDK 56 Hermes bytecode diff 기본값, 채널·브랜치 매핑, republish·embedded rollback, fingerprint runtimeVersion, 1·10·50·100% rollout gate로 엔터프라이즈 OTA를 운영하는 방법.

성능 모니터링·프로파일링

EAS Observe Open Beta로 cold/warm launch·TTI·TTR·bundle load를 수집하고, Hermes V1·JSI 경계를 실기기로 검증하며 P95 기준 rollout gate를 두는 프로덕션 성능 운영 체계.

On this page

보안 경계EAS Update code signingEAS 환경 변수 visibilityApp Integrity릴리스 승인 체크리스트