크롬 브라우저가 Direct Sockets API를 새롭게 도입하며 웹 앱과 네트워크 기기 간 직접 통신이 가능해졌습니다. 이를 통해 TCP와 UDP를 사용하여 다양한 프로토콜을 사용하는 장비들과 직접 연결할 수 있습니다. 이번 포스트에서는 Direct Sockets API와 격리된 웹앱(Isolated Web Apps, IWA) 개념을 중심으로 이번 변화가 어떤 의미를 가지는지 살펴보겠습니다.
Direct Sockets API란?
기존 웹 기술인 XMLHttpRequest, WebSocket, WebRTC 등은 모두 보안과 관련된 여러 제약으로 인해 네트워크 기기나 특정 시스템과의 직접적인 TCP/UDP 통신을 지원하지 않았습니다. 이러한 제한으로 인해 많은 네트워크 기기들은 원활한 통신을 위해 별도의 서버나 브라우저 플러그인(예: Java applets, Silverlight 등)을 필요로 했습니다.
이러한 배경에서 Direct Sockets API는 격리된 웹앱에서 TCP와 UDP를 통해 네트워크 기기 및 시스템과 직접 통신할 수 있는 방법을 제공합니다. 이를 통해 기존의 방화벽 뒤에 있는 장치와의 연결, 지연 민감한 데이터 전송, 혹은 로컬 네트워크 내에서의 신뢰성 있는 통신이 가능합니다.
Direct Sockets API의 주요 사용 사례
Direct Sockets API를 통해 웹 앱은 기존의 다양한 네트워크 기기 및 시스템과 직접 소통할 수 있게 되었습니다. 다음과 같은 여러 사용 사례가 있습니다:
- 원격 데스크탑 프로토콜(RDP) 및 **보안 셸(SSH)**과 같은 원격 연결
- 프린터와 같은 IOT 장치 통신
- 메일 서버(SMTP, IMAP), IRC와 같은 레거시 프로토콜 사용
- IoT 스마트 기기와의 통신
- 분산 해시 테이블(DHT) 기반 P2P 시스템
- IPFS를 통한 분산 협업
- **VDI(Virtual Desktop Infrastructure)**와 같은 가상 데스크탑 환경 구축
Isolated Web Apps (IWA)와의 연동
Direct Sockets API는 보안상의 이유로 **격리된 웹앱(Isolated Web Apps, IWA)**에서만 사용 가능합니다. IWA는 서버의 침해 및 변조로부터 더 강력한 보호 기능을 제공하기 위해 웹 번들(Web Bundle)로 패키징되어 제공됩니다.
즉, 일반적인 HTTPS를 통해 실시간으로 호스팅되는 대신, 웹 번들을 통해 패키징되어 보안성이 강화된 환경에서 실행됩니다. 현재 IWA는 엔터프라이즈 관리형 ChromeOS 기기의 관리자 정책을 통해서만 설치가 가능합니다.
IWA는 기본적으로 외부 자원의 사용을 제한하는 **강력한 콘텐츠 보안 정책(Content Security Policy)**을 따르고 있으며, 직접 소켓 연결을 열기 위해서는 권한 정책(Permissions Policy)을 통해 설정이 필요합니다. 이러한 설정은 외부 자원 사용 및 악성 코드 실행을 방지하여 웹 앱이 안전하게 통신할 수 있도록 돕습니다.
보안 고려 사항 및 권한 설정
Direct Sockets API는 보안 문제를 방지하기 위해 다양한 메커니즘을 도입하였습니다:
- 권한 정책(Permissions Policy): API 사용은 권한 정책을 통해 제어되며, 기본적으로 제3자 iframe(광고 등)이 이 API를 남용하지 못하도록 차단합니다.
- TLS 사용 가능: TCP 연결을 열 때 TLS 사용을 지원하여 데이터 전송 시 보안을 강화할 수 있습니다. SMTP와 같은 프로토콜에서도 STARTTLS를 통해 안전한 연결로 업그레이드할 수 있습니다.
- 기업 정책 연동: 기업의 보안 정책과 연계하여 사용자의 API 접근을 제한할 수 있으며, 사용자가 임의로 새로운 바이너리를 설치하지 못하도록 제어할 수 있습니다.
Direct Sockets API의 의미
이제 웹 앱이 TCP와 UDP를 통해 다양한 네트워크 장비 및 시스템과 직접 소통할 수 있게 되면서, 기존 레거시 시스템을 대체하지 않고도 웹 기술을 활용한 통합과 관리가 가능해졌습니다. 특히 네트워크 대역폭이나 지연에 민감한 환경에서 기존에 필요한 별도의 서버 중계 없이도 직접 통신이 가능하다는 점에서 큰 장점이 있습니다.
Direct Sockets API는 WebUSB, WebMIDI, WebBluetooth와 같이 웹앱이 로컬 기기 및 정보 시스템과 직접 통신할 수 있는 기능을 제공하여 웹의 범위를 더욱 확장시킵니다.
마무리
Direct Sockets API는 웹 브라우저가 로컬 기기 및 레거시 시스템과 더욱 밀접하게 연결될 수 있는 길을 열어주었습니다. 특히 보안과 성능을 동시에 확보하며 기존 시스템과의 통합을 지원한다는 점에서 많은 주목을 받고 있습니다. 앞으로 이 기능이 어떻게 발전해 나가고, 다양한 웹 앱들이 이를 활용해 나가는지 지켜보는 것도 흥미로울 것입니다.
'WEB' 카테고리의 다른 글
웹 렌더링의 모든 것: 클라이언트 사이드 vs 서버 사이드 vs 사전 렌더링 (0) | 2024.09.30 |
---|---|
프레임워크의 진화: Next.js로 알아보는 웹 개발의 미래 (0) | 2024.09.28 |