클라우드 VPN은 여전히 호스팅 사업자에 의존한다
게스트를 관리한다고 해서 하이퍼바이저, 네트워크, 계정이 생기는 것은 아니다. 터널 안에서 고칠 수 없는 의존성을 미리 계획하라.
운영체제를 설치하고 서비스를 강화하고 키를 직접 쥐고 있으면 서버가 내 것이 된 듯 느껴진다. 하지만 그것은 월세 아파트와 같다. 문 잠금장치는 내 통제 아래 있지만 건물은 아니다. 하이퍼바이저, 인스턴스 앞의 네트워크, 그리고 모든 것을 다시 만들 수 있는 계정은 다른 사람의 것이다. 이 구분이 복구 계획이 무엇을 다뤄야 하는지를 결정하며, 셀프 호스팅이 가장 적게 바꾸는 부분이기도 하다.
계정이 진짜 제어 평면이다
호스팅 계정은 가상 머신, 그 디스크, 스냅샷, 공인 주소, 네트워크 규칙을 관리한다. 이 모두는 게스트에 로그인하지 않고도 바꿀 수 있어서, 계정은 대부분의 VPN 안내서가 말하는 위협 모델 밖에 놓인다. 완벽한 터널 설정도 디스크를 교체하는 계정 작업 앞에서는 버티지 못한다.
그 계정을 별도의 자산으로 보호하라. 독립적인 자격 증명, 하드웨어 기반 이차 인증, 그리고 실제로 누군가 읽는 감사 기록이 필요하다. VPN 서비스와 같은 비밀번호 관리자 항목을 공유하는 것은 나머지 모든 통제를 무의미하게 만드는 실수다.
사업자의 책임 분담은 클라우드 일반이 아니라 특정 제품 기준으로 읽어라. 공동 책임 모델은 계층이 어떻게 나뉘는지 보여 주는 유용한 예이며, 다른 사업자들은 그것을 물려받지 않고 자기 경계를 설명한다. 살펴볼 것은 어떤 장애를 내가 고쳐야 하고 어떤 것을 보고만 할 수 있는지다.
내가 관리할 수 없는 인프라 사건
라이브 마이그레이션, 호스트 유지보수, 물리 노드의 하드웨어 고장, 용량 사건은 모두 사업자가 자기 일정에 따라 처리한다. 재부팅이나 짧은 패킷 손실, 주소 변경을 볼 수는 있어도 이유는 볼 수 없다. 인스턴스를 고정점으로 보는 설계는 그 하나하나를 VPN 장애로 해석한다. 올바른 대응은 사라지는 인스턴스를 견디는 서비스를 만드는 것이지, 결코 보여 주지 않을 원인을 캐는 것이 아니다.
백업은 터널이 아니라 이 계층에 속한다. 서버 설정, 신원, 주소 계획, 허용 경로를 인스턴스 접근 가능 여부에 의존하지 않는 곳에 두고, 원본 디스크 없이도 복사본을 복원할 수 있는지 확인하라.
주소 동작은 따로 점검할 가치가 있다. 공인 주소가 중지, 교체, 삭제를 거쳐 살아남는지는 어떻게 할당되었는지에 달려 있고, 이 세 작업은 서로 바꿀 수 없다. 사건이 이 질문을 긴급하게 만들기 전에 어느 것에 의존하는지 적어 두어라.
재구축 후 무엇이 살아남는지 확인하라
모든 것이 동작할 때 복구 경로를 만들어 두어라. 사업자가 제공하는 콘솔이나 대역 외 접근을 파악하고, 터널 없이 그곳에 닿을 수 있는지 확인하고, 고장 난 노트북이나 잃어버린 휴대폰이 가져가지 못할 곳에 자격 증명을 보관하라. 로컬 방화벽 변경이 터널을 막으면 그 콘솔이 유일한 귀환 경로다.
curl -s http://169.254.169.254/latest/meta-data/instance-id
curl -s http://169.254.169.254/latest/meta-data/public-ipv4
cloud-init status --long
메타데이터 서비스는 게스트가 다른 방식으로는 볼 수 없는 인스턴스 정보에 답하며, 정확한 경로는 사업자와 플랫폼마다 다르므로 실행 중인 제품 문서와 대조해 확인하라. 그다음 시험 인스턴스를 한 번 통제된 방식으로 재구축하고 시간을 재라. 아무도 수행하지 않은 복구 절차는 가설일 뿐이다.
재구축이 주소, 호스트 키, 디스크 신원, 클라이언트가 고정한 것들에 무엇을 했는지 기록하라. 호스트 키를 캐시한 클라이언트는 재구축 후 경고를 내는데, 그 경고는 억눌러야 할 버그가 아니라 올바른 동작이다.
셀프 호스팅이 실제로 무엇을 바꾸는지 정하라
직접 VPN을 운영하면 신뢰가 VPN 사업자에서 호스팅 사업자와 나 자신에게로 옮겨 간다. 그것은 실제 변화이며 제삼자를 없애는 것과 같지 않다. 목적이 상용 VPN의 트래픽 관찰을 막는 것이었다면, 사업자는 여전히 인스턴스의 네트워크와 디스크, 청구 기록을 관찰할 수 있다.
내 로그는 내 소프트웨어를 설명할 뿐 사업자가 보관하는 모든 인프라 기록을 설명하지는 않는다. 반대도 사실이다. 인프라 가시성은 사업자가 무엇을 보관하는지 증명하지 못한다. 두 질문 모두 사업자의 정책과 내 설정이 필요하고, 어느 하나가 다른 하나의 답이 되지 않는다.
답은 분업으로 적어라. 어느 계층이 실패했고, 누가 고칠 수 있으며, 그 수리에 얼마나 걸리는가. 셀프 호스팅은 누구를 신뢰하는지를 바꾸며, 이 작업에서 유용한 부분은 어느 계층에 대해 그들을 신뢰하는지 정확히 아는 것이다.