개인 프로젝트 · 기기 정책·작업 조정

ADB Guard — Android · Ubuntu · Windows 작업 조정

Android의 디버깅 안전 정책과 Ubuntu broker, Windows 클라이언트를 연결한 작업 조정 시스템입니다. 요청·승인·실행·결과 확인을 나누고, 여러 기기가 같은 작업 자원을 동시에 변경하지 않도록 관리합니다.

내용 기준:

기술
Kotlin · Android · Python · SQLite · mTLS
구현 범위
Android 정책·승인 앱 · Ubuntu broker·운영 도구 · Windows 클라이언트
현재 상태
통합 소스와 로컬 회귀시험 구성 · 선택적 부팅 복구는 기기별 검증 필요

해결하려는 문제

여러 기기에서 작업을 요청하면 승인한 내용과 실제 실행이 달라지거나, 연결이 끊긴 뒤 같은 변경이 반복될 수 있습니다. 인증된 요청자와 승인 내용을 묶고 실행 자원을 일정 시간 점유하게 하며, 결과를 확인할 수 없는 작업은 불확실한 상태로 남깁니다.

요청부터 결과 확인까지

Android 정책 상태와 사용자 승인을 실행 직전까지 확인합니다. broker는 요청 접수, 실행, 효과 검증을 서로 다른 상태로 기록합니다.

  1. 요청 등록

    작업 내용·대상 자원·기한·중복 방지 키를 등록합니다. 같은 키의 다른 요청은 거절합니다.

  2. 인증된 승인

    내용 해시·일회성 승인값·안전 상태 버전을 인증된 승인자와 결속합니다.

  3. 작업 점유·실행

    겹치는 자원을 순서대로 점유하고, 현재 소유자와 세대 번호가 맞는 실행만 허용합니다.

  4. 효과 확인·복구

    연결 중단 등으로 결과가 불명확하면 UNCERTAIN으로 남기고, 변경을 재실행하기 전에 결과를 조회합니다.

주요 구현

Android 안전 정책

Wi-Fi 연결 또는 Tailscale 외 VPN 확인 시 디버깅 차단을 요청하고 설정값을 다시 읽습니다. 상태가 불명확하면 새 연결을 거절하며, 기본 재연결은 사용자 수동 동작으로 제한합니다.

기기 인증과 승인

등록 기기 인증서와 mTLS로 통신 주체를 확인합니다. 요청 본문의 역할 선언을 신뢰하지 않고, 승인 기한·내용 해시·안전 상태 변경을 broker에서 재검사합니다.

동시성·중복 실행 제어

SQLite 원장에 작업과 자원 점유를 저장합니다. 자원 전체를 함께 확보하고, 소유자·세대 번호 검증으로 만료된 실행자의 후속 변경을 거절합니다.

운영과 연결 복구

인증서 갱신, 연결 상태 보고와 복구 도구를 구성했습니다. 앱·broker·클라이언트 소스를 통합하고 요구사항, 구현 파일과 필수 검사를 연결해 변경 영향을 추적합니다.

구현과 검증 범위

구현 근거
  • apps/android/core/…/Policy.kt · Coordination.kt — 디버깅 정책과 승인 데이터 검증
  • services/coordination/broker/core.py — 작업 상태, 승인, 점유와 복구
  • services/coordination/operations/service.py — 등록 기기 인증과 인증서 갱신