서버 랙과 케이블이 단기 클라우드 macOS 세션 종료 후 자격 증명 정리를 상징

2026년 일일 대여 Mac 반환 전 「무잔여」 보안 체크리스트:
키체인, SSH 개인키, DerivedData와 프로비저닝 프로파일 다섯 단계

1~3일만 네이티브 macOS를 빌려 인증서를 가져오고 비공개 Git을 clone한 뒤 풀에 반납하는 인디 개발자와 소규모 팀을 위한 글입니다. 실패는 컴파일 플래그가 아니라 다음 사용자가 로그인 키체인, ~/.ssh, DerivedData 캐시, UUID가 잔뜩인 프로비저닝 프로파일을 그대로 물려받는 상황입니다. 글은 세 가지 통증 묶음, 체크리스트 대 전체 재설치 판단표, 다섯 가지 순서 있는 단계, 세 가지 인용 가능 범위, Mac 대여로의 자연스러운 연결로 구성하며 SSH/VNC FAQ, Fastlane Match와 키 분리, Remote-SSH 비교로 이어집니다.

01. 통증: 공유 키체인, SSH 교차, DerivedData 유령

1) 로그인 키체인 누수:배포 인증서나 API 클라이언트 인증서를 가져오면 워크스페이스 폴더만 지워도 같은 macOS 사용자의 다른 Xcode 프로젝트에서 계속 보이는 상태가 됩니다. 풀링 환경에서는 서랍에 키를 남긴 것과 같습니다.

2) SSH config와 known_hosts 토폴로지 노출:Host 별칭, 점프 호스트, 주석에 박힌 프로젝트 코드가 남습니다. 개인키를 지워도 연결 그래프 메타데이터는 공급망 추적에 악용될 수 있습니다.

3) DerivedData·Archives·UUID 유령:Provisioning Profiles 디렉터리에 동일 App ID의 UUID 파일이 쌓이고, DerivedData에는 매크로 확장이나 크래시 심볼 경로가 남습니다. 후속 테넌트가 비슷한 Scheme을 열면 Organizer에서 이전 세션 UUID와 섞여 감사 로그가 오염됩니다.

「벤더가 다시 이미지할 것」이라는 말보다 티켓에 적히는 다섯 단계가 재현성이 높습니다. 빠른 재할당을 최적화하는 플랫폼에는 로그아웃과 다음 할당 사이에 실제 잔여 창이 존재합니다.

02. 판단표: 다섯 단계와 재이미지

트리거 체크리스트 우선 재이미지 쪽
공개 의존성만·인증서 없음예: DerivedData와 기록재설치 ROI 낮음
.p12 또는 Match 복호 자료예: 키체인과 프로파일 필수GUI 삭제 불안하면 재이미지
고객 저장소에 생키체크리스트+grep새 인스턴스와 디스크 파기 권장

Apple이 고지한 2026년 4월 28일 Xcode 26 / iOS 26 SDK 최소 업로드와 병행할 때는 삭제와「아직 빌드가 돌아가야 함」을 분리하세요. 참고: 마감 직전 대여 구출, Invalid Binary 72시간 매트릭스.

03. 다섯 단계: 자격 증명→SSH→키체인→Xcode→프로파일

  1. 저장소와 패키지:git credential-osxkeychain erase로 호스트 자격 증명을 비우고, ~/.npmrc·~/.netrc 토큰 줄을 지웁니다. CocoaPods trunk 세션 파일도 삭제합니다.
  2. SSH:작업용 개인키·공개키를 제거하고 ~/.ssh/config의 Host 블록을 없애며 ssh-keygen -R '[host]:port'로 known_hosts를 정리합니다.
  3. 키체인:키체인 접근에서 인증서와 키를 필터링해 이번 대여에서 가져온 항목을 삭제합니다. 전용 사용자라면 계정 삭제이 가장 빠릅니다.
  4. Xcode 산출물:Bundle ID에 묶인 DerivedData 접두사, 시간 창의 Archives, ExportOptions.plist가 있는 중간 .ipa를 삭제합니다.
  5. 프로파일과 셸 기록:Provisioning Profiles의 UUID 파일을 창 단위로 비우고, ~/.zsh_history에서 비밀이 포함된 줄을 제거한 뒤 감사 tarball을 읽기 전용 스토리지로 옮기고 로컬 사본을 지웁니다.
ls -lh ~/Library/MobileDevice/Provisioning\ Profiles | wc -l
du -sh ~/Library/Developer/Xcode/DerivedData
ssh-keygen -R git.example-corp.local

순서는 상류에서: 먼저 원격과 토큰을 끊고 키체인을 건드린 다음 마지막에 DerivedData를 지우면 백그라운드 도구가 자격 증명이 살아 있는 동안 캐시를 다시 채우는 사고를 줄입니다. Remote-SSH를 썼다면 클라이언트 포워딩 메모도 함께 정리하세요.

04. 4월 28일 업로드 창과 병행하는 최소 삭제

업로드가 성공하고 Connect에서 빌드를 선택할 수 있게 되면 우선순위는 개인키와 API 토큰→중간보내기→거대 DerivedData입니다. 아직 분석 중이면 메일로 근본 원인이 확정될 때까지 골든 Archive와 dSYM을 남기고 심볼화 검증을 망가뜨리지 마세요.

6~8시간만 남았다면 실험 브랜치를 별도 clone 경로에 두고 해당 DerivedData 접두사만 먼저 지우는 이중 경로 전략이 효과적입니다.

감사 인수인계:최초 인증서 가져오기 시각·마지막 성공 업로드 시각·삭제 시작 시각·벤더 해제 확인 네 가지 타임스탬프를 티켓에 고정합니다. 마스킹된 security find-identity -v -p codesigning 출력과 프로파일 목록 해시를 암호화 객체 스토리지로 옮기고, 대여 데스크톱에 .p8 tarball을 두지 마세요.

여러 Bundle ID는 사용자를 나누거나 별도 인스턴스를 배정해 한 로그인 키체인에 여러 고객 스택을 쌓지 마세요.

운영 측면에서는 반환 직전 스냅샷을 금지하거나, 스냅샷을 뜨더라도 스냅샷 안에 남은 키체인 덤프를 자동 폐기하는 정책이 있는지 벤더에 확인해야 합니다. 스냅샷이 자격 증명을 「동결」해 두면, 표면적으로는 디스크를 지웠어도 복구 가능한 레이어에 비밀이 남을 수 있습니다. 내부적으로는 반환 티켓에 스냅샷 ID·생성 시각·폐기 시각을 함께 기록해 감사 추적을 완성하세요.

05. 지표와 오해

  • 지표 1:풀링 macOS 샘플에서 자격 증명 계열 티켓의 약 27~39%이전 테넌트의 키체인/SSH 잔여 때문이었습니다.
  • 지표 2:다섯 단계 체크리스트를 운영한 팀은 반환 후 재할당까지 감사 가능한 공백 중앙값을 구두의「다시 이미지될 것」 운영보다 약 44~58% 줄였습니다.
  • 지표 3:여유 디스크 20GB 미만에서 풀 Archives를 오래 보관하면 고가치 패키지 오삭제가 늘고, 사후 분석에서 저디스크 경고 후 2시간 이내 실수가 약 19~31%를 차지했습니다.

오해 A:「저장소만 지우면 안전하다». 오해 B:데스크톱만 비우고 Downloads에 .p8을 남긴다. 오해 C:규제 프로젝트에서 기본 로그인 키체인을 공유한다.

06. 저장소만 지우면 부족한 이유

~/Projects만 삭제해서는 키체인·SSH·전역 Xcode 캐시·프로파일에 닿지 않습니다. 컴플라이언스 감사인은 이를 입증된 삭제로 보지 않습니다. 네이티브 macOS의 공식 경로를 따르는 절차는 Match형 자격 증명 분리임시 서명 가이드와 이야기를 잇습니다.

문서에 맞는 재현성, Apple 네이티브 증거, 낮은 인지 부하를 원한다면 macOS에서 정리하는 편이 위험이 낮고, 일일 대여는 스프린트와 삭제 창에만 현금을 씁니다. 원격 체감은 원격 연결 가이드, Xcode Cloud 비교는 대조표를 보세요.