포스트

군대에서 Codespaces 사용하기

이전에 군대에서 프로그래밍 공부를 위해 Codespaces를 사용하고 있다고 이야기한 적 있습니다. 어딜 가나 항상 노트북을 가지고 다니는 저로선 입대하기 전까지는 코드스페이스를 어디에 사용할 지 감도 잡히지 않았는데, 입대하고 나니 코드스페이스가 정말 유용하다고 느끼고 있습니다.

VSCode를 호스팅하는 Codespaces

비주얼 스튜디오 코드(vscode)는 단순한 텍스트 에디터입니다. 텍스트 에디터를 서버처럼 호스팅한다는 표현이 다소 이상하긴 하지만, vscode.devgithub.dev와 비교해보면 무슨 의미인지 알 수 있습니다.

이 둘도 일반 웹브라우저를 통해 vscode를 사용할 수 있도록 해주고 있지만, vscode의 터미널 기능이 제대로 작동하지 않습니다. vscode의 실행 환경이 웹 브라우저이므로 컴퓨터의 로컬 스토리지에 직접 접근할 수 없기 때문입니다. 코드를 작성하고 실행하길 반복해야하는 프로그래밍에서 이러한 제약은 치명적입니다.

즉, vscode.dev와 github.dev는 말 그대로 웹 브라우저용 텍스트 에디터일 뿐입니다.

코드스페이스는 이와 달리 터미널 기능을 사용할 수 있습니다. 코드스페이스 인스턴스 한 건 당 가상 컴퓨터 인스턴스가 하나 생성되므로 각각의 코드스페이스 인스턴스가 서버로서 기능하는 것입니다. (실제로 일시적이지만 서버를 열수도 있습니다.) 이 덕분에 코드스페이스에서는 작성한 코드를 계속 실행해보면서 수정하는 것이 가능합니다.

군대에서 유용하지만 군대를 고려하지 않은 도구

코드스페이스는 앞서 말했듯 군대에서 매우 유용하지만 당연하게도 군대를 전혀 고려하지 않았습니다. 전체 코드스페이스 사용자 중 대한민국 국군 장병이 얼마나 소수일지는 깊게 생각하지 않아도 추측하기 쉽습니다.

일반적으로 웹브라우저는 자동으로 업데이트가 이루어집니다. 덕분에 모든 웹 서비스 제공자들은 거의 모든 사용자가 항상 최신 버전에 가까운 웹브라우저를 사용하고 있다고 기대할 수 있습니다. 자체적인 자동 업데이트를 지원하지 않아 항상 레거시를 고려해야 했던 IE 시절로부터 얻어낸 교훈에서 탄생한 것인지 모르겠습니다.

하지만 사이버지식정보방(사지방)에 설치된 소프트웨어들은 구성된 그 시기 이후의 버전으로 업데이트되지 않습니다. 업데이트하더라도 롤백될 뿐입니다. 덕분에 사지방에 설치된 크롬은 80번대 초반부 버전이 대부분이고, 경우에 따라 78버전 크롬도 목격했습니다.

낮은 버전의 브라우저는 최신 사양의 코드를 제대로 실행하지 못합니다. 코드스페이스나 노션같은 웹 애플리케이션에서 주로 이러한 문제가 확인되는데, 아마 브라우저 기능을 최대로 이용하기 위해 최신 사양의 코드를 사용했을 것입니다. 덕분에 대부분의 사지방 컴퓨터는 별다른 조치 없이는 코드스페이스를 실행하지 못합니다.

대부분의 웹 브라우저들은 현재 버전과 최신 버전의 차이가 클 경우 자동 업데이트를 수행하지 못합니다. 수동으로 업데이트하라는 경고를 표시할 뿐입니다.

그래도 윈도우 컴퓨터는 상황이 낫습니다. 꽤나 느리긴 하나 수동으로 크롬을 업데이트할 수 있습니다. 문제는 하모니카입니다. 하모니카 OS는 리눅스를 기반으로 합니다. OS에 탑재된 하모니카 웹브라우저는 크로미움 브라우저를 이름만 변경한 것입니다. 리눅스 위의 크로미움 브라우저는 터미널이나 패키지 매니저를 거치지 않고 업데이트하기 어렵습니다.

하지만 터미널은 보안 정책상 사용하기 어려울 뿐더러 제거되어있고, 패키지 매니저는 설치 파일을 거부하거나 의존성 오류와 함께 설치를 계속 진행시키지 않습니다. 웨일, 파이어폭스와 같은 다른 브라우저 패키지도 설치를 거부합니다. 패키지의 의존성 오류는 터미널이 없으니 해결할 수도 없습니다.

사지방에서 코드스페이스를 사용하려면 윈도우 컴퓨터를 사용하거나 어찌저찌 간신히 코드스페이스를 실행할 수 있는 하모니카 컴퓨터를 찾아야합니다.

ACTION REQUIRED

[ACTION REQUIRED] Your GitHub account, ShapeLayer, will soon require 2FA

On May 4th, 2023 at 00:00 (UTC) your account will be required to have 2FA for authentication. If you have not yet enrolled by that date, your ability to access GitHub.com will be limited until you finish the enrollment process.

코드스페이스를 제공하는 깃허브는 5월 4일 부로 MFA 인증을 사용하지 않는 계정의 서비스 이용을 제한했습니다. 깃허브 뿐 아니라 MFA 인증을 사용하지 않는 계정은 더 쉽게 탈취당해 각종 범죄나 트롤링에 사용된다는 것은 잘 알려진 사실입니다. 가장 잘 알려진 일례로 AWS에서는 해킹 당한 계정에서 고성능 컴퓨팅 작업이 실행되어 억단위의 청구 요금이 발생한 적도 있었습니다.

일반적으로 깃허브의 거의 모든 사용자들은 휴대전화를 항상 휴대할 것이고, 로그인이 쉽게 풀리는 일도 없을테니 MFA 인증 사용은 단순히 귀찮은 일 정도로 치부할 수 있을 것입니다. 하지만 휴대전화 사용이 제한되는 군부대에서 MFA 의무화는 매우 큰 장벽입니다. 특히 휴대폰을 사용할 수 없는 연등 시간에 코드스페이스를 사용하고자 한다면 MFA 대책이 꼭 필요합니다.

아마 MFA 담당자들은 미치고 펄쩍 뛰겠지만, 저는 깃허브 MFA로 TOTP를 등록해놓고 TOTP Secret Key(비밀키)를 인쇄해서 가지고 다닙니다. 그때그때 TOTP 토큰 온라인 생성기에 비밀키를 입력해서 TOTP 토큰을 사용합니다. 이렇게 평문으로 비밀키를 가지고다니면 MFA를 사용하는 이유가 뭐냐고 하겠지만, 저는 계정의 보안을 위해서 MFA를 사용한 게 아니라 코드스페이스를 사용하기 위해 MFA를 등록한 것이라 어쩔 수 없습니다.

참 군대 보안 정책에 딱 맞는 MFA 사용법이라고 할 수 있겠습니다.