물리 노드 경계
유효한 각 주문은 전용 물리 머신 한 대와 명확한 임대 기간에 해당합니다. 장치는 공유 가상 머신이 아니므로 프로세서, 메모리 및 로컬 스토리지가 다중 테넌트 가상 세션 형태로 다른 고객에게 할당되지 않습니다.
- 경계 객체주문, 장치, 노드, 임대 기간
- 확인 위치콘솔의 인스턴스 세부 정보
- 고객 작업장치 식별자와 임대 시작·종료 정보 확인
각 주문은 명확한 임대 기간이 지정된 전용 물리 머신 한 대에 해당하며 가상 머신이 아닙니다. ZoomMini는 물리 노드와 콘솔 운영을 담당하고, 고객은 시스템 계정, 애플리케이션 설정, 코드, 비밀 정보와 백업을 관리합니다. 경계가 명확해야 권한을 감사하고 회수할 수 있습니다.
전용 물리 머신은 고객 워크로드를 명확한 장치 경계 안에 배치하지만, 장치를 단독으로 사용한다고 해서 모든 계정, 원격 접속 및 애플리케이션 인증 정보가 자동으로 안전해지는 것은 아닙니다. 실제로 실행 가능한 격리 모델은 물리 계층, 제어 계층, 시스템 계층 및 워크로드 계층으로 구성됩니다.
유효한 각 주문은 전용 물리 머신 한 대와 명확한 임대 기간에 해당합니다. 장치는 공유 가상 머신이 아니므로 프로세서, 메모리 및 로컬 스토리지가 다중 테넌트 가상 세션 형태로 다른 고객에게 할당되지 않습니다.
콘솔은 장치 상태와 연결 정보를 확인하는 데 사용하며, VNC, 화면 공유 및 SSH는 시스템에 접속하는 데 사용합니다. 콘솔 세션과 운영체제 세션은 서로 다른 권한 영역이므로 각각 보호해야 하며 취약한 인증 정보를 함께 사용해서는 안 됩니다.
원격 주소를 얻었다고 해서 모든 시스템 권한이 자동으로 부여되는 것은 아닙니다. 관리자 권한, 일상적인 개발 계정, CI runner 및 임시 문제 해결 계정은 분리하고 작업별로 권한을 부여한 뒤 작업이 끝나면 즉시 회수해야 합니다.
접근 제어의 목표는 로그인 단계를 늘리는 것이 아니라 팀이 누가 장치에 접속했는지, 어떤 권한을 사용했는지, 프로젝트에서 나간 뒤에도 접근 권한을 잃었는지 답할 수 있도록 하는 것입니다.
여러 사람이 하나의 시스템 계정을 장기간 공유하지 않도록 하세요. 고유 계정을 사용하면 터미널 기록, 파일 소유권, runner 작업 및 문제 해결 기록을 특정 사용자와 연결할 수 있으며, 구성원이 팀을 떠날 때 해당 사용자의 접근만 개별적으로 철회할 수 있습니다.
사용자와 자동화 작업마다 서로 다른 키를 사용하고 키의 용도와 보유자를 기록하세요. 개인 키는 관리되는 단말기나 키 시스템에만 보관하고 티켓, 이메일, 채팅 기록 또는 코드 저장소로 전달하지 마세요.
일상적인 빌드에서 관리자 권한을 계속 사용해서는 안 됩니다. CI runner에 작업 디렉터리, 저장소 범위 및 필요한 명령만 허용하고, 임시 권한 상승이 필요하면 먼저 변경 목적을 확인한 뒤 완료 후 원래 권한으로 복원하세요.
팀은 내부 정책에 따라 시스템 비밀번호, SSH 키 및 저장소 토큰을 정기적으로 교체해야 합니다. 구성원 탈퇴, 장치 인계, 키 노출 또는 비정상 로그인이 발견되면 정기 주기를 기다리지 말고 즉시 교체하세요.
더 이상 사용하지 않는 공개 키, 계정, runner 등록, 원격 데스크톱 저장 항목 및 자동화 작업을 삭제하세요. 구성원 계정만 비활성화하고 공유 토큰을 남겨 두면 추적하기 어려운 지속적 접근 경로가 남습니다.
ZoomMini는 장치와 원격 접속 경로를 제공합니다. 어떤 코드, 빌드 산출물, 테스트 데이터와 비밀 정보가 장치에 들어갈지는 고객이 결정하며, 임대 기간이 끝나기 전에 검증, 백업 및 이전을 완료하는 것도 고객의 책임입니다.
원격 작업 유형에 따라 VNC, 화면 공유 또는 SSH를 선택하세요. 연결하기 전에 콘솔에 표시된 주소와 장치 정보를 확인하고, SSH 최초 연결 시 호스트 지문을 확인하세요. 변경 사항이 발견되면 연결을 중단하고 원인을 조사해야 합니다.
저장소 인증 정보, 서명 자료, 배포 키 및 서비스 토큰은 고객이 직접 관리합니다. 작업별로 관리되는 키 시스템에서 주입하고 유효 범위와 철회 경로를 설정하며 비밀 정보를 버전 관리 저장소에 기록하지 마세요.
문제 해결 정보를 제출하기 전에 비밀번호, 개인 키, 전체 토큰, 전체 결제 정보 및 문제와 관련 없는 개인 데이터를 제거하세요. 문제 발생 시간, 명령, 오류 코드와 필요한 맥락은 남겨 과도한 삭제로 재현이 불가능해지지 않도록 하세요.
만료 시간 전에 코드, 빌드 산출물, 로그 및 업무 데이터를 이전하고 백업을 읽을 수 있는지 확인하세요. 이후 저장소 토큰, 배포 인증 정보 및 runner 등록을 철회하고 더 이상 필요하지 않은 로컬 사본을 삭제하세요.
지속적 통합 환경에는 일반적으로 저장소 읽기, 서명, 테스트 및 배포 권한이 있습니다. 이러한 기능을 별도의 비밀 정보로 분리해 파이프라인 단계별로 주입하고 각 비밀 정보를 개별적으로 교체 및 철회할 수 있도록 하세요.
토큰은 필요한 저장소와 작업만 포함해야 합니다. 가져오기만 수행하는 runner에는 관리 권한을 부여해서는 안 되며, 임시 작업에서 장기 배포 토큰을 재사용해서도 안 됩니다.
runner는 별도 계정과 작업 디렉터리를 사용해야 합니다. 의존성 캐시의 출처를 검증할 수 있어야 하며, 빌드 스크립트가 환경 변수와 요청 헤더의 비밀 정보를 출력하지 않도록 하세요.
서명 인증서와 관련 개인 키는 관리되는 키 시스템에 보관하고 서명이 필요한 작업에만 주입하세요. 작업이 끝나면 임시 파일과 프로세스 환경을 정리합니다.
배포 토큰과 저장소 토큰을 분리하고 테스트 파이프라인이 운영 배포 권한을 상속하지 않도록 하세요. 인원이나 프로젝트가 변경되면 다른 작업에 영향을 주지 않고 개별적으로 철회할 수 있어야 합니다.
빌드 스크립트가 환경 변수를 출력하는지, 실패 처리에서 전체 명령을 표시하는지, 캐시 디렉터리에 인증 정보 파일이 포함되는지, 산출물 보관에 설정 파일이 실수로 포함되는지 확인하세요. 비밀 정보가 로그에 들어간 경우 로그만 삭제하지 말고 해당 인증 정보도 교체해야 합니다.
$ git grep -nE "TOKEN|PRIVATE_KEY|PASSWORD" -- .
$ find build/ -type f -name "*.env" -o -name "*.key"
$ security find-identity -v -p codesigning
$ launchctl list | grep runner
검사 결과:
✓ 저장소에서 평문 비밀 정보가 발견되지 않음
✓ 빌드 아카이브에 인증 정보 파일이 포함되지 않음
✓ runner가 독립 시스템 계정을 사용함
✓ 서명 자료가 관리되는 프로세스를 통해 주입됨
ZoomMini의 서비스 가용성 목표는 99.9%입니다. 모든 노드는 연중무휴 365일 정상 운영되며, 운영 기록은 일 단위로 표시됩니다. 이벤트 표시는 검토가 필요한 상태 변화를 알리는 것이며 하루 전체의 서비스 중단을 의미하지는 않습니다.
서비스가 목표를 충족하지 못했다고 판단되면 콘솔에서 티켓을 제출하고 주문 식별자, 노드, 영향을 받은 시간대, 재현 가능한 현상 및 비식별화 로그를 제공하세요. 조건을 충족하는 요청은 서비스 약관에 따라 검토되며 서비스 크레딧으로 보상됩니다.
서비스 약관 및 검토 기준 보기계정 이상, 무단 접근 또는 비밀 정보 유출이 의심되면 전체 결론을 기다리면서 높은 권한의 작업을 계속 실행해서는 안 됩니다. 먼저 영향 범위를 줄인 다음 필요한 기록을 보존하고 지원팀에 알리며 비밀 정보를 교체하세요.
발견 시간, 장치 식별자, 노드, 비정상 계정, 관련 프로세스 및 영향을 받은 워크로드를 기록하세요. 콘솔 이상, 시스템 계정 이상, 저장소 토큰 이상 및 애플리케이션 동작 이상을 구분하여 서로 다른 권한 영역을 하나의 문제로 혼동하지 않도록 하세요.
의심스러운 자동화 작업을 일시 중지하고 비정상 세션을 철회하며 관련 계정 또는 공개 키를 비활성화하고 고위험 토큰을 제한하세요. 현장을 보존한다는 이유로 알려진 이상 접근이 계속 확대되도록 두지 마세요. 제한 조치 자체도 시간과 실행자를 기록해야 합니다.
사고와 관련된 로그인 기록, 명령 기록, runner 출력, 프로세스 정보 및 오류 코드를 저장하세요. 내보내기 전에 비식별화하고 비밀번호, 개인 키, 전체 결제 정보 또는 사고와 무관한 개인 정보를 보내지 마세요.
콘솔 티켓 또는 support@zoommini.com을 통해 주문 식별자, 노드, 발생 시간, 실행한 제한 조치 및 비식별화 로그를 제출하세요. 지속적인 위험이 있다면 제목에 ‘보안 사고’를 명확히 표시하여 신속하게 분류되도록 하세요.
영향 범위에 따라 시스템 인증 정보, SSH 키, 저장소 토큰, runner 키, 서명 자료 및 배포 인증 정보를 교체하세요. 작업을 복구하기 전에 이전 인증 정보가 무효화되었고 새 권한이 최소 범위에 맞으며 비정상 프로세스가 더 이상 존재하지 않는지 확인하세요.
콘솔에서 티켓을 제출하면 요청을 주문, 노드 및 장치 상태와 연결하기 쉽습니다.
다음 주소로 이메일을 보내세요 support@zoommini.com제목에 ‘보안 사고’와 주문 식별자를 명시하세요.
명확한 책임 범위는 문제 해결 과정의 대기와 반복 확인을 줄여 줍니다. 물리 노드, 콘솔 및 장치 제공은 ZoomMini의 운영 범위이며, 시스템에 들어간 이후의 계정, 애플리케이션, 코드, 비밀 정보와 백업은 고객이 관리합니다.
| 제어 영역 | ZoomMini 담당 | 고객 담당 | 권장 확인 항목 |
|---|---|---|---|
| 물리 노드 | 장치와 주문의 전용 대응 관계, 노드 기본 운영, 콘솔의 장치 상태. | 주문 목적에 따라 장치를 사용하고 임대 기간 내 워크로드 관리와 데이터 이전을 완료합니다. | 장치 식별자, 노드, 임대 시작 및 종료 시간. |
| 콘솔 계정 | 계정 접근, 주문 관리, 인스턴스 상태 및 티켓 접점을 제공합니다. | 로그인 인증 정보를 보호하고 비정상 접근을 식별하며 관련 권한을 적시에 갱신하거나 철회합니다. | 최근 접근, 주문 변경, 티켓 기록. |
| 원격 연결 | 콘솔에서 해당 장치의 연결 정보와 상태 안내를 제공합니다. | 주소와 호스트 지문을 확인하고 원격 인증 정보를 보호하며 신뢰할 수 있는 클라이언트를 설정합니다. | 노드, 주소, 지문, 연결 계정. |
| 시스템 계정 | 사용 가능한 macOS 그래픽 인터페이스와 명령줄 환경을 제공합니다. | 고유 계정을 생성하고 최소 권한을 적용하며 인증 정보를 교체하고 팀을 떠난 구성원을 제거합니다. | 계정 목록, 공개 키 목록, 관리자 권한. |
| 애플리케이션 및 CI/CD | 물리 노드와 콘솔의 서비스 운영을 유지합니다. | Xcode, 의존성, runner, 스크립트, 저장소 권한 및 배포 프로세스를 관리합니다. | runner 계정, 작업 디렉터리, 토큰 범위. |
| 코드 및 키 | 코드와 비밀 정보의 저장, 권한 부여 및 교체 정책을 고객 대신 결정하지 않습니다. | 관리되는 키 시스템을 사용하고 스크립트, 저장소 및 로그에 평문으로 기록하지 않습니다. | 비밀 정보의 용도, 범위, 보유자, 철회 방식. |
| 로그 및 지원 | 티켓 정보를 바탕으로 물리 노드와 콘솔 관련 문제를 조사합니다. | 정확한 시간, 재현 단계 및 비식별화 로그를 제출하고 비밀 정보는 보내지 않습니다. | 오류 코드, 버전, 타임라인, 실행한 조치. |
| 백업 및 이전 | 콘솔에 주문 및 장치의 임대 기간 정보를 표시합니다. | 백업 전략을 수립하고 복구 가능성을 검증하며 임대 종료 전에 데이터를 이전합니다. | 백업 무결성, 복구 테스트, 토큰 철회. |
주문에 해당하는 전용 물리 머신, 노드 기본 운영, 장치 상태, 주문 관리 접점 및 지원 티켓 처리.
운영체제 권한, 원격 인증 정보, 애플리케이션 설정, 코드, 키, 빌드 파이프라인, 로그 비식별화, 백업 및 이전.
고객은 주문, 노드, 타임라인 및 비식별화 로그를 제공하고, ZoomMini는 경계에 따라 인프라 상태를 확인합니다. 양측은 각자의 권한 영역을 각각 검증합니다.
적합한 모델과 임대 기간을 선택한 뒤 고유 계정, SSH 키, 최소 권한, 관리되는 키 주입 및 만료 전 이전 체크리스트에 따라 환경을 설정하세요.