appsok/agent-roadmap/phase/security-distribution/milestones/macos-distribution.md

4.2 KiB

Milestone: macOS 배포와 sandbox 검증

위치

  • Roadmap: agent-roadmap/ROADMAP.md
  • Phase: agent-roadmap/phase/security-distribution/PHASE.md

목표

AppSok을 사내 Mac에서 안정적으로 실행할 수 있도록 signing, notarization 또는 MDM 배포 후보를 정리하고, sandbox 상태에서 Jenkins network, Keychain, ADB 실행이 가능한지 검증한다.

상태

[계획]

승격 조건

  • 없음

구현 잠금

  • 상태: 잠금
  • 잠금 해제 조건: 사용자 리뷰에서 아래 항목을 승인하거나 방향을 결정할 때까지 signing/notarization/배포 자동화 구현을 시작하지 않는다.
  • 결정 필요: 사용자 리뷰 체크리스트
    • 사용자 표시명은 AppSok으로 통일하고, URL scheme/package/bundle id의 소문자 appsok 식별자는 유지하는 방향을 최종 승인한다.
    • 사내 배포 경로를 Developer ID/notarization, MDM, unsigned internal build 중 무엇으로 할지 결정한다.
    • 원격 Mac runner의 Developer ID Application: Dongmyung Lee (AWA82DP9WD) identity를 AppSok 배포 signing identity로 사용할지 승인한다.
    • notarytool Keychain profile 이름과 Apple notary credential 세팅 주체를 확정한다.
    • notarization 후 stapler로 ticket을 붙인 .app, .zip, .dmg, .pkg 중 어떤 산출물을 배포할지 결정한다.
    • "아무 맥에서나 설치" 범위를 Apple Silicon only로 볼지, Intel Mac까지 포함하는 universal build로 볼지 결정한다.
    • sandbox를 유지할지, ADB 실행 때문에 sandbox 해제가 필요한지 검증한다.
    • ADB binary를 앱에 bundle할지, 사용자 환경의 Android Platform Tools를 사용할지 결정한다.

범위

  • macOS app bundle metadata
  • entitlement와 sandbox 검증
  • Keychain/network/ADB 실행 smoke test
  • Developer ID signing, notarization, staple, MDM 배포 후보 문서화

기능

Epic: [runtime] macOS runtime 검증

앱이 실제 사내 Mac에서 필요한 외부 자원에 접근할 수 있는지 확인한다.

  • [network] sandbox 상태에서 Jenkins HTTPS 호출이 가능한지 확인한다.
  • [keychain] flutter_secure_storage Keychain read/write가 배포 build에서 동작하는지 확인한다.
  • [adb-exec] sandbox 상태에서 adb devices -ladb install 실행 가능 여부를 확인한다.
  • [url-scheme] appsok:// URL scheme이 설치된 앱으로 전달되는지 확인한다.

Epic: [distribution] 배포 방식

엔드유저가 경고 없이 설치하고 실행할 수 있는 사내 배포 방식을 정한다.

  • [bundle-id] bundle id와 앱 표시 이름 정책을 확정한다.
  • [signing] Developer ID signing/notarization 또는 MDM 배포 절차를 문서화한다.
  • [notary-profile] notarytool Keychain profile 존재 여부와 세팅 절차를 비밀값 없이 문서화한다.
  • [staple-assess] notarization 후 stapling과 spctl --assess 검증 절차를 문서화한다.
  • [arch-policy] Apple Silicon only 또는 universal build 배포 정책을 문서화한다.
  • [platform-tools] ADB binary 제공 방식과 업데이트 책임을 정한다.
  • [release-checklist] 배포 전 검증 checklist를 작성한다.

완료 리뷰

  • 상태: 없음
  • 요청일: 없음
  • 완료 근거: 모든 기능 Task와 Task 안에 명시된 검증 충족 후 기록한다.
  • 리뷰 필요:
    • 사용자가 완료 결과를 확인했다
    • archive 이동을 승인했다
  • 리뷰 코멘트: 없음

범위 제외

  • Auth Broker 또는 Jenkins plugin 구현
  • 중앙 감사 서버
  • Windows/Linux desktop target

작업 컨텍스트

  • 관련 경로: macos/Runner/, macos/Runner.xcodeproj/, pubspec.yaml
  • 표준선(선택): sandbox는 가능한 유지하고, 불가능한 경우 사유와 대안을 문서화한다.
  • 선행 작업: 사용 가능한 MVP
  • 후속 작업: Auth Broker와 Jenkins Plugin 후보 검토
  • 확인 필요: 구현 잠금의 사용자 리뷰 체크리스트가 AppSok 표시명 승인, Developer ID 사용 승인, notary credential profile, 배포 산출물 형식, universal build 필요 여부, 조직 배포 정책, sandbox/ADB 실행 검증, ADB binary 제공 방식을 다룬다.