애플리케이션 보안의 맥락에서 비밀은 인증 및 권한 부여 과정에서 소유자가 누구인지, 무엇이라고 주장하는지 증명하는 정보입니다. 악의적인 행위자가 비밀에 접근하게 되면 의도치 않게 시스템에 침입하여 기업 비밀과 고객 정보를 훔치거나 심지어 데이터를 몸값으로 요구하는 등 다양한 목적으로 사용할 수 있습니다.
대표적인 예로는 애플리케이션이 데이터베이스에 접근하는 데 사용하는 사용자 이름과 비밀번호가 있지만, API 키, 자격 증명, 인증서, 개인 키 등 다른 유형의 정보도 비밀이 될 수 있습니다. 비밀은 조직 자산에 대한 액세스를 제어하는 데 사용되므로 이를 안전하게 저장하고 보호하는 것은 조직이 손상될 위험을 줄이는 데 매우 중요합니다.
비밀 관리란 조직이 다음을 위해 사용하는 프로세스입니다.
조직이 모놀리식 아키텍처에서 마이크로서비스 아키텍처로 전환하면 각각 고유한 자격 증명이 있는 독립적인 애플리케이션과 인프라 구성 요소의 수가 늘어나서 관리해야 할 비밀이 훨씬 많아집니다.
비밀을 안전하게 저장하기 위한 두 가지 옵션을 자세히 살펴보겠습니다.
볼트 접근 방식에는 타사 비밀 관리 도구를 설치하는 것이 포함됩니다. 볼트 솔루션은 모든 비밀을 암호화하여 권한이 없는 사용자가 이에 접근하는 것을 방지합니다. 볼트는 사용자가 확립된 정책에 따라 비밀에 액세스할 수 있도록 API를 제공합니다. API 사용자가 API에 인증을 받으면, 권한이 부여된 비밀에만 접근할 수 있습니다.
단점:
장점:
개발자가 암호화된 비밀을 저장하고 관리하는 데 사용할 수 있는 도구가 시중에 많이 있습니다. 중앙 자동화된 비밀 관리 도구를 사용하는 방법의 예를 보려면 블로그 " HashiCorp Vault를 사용하여 NGINX에서 SSL 개인 키 보호 "를 읽어보세요.
또 다른 방법은 클라우드 공급업체를 이용해 비밀을 서비스로 관리하는 것입니다. 한 가지 장점은 비밀 관리 도구가 일반적으로 관리형 데이터베이스 등 다른 클라우드 서비스와 긴밀하게 통합된다는 것입니다. 클라우드 공급업체 서비스도 자동 회전과 같은 기능을 제공할 수 있으나, 해당 옵션으로 인해 가동 중지 시간이 발생하는지 확인하기 위해서는 향후 연구가 필요합니다.
범죄자:
장점:
비밀은 잠금 해제 및 접근 시 애플리케이션이 중단되는 것을 방지하기 위해 주의 깊게 관리해야 합니다. 가장 좋은 방법은 절대로 소스 제어 시스템에 기밀 정보를 체크인하지 않는 것입니다. 비밀을 그곳에 저장하면 팀이나 개인이 코드나 애플리케이션을 업데이트할 때 비밀에 실수로 액세스하거나 손상될 경우 조직은 잠재적인 재난에 노출됩니다. 이러한 이유로 비밀이 소스 제어에 체크인되면, 비록 잠깐이더라도, 그 비밀은 손상된 것으로 처리해야 합니다. 민감한 데이터는 저장소에서 제거 해야 하며, 소스 제어 시스템의 기록에서 삭제해야 합니다.