비밀 관리란?

비밀번호 관리는 애플리케이션의 자동화된 구성 요소에 대한 자격 증명을 보호하고 제어하는 프로세스입니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • '비밀' 및 '비밀 관리' 정의
  • 비밀 관리의 몇 가지 과제에 대한 이해
  • 비밀 관리 솔루션 설명

관련 콘텐츠


계속 알아보시겠어요?

인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!

Cloudflare가 개인 데이터를 수집하고 처리하는 방법은 Cloudflare의 개인정보 취급방침을 참조하세요.

글 링크 복사

비밀 관리란?

비밀 관리는 유출될 경우 악의적이거나 권한이 없는 당사자가 애플리케이션 인프라에 액세스할 수 있게 해주는 중요한 정보를 안전하게 저장하는 관행입니다. 여기서 "비밀" 은 애플리케이션 인프라의 서로 다른 부분을 서로 연결할 수 있도록 하는 암호화 키, API 키, SSH 키, 토큰, 비밀번호, 인증서를 말합니다.

사용자는 애플리케이션에 로그인하기 위해 하나의 비밀번호만 알면 되지만, 그 애플리케이션 자체는 서로 통신하기 위해 모두 자격 증명(비밀)이 필요한 다양한 부분으로 구성되어 있습니다.

여러 애플리케이션의 비밀번호를 기억하는 것이 얼마나 어려운지, 특히 정기적으로 비밀번호를 업데이트해야 하는 경우 얼마나 어려운지 거의 모든 사람이 잘 알고 있습니다. 이 때문에 많은 사람이 비밀번호를 적어두거나 모든 애플리케이션에서 동일한 비밀번호를 사용하는 등 안전하지 않은 비밀번호 관행을 사용하기 시작합니다.

개발자는 소프트웨어를 만들 때 비슷한 문제에 직면합니다. 애플리케이션이 작동하는 인프라 또는 기업에서 실행하는 데 필요한 인프라에는 수백 또는 심지어 수백만 개의 키, 토큰, 비밀번호가 필요할 수 있습니다. 이러한 모든 비밀을 관리하는 것은 매우 번거롭기 때문에 애플리케이션 소프트웨어에 하드코딩하는 경우가 많습니다. 이들 비밀은 업데이트되지 않을 수 있으며 때로는 일반 텍스트로 코딩되어 있어 공격자에게 취약할 수 있습니다.

'비밀'이란?

앱 개발의 맥락에서 비밀은 자격 증명으로 사용되는 데이터 조각입니다. 개인이 이메일에 액세스하려면 사용자 이름과 비밀번호를 입력하여 인증해야 하는 것처럼, 이메일 애플리케이션(또는 모든 애플리케이션)의 비인간 구성 요소도 애플리케이션이 작동하려면 서로 인증해야 합니다. 이러한 구성 요소에는 API 연결, 컨테이너, 마이크로서비스, 스크립트, 함수, 자동화 도구가 포함될 수 있습니다. 인증을 위해 이들은 자격 증명을 사용합니다.

비밀에는 다음이 포함될 수 있습니다.

  • IPsec 키 또는 인증서
  • TLS 인증서
  • API 키
  • 비밀번호
  • 토큰

LEGO®와 같은 어린이용 조립 블록이 서로 맞물려 작지만 튼튼한 구조물을 만들어내는 방식을 생각해 보세요. 비밀은 애플리케이션을 하나로 묶어주는 잠금 장치와 같습니다. 이 기능이 없으면 애플리케이션이 제대로 작동하지 않습니다.

비밀을 업데이트하는 것이 중요한 이유는?

서로 합체하기 위해 항상 동일한 볼록 부분이 있는 조립 블록과 달리, 비밀은 정기적으로 변경해야 합니다. 비밀을 너무 오래 사용하면 공격자가 무차별 대입 공격을 통해 비밀을 추측해낼 수 있습니다. 또한 비밀을 오래 사용할수록 유출될 가능성이 높아집니다.

비밀을 교체해야 하므로 비밀을 안전하게 관리하기가 더 복잡해집니다. 업데이트한 비밀번호를 기억하는 것이 어려운 것처럼, 정기적으로 비밀번호를 교체하는 것도 큰 문제입니다. 수십 개의 앱이 단일 API에 의존할 수 있으며, API에 새 자격 증명이 필요한 경우 모든 앱이 비밀을 업데이트해야 합니다. 어떤 경우에는 조직에서 해당 API에 얼마나 많은 앱이 종속되어 있는지, 그리고 비밀이 업데이트될 때 어떤 앱이 중단되는지조차 알지 못할 수도 있습니다.

많은 사람이 비밀번호를 업데이트하지 않는 것을 선호하는 것처럼, 개발 팀에서는 효율성을 위해 비밀 업데이트를 아예 하지 않는 경우도 있습니다. 심지어 비밀을 변경할 필요가 없다고 가정하고 스크립트와 함수에 비밀을 하드코딩할 수도 있습니다.

비밀 관리의 또 다른 과제는?

수동 공유: 비밀 관리 솔루션이 없는 개발자는 개발 팀 간에 비밀을 공유하기 위해 수동 프로세스를 사용해야 하므로 문서화가 부실해지고 보호되지 않은 환경에 비밀이 노출될 수 있습니다.

타사 계정: 외부 사용자가 내부 API 및 데이터베이스에 액세스해야 할 수 있습니다. 이들은 조직 외부에 있으므로 안전한 비밀 관리를 실행하기가 어렵습니다.

클라우드 컴퓨팅: 클라우드 환경은 광범위하고 일시적입니다. 새로운 가상 머신 인스턴스는 정기적으로 서비스를 지원하기 위해 스핀업되며, 모든 인스턴스에는 고유한 비밀이 필요합니다. 또한 클라우드 앱을 사용하면 거의 무제한의 위치에서 광범위하게 액세스할 수 있으므로 관리해야 하는 자격 증명과 권한의 수가 크게 늘어납니다.

중앙 집중식 관리 부족: 여러 사람이 저녁 식사 시간을 합의하는 것이 어려운 것처럼, 여러 팀과 부서에 분산돼 있는 비밀을 관리하는 것도 어렵습니다. 팀마다 비밀을 문서화하거나 저장하는 방식이 다르거나 다른 팀에서 사용하고 있는 비밀에 대한 가시성이 부족할 수 있습니다.

비밀 관리 솔루션의 작동 방식

비밀 관리 도구는 비밀을 안전하게 관리하는 데 필요한 모든 프로세스를 자동화할 수 있습니다. 비밀 관리 도구는 또한 애플리케이션의 코드와 분리된 안전한 환경에 비밀을 저장합니다. 이를 통해 개발자는 비밀을 하드코딩하거나 유출될 수 있는 일반 텍스트로 저장하는 것을 피할 수 있습니다.

Cloudflare에서는 비밀 관리를 어떻게 지원할까요?

Cloudflare에서는 전역 네트워크에서 코드를 실행할 수 있는 확장성이 뛰어난 개발 플랫폼을 제공합니다. 개발자는 Cloudflare Secrets Store를 통해 API 토큰부터 요청 인증 헤더에 이르기까지 애플리케이션에 필요한 비밀을 안전하게 저장하고 관리할 수 있습니다. Secrets Store를 자세히 알아보세요.