공동 책임 모델 (Shared responsibility model)
Fly.io에서는 여러분의 앱이 안전하기를 바라요. 그 일환으로 우리는 많은 일을 대신 처리하고 걱정해요. 이 페이지에서는 플랫폼에서 우리가 책임지는 부분과 고객인 여러분이 직접 책임져야 하는 부분을 높은 수준에서 개괄적으로 설명해 드릴게요.
출처: 문서
본문
Fly.io에서는 여러분의 앱이 안전하기를 바라요. 그 일환으로 우리는 많은 것을 대신 처리하고 걱정해요. 이것은 우리가 플랫폼에서 책임지는 것과 고객인 여러분이 직접 책임져야 하는 부분에 대한 높은 수준의, 완전하지 않은 개요예요.
간단한 인프라 개요
여러분의 서비스를 제공하는 데 관여하는 세 가지 주요 시스템 유형은 워커(workers), 엣지(edges), 게이트웨이(gateways)예요. 워커는 Fly Machines를 호스팅하고, 엣지는 들어오는 네트워크 트래픽을 프록시해서 워커로 전달하며, 게이트웨이는 여러분의 프라이빗 네트워크(6PN)에 대한 접근을 제공하는 WireGuard 연결을 종료해요.
관여하는 소프트웨어도 많지만, 중요한 것은 워커에서 Fly Machines를 관리하는 flyd, 엣지에서 실행되는 프론트엔드 프록시 서비스인 Fly Proxy, 그리고 여러분의 클라이언트 기기에서 실행되는 flyctl이에요.
Fly.io의 책임
인프라 시스템의 강화와 보호
Fly.io는 워커, 엣지, 게이트웨이를 포함한 인프라 시스템의 보안에 전적으로 책임져요. 여기에는 접근 관리, 운영 체제에 보안 패치 적용, 기타 제3자 소프트웨어(예: firecracker), 그리고 적절한 경우 하드웨어 취약성 완화가 포함돼요. Fly.io는 이 시스템들을 운영적 측면과 보안 측면 모두에서 모니터링해요.
안전한 소프트웨어 개발 프로세스 사용
Fly.io는 우리가 개발을 책임지는 모든 소프트웨어가 적절한 수준의 보안을 충족하도록 보장해요. 여기에는 소프트웨어 공급망의 보안 보장, 정기적인 감사와 테스트 수행, 그리고 엔지니어링 팀 내 긍정적인 보안 문화 개발 및 유지가 포함돼요.
서비스 제공에 관여하는 기저 플랫폼 기능의 보안
Fly.io가 여러분의 애플리케이션이 사용할 수 있는 기능을 노출하는 곳에서, 우리는 해당 기능 구현의 보안에 책임져요. 두 가지 명확한 예시:
- 우리는 플랫폼 기능으로 HTTP 프록시 종료를 제공하므로 HTTP와 TLS 프로토콜의 보안에 책임져요. 예: HTTP response splitting, H2 Rapid Reset 같은 프로토콜 수준 취약성을 수정할 책임이 있어요.
- 우리는 애플리케이션에 암호화된 프라이빗 네트워킹을 제공하며, 그 계층의 보안에 책임져요. 예를 들어 WireGuard에 기밀성 문제가 있다면 우리 인프라에서 해결하는 것이 우리의 책임이에요.
플랫폼 제어 장치의 프로비저닝과 보안
Fly.io는 계정과 자산을 보호하는 데 사용할 수 있는 기능을 제공해요: 인증(예: 토큰, SSO)과 권한 부여(macaroon, 역할)를 포함해서요. Fly.io는 이러한 제어 장치를 제공하고 그 효과를 보장하며 안전한 기본 구성을 프로비저닝할 책임이 있어요.
Fly.io는 보안을 최우선으로 구축됐어요. 자세한 내용은 Security 페이지를 방문하세요.
여러분의 책임
Docker 이미지 및 따라서 Fly Machines 안의 모든 것
우리는 일반적으로 워커(가상화 호스트)와 Fly Machine(가상화 게스트) 사이의 가상화 경계를 분기점(demarcation point)으로 간주해요. Fly Machine은 여러분의 지침으로 구성되므로 그 내용물은 여러분의 책임이에요. 여기에는 시스템 사용자 공간과 라이브러리, 여러분의 애플리케이션 코드, 애플리케이션 환경, 그리고 실행하는 서비스가 포함돼요.
그래도 Fly.io는 여기서 여러분을 도울 수 있는 독특한 위치에 있으며, 컨테이너 스캐닝 같은 기능을 제공해 이것을 수월하게 만들기 위해 노력하고 있어요.
Fly.io 보안 기능의 구성
Fly.io는 플랫폼 기능과 구성에 안전한 기본값을 제공하고, 그 안에 숨어 있을 수 있는 함정(footgun)에 대해 철저히 문서화하고 경고할 것을 약속해요.
하지만 궁극적으로 Fly.io 호스팅 리소스에 대한 접근을 적절히 제한하려면 Fly.io 보안 기능을 올바르게 구성하는 것은 여러분의 책임이에요. 예를 들어 Fly 조직의 멤버십과 Fly 애플리케이션이 노출하는 네트워크 서비스가 그렇죠.
클라이언트 기기와 인증 자료의 보안
여러분은 flyctl, Machines API, 또는 다른 어떤 방법으로 Fly.io에 접근하는 기기의 보안에 책임져요. 또한 Fly.io 플랫폼과 서비스에 접근하는 데 사용되는 모든 인증 자료(접근 토큰, Macaroons, WireGuard 피어 키, SSH 키를 포함)의 보안도 책임져요.
여러분의 ID 제공자 보안
Fly.io가 여러분의 ID 제공자에 대해 SSO(단일 로그온)를 수행하도록 구성된 경우(그리고 우리는 강력히 권장합니다), 승인된 사용자만 여러분의 Fly.io 리소스에 접근할 수 있도록 해당 제공자를 올바르게 구성하고 유지하는 것은 여러분의 책임이에요.
서비스의 애플리케이션 계층 네트워크 보안
두 가지 특정 사항: Fly Proxy와 6PN(프라이빗 네트워크). Fly.io는 Fly Proxy가 사용자에게 안전한 서버이고 여러분의 서비스에 안전한 클라이언트가 되도록 보장할 책임이 있어요. 여러분은 서비스가 Fly Proxy에게 안전한 서버가 되도록 하고, 민감한 애플리케이션 기능이 제대로 보호되도록 해야 해요.
Fly.io는 애플리케이션을 위한 격리된 네트워크 계층을 책임지며, 이는 기밀성을 보호해요. 여러분은 그 네트워크에서 애플리케이션의 보안을 책임져요. 예를 들어 같은 네트워크 세그먼트를 공유할 수 있는 다른 애플리케이션의 SSRF 공격으로부터의 보호가 그렇죠.