블로그

실용적인 클라우드 고려 사항: 보안

로리 맥비티 썸네일
로리 맥비티
2018년 11월 19일 게시

클라우드에서 컴퓨팅하는 것은 저렴할 수 있지만 무료는 아닙니다.

오늘날 대부분의 앱은 보안 HTTP를 통해 제공됩니다. 즉, TLS 또는 점점 더 비난을 받고 있는 SSL을 의미합니다. 이는 암호화를 의미하는데, 전통적으로 성능 문제를 의미하는 것으로 번역되었습니다.

기술의 발전 덕분에 오늘날 CPU는 놀라울 정도로 빨라졌으며 많은 클라이언트(및 서버 측) 하드웨어는 한때 특수 암호화 하드웨어였던 것을 기본적으로 통합하고 있습니다. 이는 개별 연결 기준으로 볼 때 암호화의 속도는 과거만큼 큰 문제가 되지 않는다는 것을 의미합니다.

하지만 그렇다고 해서 암호화가 여전히 성능과 운영 비용의 원인이 아니라는 것은 아닙니다. 

성능 문제의 주요 원인이라는 암호화에 대한 주장을 폄하하는 대부분의 주장은 하나의 클라이언트와 하나의 서버를 포함하는 간단한 시나리오에 근거합니다. 즉, 암호화 과정 한 번, 복호화 과정 한 번 입니다. 이런 상황에서는 반대자들의 의견이 대체로 옳습니다. 암호화와 복호화에 따른 지연은 최소화되며 일반적으로 TCP 및 네트워크 관련 오버헤드보다 문제가 적습니다.

하지만 오늘날의 애플리케이션은 단일 엔드포인트로 구성되지 않습니다. 그 "단일 엔드포인트"에 도달하기 전에 메시지는 여러 중개자와 프록시를 거쳐야 합니다. 이는 보안, 액세스 제어, 부하 분산 및 라우팅 엔드포인트입니다. 각 메시지는 현대의 복잡한 데이터 경로에서 지정된 역할을 실행하기 위해 명확한 형태로 메시지를 검토해야 합니다.

암호화가 그렇게 비싸지 않다는 주장은 여기서부터 무너지기 시작합니다. 단일 엔드포인트 자체로는 지연이 거의 발생하지 않습니다. 하지만 데이터 경로의 각 엔드포인트에서 여러 번 반복되면 개별적인 지연이 누적되어 더 눈에 띄는 문제가 되고, 특히 퍼블릭 클라우드의 경우 운영상 비용이 많이 듭니다.

암호화는 본래 계산 비용이 많이 드는 과정입니다. 즉, 비즈니스 로직을 실행하는 것보다 메시지를 암호화하거나 복호화하는 데 훨씬 더 많은 CPU 주기가 필요하다는 뜻입니다. 클라우드에서 CPU 사이클은 돈의 지출과 유사합니다. 일반적으로 이는 자본 비용을 운영 비용으로 전가하는 것이 목적이므로 허용되는 비용입니다.

하지만 메시지를 여러 번 암호화하고 해독하는 경우 비용이 늘어나기 시작합니다. 사실상 동일한 암호화 프로세스에 여러 번 비용을 지불하는 셈입니다. 한 번 실행하면 1페니에 불과할 비용이 갑자기 5번 실행하면 5페니가 듭니다. 하루(또는 한 시간) 동안 수십만 건의 거래가 이루어지고 그에 따른 비용이 얼마나 발생하는지 계산해보면 엄청납니다.

또한 암호화 처리에 사용되는 각 CPU 사이클은 비즈니스 로직에 사용되지 않는 CPU 사이클이라는 점을 기억하세요. 이는 원하는 것보다 일찍 확장해야 한다는 의미이며, 부하를 처리하기 위해 추가 인스턴스가 실행될 때마다 비용이 더욱 발생합니다.

말할 것도 없이, "모든 곳에서 SSL을 사용한다"는 것은 클라우드에서 "모든 곳에서 암호 해독한다"는 아키텍처를 의미하지는 않습니다.

한 번 해독

비용을 절감하고 지불하는 CPU의 효율성을 극대화하려면 "한 번 해독" 원칙에 따라 클라우드 기반 아키텍처를 설계하는 것이 좋습니다. "한 번 복호화"는 전송 중에 메시지를 복호화하고 다시 암호화해야 하는 데이터 경로의 엔드포인트 수를 최소화해야 함을 의미합니다.

그렇게 하려면 현재 애플리케이션을 보호하고 확장하는 데 사용하는 16가지의 다양한 애플리케이션 서비스 에 대한 사전 계획과 신중한 고려가 필요합니다. 종단 간 암호화를 요구하는 규정이나 요구 사항이 적용되지 않는 경우, 나중에 암호 해독에 추가 주기를 낭비하지 않기 위해 메시지가 최대한 빨리 암호 해독되도록 데이터 경로를 설계하세요. 종단 간 암호화를 유지해야 하는 경우, 가능한 한 서비스를 결합하면 컴퓨팅 리소스를 가장 효율적으로 사용할 수 있습니다.

여러 서비스(예: 부하 분산 및 웹 애플리케이션 방화벽)를 단일 플랫폼에 결합하면 전송 중인 메시지를 해독하는 데 필요한 횟수를 줄일 수 있습니다. 또한, 네트워크 연결 수와 시간을 줄여 사용자와 소비자에게 성능상의 이점을 제공하는 이점도 있습니다. 하지만 실제로 절감되는 부분은 반복적인 복호화와 재암호화에 소모되지 않는 CPU 사이클입니다. 

오늘날 거의 사용되지 않는 앱에 대해 암호화와 복호화가 미치는 영향을 고려하는 것은 시간 낭비처럼 보일 수 있습니다. 페니로는 노력에 드는 비용을 감당할 수 없습니다. 하지만 앱이 성장하고 확장되어 시간이 지나면서 살아남으면 그 돈도 엄청난 영향력을 미치는 금액으로 쌓이게 될 겁니다. 페니와 마찬가지로 마이크로초도 쌓인다는 것은 말할 것도 없습니다. 전체 데이터 경로에 걸쳐 암호화의 영향을 고려함으로써 장기적으로 사용자와 기업 모두 이익을 얻을 수 있습니다.