애플리케이션 보안을 위한 최고의 비밀 관리 소프트웨어 10개

사업에 있어 중요한 자산을 보호하세요.

컨테이너, Kubernetes, 클라우드 환경 및 암호와 관련된 작업을 할 때는 고려해야 할 사항들이 많습니다. 특히 ID 및 접근 권한 관리에 대한 최적의 방법을 적용하고, 다양한 도구를 선택하며, 그것들을 올바르게 사용하는 것이 중요합니다.

개발자이든 시스템 관리자이든, 환경을 안전하게 유지하기 위해서는 적합한 도구를 선택해야 합니다. 애플리케이션이 제대로 작동하기 위해서는 설정 데이터에 접근해야 하는데, 대부분의 설정 데이터는 민감하지 않지만 일부는 기밀로 유지해야 할 필요가 있습니다. 이러한 기밀 정보를 “비밀”이라고 부릅니다.

혹시 GitHub에 비밀을 저장하고 계신 건 아니겠죠?

신뢰할 수 있는 애플리케이션을 개발하고 있다면, 기능 내에서 비밀 정보나 다른 유형의 민감한 데이터에 접근해야 할 상황이 분명히 생길 겁니다.

이러한 비밀 정보에는 다음과 같은 것들이 포함될 수 있습니다.

  • API 키
  • 데이터베이스 접속 정보
  • 암호화 키
  • 민감한 설정 정보 (예: 이메일 주소, 사용자 이름, 디버그 플래그 등)
  • 비밀번호

이러한 비밀 정보를 안전하게 관리하는 것은 생각보다 어려울 수 있습니다. 개발자와 시스템 관리자를 위한 몇 가지 유용한 팁을 소개합니다.

함수 종속성 패치

함수에 사용되는 라이브러리를 항상 추적하고, 취약점을 식별하기 위해 지속적으로 모니터링해야 합니다.

API 게이트웨이를 보안 완충 장치로 사용

사용자 상호작용을 위해 함수를 직접 노출하지 마십시오. 클라우드 서비스 공급자의 API 게이트웨이 기능을 활용하여 함수 위에 또 다른 보안 계층을 추가하세요.

전송 중인 데이터의 보안 및 검증

보안 통신 채널을 위해 HTTPS를 사용하고, SSL 인증서를 검증하여 원격 신원을 보호하세요.

애플리케이션 코드에 대한 안전한 코딩 규칙 준수

공격자가 서버를 해킹할 수 없다면, 애플리케이션 계층으로 공격 목표를 바꿀 수 있습니다. 따라서 코드 보호에 특별히 주의해야 합니다.

안전한 저장소에서 비밀 관리

적절한 비밀 관리 솔루션을 사용하지 않으면 민감한 정보가 쉽게 노출될 수 있습니다. 또한 오래된 자격 증명은 무지개 테이블 공격에 취약할 수 있습니다. 애플리케이션 시스템, 환경 변수 또는 소스 코드 관리 시스템에 비밀을 저장하지 마십시오.

협업 환경에서는 지식과 자원의 부족으로 인해 비밀 관리가 매우 어렵습니다. 일부 회사는 암호화 키나 다른 소프트웨어 비밀을 애플리케이션 소스 코드에 직접 포함시켜 비밀이 노출될 위험을 감수합니다.

시중에 판매되는 솔루션이 부족하기 때문에 많은 회사들이 자체 비밀 관리 도구를 개발하려 노력해왔습니다. 다음은 여러분의 요구사항에 맞춰 사용할 수 있는 몇 가지 도구들입니다.

Vault

HashiCorp Vault는 비밀 정보를 안전하게 저장하고 접근하기 위한 도구입니다.

엄격한 접근 제어를 유지하면서 종합적인 감사 로그를 기록하고 비밀 정보에 대한 통합 인터페이스를 제공합니다. 또한, 침해 발생 시 공격 표면을 줄이고 공격 시간을 제한하여 사용자 애플리케이션과 기반 시설을 보호합니다.

정책에 따라 비밀 접근을 허용하는 API를 제공하며, API 사용자들은 볼 수 있는 권한이 있는 비밀 정보만 확인하고 볼 수 있어야 합니다.

Vault는 256비트 AES와 GCM을 사용하여 데이터를 암호화합니다.

Amazon DynamoDB, Consul과 같은 다양한 백엔드에 데이터를 저장할 수 있으며, 감사 서비스를 위해 로컬 파일, Syslog 서버 또는 소켓에 직접 로깅을 지원합니다. Vault는 작업을 수행한 클라이언트, 클라이언트의 IP 주소, 수행된 작업 및 작업 시간에 대한 정보를 기록합니다.

Vault는 시작 또는 재시작 시 한 명 이상의 운영자가 Vault를 열어야 합니다. 주로 토큰과 함께 작동하며, 각 토큰은 작업과 경로를 제한할 수 있는 정책에 따라 발급됩니다. Vault의 주요 기능은 다음과 같습니다.

  • 데이터를 저장하지 않고 암호화 및 해독
  • AWS 또는 SQL 데이터베이스와 같은 특정 작업에 대한 주문형 비밀 생성
  • 여러 데이터 센터에서 복제 가능
  • 비밀 회수를 위한 보호 기능 내장
  • 세분화된 접근 제어 기능을 갖춘 비밀 저장소 역할

AWS Secrets Manager

이 목록에 AWS가 포함된 것을 예상하셨을 겁니다, 그렇죠?

AWS는 모든 문제에 대한 해결책을 가지고 있습니다.

AWS Secrets Manager를 사용하면 데이터베이스 자격 증명, API 키, 기타 비밀 정보를 쉽고 빠르게 교체, 관리 및 검색할 수 있습니다. Secrets Manager를 사용하면 타사 서비스와 온프레미스 환경에서 AWS 클라우드 기능에 접근하는 데 필요한 비밀 정보를 보호, 분석 및 관리할 수 있습니다.

Secrets Manager를 사용하면 세분화된 권한을 통해 비밀 정보 접근을 관리할 수 있습니다. AWS Secrets Manager의 주요 기능은 다음과 같습니다.

  • 암호화 키를 사용하여 저장된 비밀 정보 암호화
  • 암호 해독 후 TLS를 통해 안전하게 전송
  • Secrets Manager API 호출에 도움이 되는 코드 샘플 제공
  • 가용성 향상 및 비밀 정보 사용 대기 시간 감소를 위한 클라이언트 측 캐싱 라이브러리
  • AWS 네트워크 내에서 트래픽 유지를 위한 Amazon VPC (Virtual Private Cloud) 엔드포인트 구성

Akeyless Vault

Akeyless Vault는 통합된 엔드 투 엔드 비밀 관리 SaaS 기반 플랫폼으로, 인증서 자동화 및 암호화 키를 포함한 모든 유형의 정적 및 동적 자격 증명을 보호합니다. 또한, 기존 시스템, 멀티 클라우드 및 하이브리드 환경 전반에 걸쳐 모든 자원에 대한 원격 접근(제로 트러스트)을 보호하는 고유한 솔루션을 제공합니다.

Akeyless는 내장된 FIPS 140-2 인증 및 특허 기술을 사용하여 비밀 정보와 키를 보호하며, 고객의 비밀 정보와 키에 대한 어떠한 지식도 가지고 있지 않습니다.

주요 기능은 다음과 같습니다.

  • 다중 지역 및 다중 클라우드 서비스 위에 구축된 클라우드 네이티브 아키텍처를 활용하여 기본 제공 고가용성(HA) 및 재해 복구(DR) 기능을 제공하는 전역적으로 이용 가능한 SaaS 기반 플랫폼
  • 암호, 자격 증명, API 키, 토큰 등과 같은 정적 및 동적 비밀 정보를 위한 보안 저장소를 제공하는 고급 비밀 관리
  • Akeyless Vault를 사용하면 모든 서버, 애플리케이션 및 워크로드에 모든 유형의 비밀 정보를 프로비저닝하고 주입할 수 있으므로, CI/CD, 구성 관리 및 오케스트레이션과 같은 모든 DevOps 및 IT 플랫폼은 물론 Kubernetes 및 Docker와 같은 도구에 연결할 수 있는 다양한 플러그인 제공

가장 빠른 생산 시간 확보 이유:

  • SaaS – 별도의 배포, 설치 또는 유지보수가 필요 없음
  • 기존의 알려진 비밀 저장소에서 자동 마이그레이션을 통한 즉각적인 온보딩

이 플랫폼은 다음 두 가지 주요 기능을 더 지원합니다.

  • 제로 트러스트 애플리케이션 접근 (원격 접근이라고도 함)은 통합 인증 및 Just-In-Time (JIT) 접근 자격 증명을 제공하여 경계 없는 애플리케이션과 인프라를 보호
  • Encryption-as-a-Service를 통해 고객은 고급 FIPS 140-2 인증 앱 수준 암호화를 적용하여 민감한 개인 및 비즈니스 데이터를 보호

Keywhiz

Square Keywhiz는 TLS 인증서 및 키, 대칭 키, API 토큰, 외부 서비스용 SSH 키와 같은 인프라 비밀 정보는 물론 GPG 키링과 데이터베이스 접속 정보도 지원합니다. Keywhiz는 비밀 정보를 처리하고 공유하기 위한 도구입니다.

Keywhiz의 자동화 기능을 사용하면 일관되고 안전한 환경이 필요한 서비스에 필수적인 비밀 정보를 원활하게 배포하고 구성할 수 있습니다. Keywhiz의 주요 기능은 다음과 같습니다.

  • Keywhiz 서버는 비밀 정보를 수집하고 관리하기 위한 JSON API를 제공
  • 모든 비밀 정보를 메모리에만 저장하고 디스크에 저장하지 않음
  • AngularJS로 제작된 UI를 통해 사용자가 UI를 확인하고 사용 가능

Confidant

Confidant는 사용자 친화적인 저장소와 비밀 정보 접근 권한을 안전하게 유지 관리하는 오픈 소스 비밀 관리 도구입니다. Confidant는 DynamoDB에 비밀 정보를 저장하며, Fernet 대칭 인증 암호화를 사용하여 비밀 정보가 변경될 때마다 고유한 KMS 데이터 키를 생성합니다.

최종 사용자가 비밀 정보, 서비스에 대한 비밀 정보 형태 및 변경 이력을 효율적으로 관리할 수 있도록 AngularJS 웹 인터페이스를 제공합니다. 몇 가지 기능은 다음과 같습니다.

  • KMS 인증
  • 버전 관리가 되는 비밀 정보의 미사용 시 암호화
  • 비밀 정보 관리를 위한 사용자 친화적인 웹 인터페이스
  • 서비스 간 인증에 적용하거나 서비스 간 암호화된 메시지 전달에 사용할 수 있는 토큰 생성

SOPS

최근에 발견한 놀라운 도구인 SOPS를 소개합니다. 이 도구는 YAML, JSON, ENV, INI 및 BINARY와 같은 형식을 지원하는 암호화된 파일 편집기입니다. 가장 좋은 점은 무엇일까요? AWS KMS, GCP KMS, Azure Key Vault, age 및 PGP를 사용하여 파일을 암호화할 수 있다는 것입니다.

이제 흥미로운 부분을 알아봅시다. PGP 키와 같은 암호화 키에 직접 접근할 수 없는 시스템에서 작업하고 있다고 상상해 보세요. 걱정하지 마세요! SOPS는 키 서비스 기능을 제공합니다. 소켓을 전달하여 원격 시스템에 저장된 암호화 키에 대한 SOPS 접근 권한을 부여할 수 있습니다. 나만의 휴대용 GPG 에이전트를 갖는 것과 같습니다!

SOPS는 데이터 키를 암호화하고 해독하기 위해 클라이언트-서버 모델로 작동합니다. 기본적으로 프로세스 내에서 로컬 키 서비스를 실행합니다. 클라이언트는 gRPC 및 프로토콜 버퍼를 사용하여 키 서비스에 암호화 또는 해독 요청을 보냅니다. 이 요청에 공개 또는 개인 암호화 키가 포함되어 있지 않아 안심할 수 있습니다.

현재 키 서비스 연결에는 인증 또는 암호화가 부족하다는 점을 강조해야 합니다. 보안을 위해서는 SSH 터널과 같은 다른 수단을 통해 연결을 인증하고 암호화하는 것이 좋습니다.

하지만 여기서 끝이 아닙니다! SOPS는 제어된 환경에서 파일 접근을 추적하기 위해 감사 로그를 생성할 수 있습니다. 활성화되면 타임스탬프, 사용자 이름 및 해독된 파일을 포함한 해독 활동을 PostgreSQL 데이터베이스에 기록합니다. 정말 멋지죠?

또한 SOPS는 해독된 비밀 정보를 새 프로세스에 전달하기 위한 편리한 두 가지 명령(exec-env 및 exec-file)을 제공합니다. 전자는 자식 프로세스의 환경에 출력을 주입하고, 후자는 임시 파일에 저장합니다.

파일 확장자는 SOPS에서 사용하는 암호화 방법을 결정합니다. 특정 형식의 파일을 암호화하는 경우 해독을 위해 원래 파일 확장자를 유지해야 합니다. 이것이 호환성을 보장하는 가장 쉬운 방법입니다.

SOPS는 hiera-eyaml, credstash, sneaker 및 암호 저장소와 같은 도구에서 영감을 얻었습니다. PGP 암호화 파일 관리의 어려움을 제거해 주는 훌륭한 솔루션입니다.

Azure Key Vault

Azure에서 애플리케이션을 호스팅하고 계신가요? 그렇다면 이 도구가 좋은 선택이 될 것입니다.

Azure Key Vault를 사용하면 사용자가 클라우드 애플리케이션에 대한 모든 비밀 정보(키, 인증서, 연결 문자열, 암호 등)를 한곳에서 관리할 수 있습니다. Azure에서 비밀 정보의 원본과 대상이 즉시 통합됩니다. 또한, Azure 외부의 애플리케이션에서도 이를 활용할 수 있습니다.

또한 암호화 키를 온프레미스가 아닌 클라우드에 저장하여 클라우드 애플리케이션의 대기 시간을 줄여 성능을 개선할 수 있습니다.

Azure는 데이터 보호 및 규정 준수 요구 사항을 충족하는 데 도움을 줄 수 있습니다.

Docker Secrets

Docker 시크릿을 사용하면 암호를 클러스터에 쉽게 추가할 수 있으며, 상호 인증된 TLS 연결을 통해서만 공유됩니다. 데이터는 Docker 시크릿 관리자 노드에 도달한 후 내부 Raft 저장소에 자동 저장되어 안전하게 암호화됩니다.

Docker 시크릿은 데이터 관리를 위해 쉽게 적용할 수 있으며, 데이터를 접근 가능한 컨테이너로 전송하여 애플리케이션이 비밀 정보를 사용하는 동안 비밀 정보가 유출되는 것을 방지합니다.

Knox

Knox는 소셜 미디어 플랫폼인 Pinterest에서 키를 수동으로 관리하고 감사 추적을 유지하는 문제를 해결하기 위해 개발되었습니다. Knox는 Go 언어로 작성되었으며, 클라이언트는 REST API를 사용하여 Knox 서버와 통신합니다.

Knox는 휘발성 임시 데이터베이스를 사용하여 키를 저장합니다. 데이터베이스에 저장된 데이터는 마스터 암호화 키와 함께 AES-GCM을 사용하여 암호화됩니다. Knox는 Docker 이미지로도 제공됩니다.

Doppler

신생 기업부터 대기업에 이르기까지 수천 개의 조직이 Doppler를 사용하여 환경, 팀 구성원 및 장치 간에 비밀 정보와 애플리케이션 설정을 동기화된 상태로 유지하고 있습니다.

더 이상 이메일, ZIP 파일, Git 및 Slack을 통해 비밀 정보를 공유할 필요가 없습니다. 비밀 정보를 추가하면 팀 구성원들과 즉시 공유할 수 있으며, 협업할 수 있습니다. Doppler는 프로세스를 자동화하고 시간을 절약하여 사용자에게 편리함을 제공합니다.

정해진 간격으로 한 번만 업데이트하면 모든 작업이 완료되도록 자주 사용되는 비밀 정보에 대한 참조를 만들 수 있습니다. 서버리스 환경이든 Docker 환경이든 상관없이 어디에서든 비밀 정보를 사용할 수 있습니다. Doppler는 모든 환경에서 작동합니다. 스택이 변경되어도 그대로 유지되므로 몇 분 안에 서비스에 적용할 수 있습니다.

Doppler CLI는 프로젝트 디렉터리를 기반으로 비밀 정보 가져오기에 대한 모든 것을 알고 있습니다. 변경 사항이 있어도 걱정하지 마십시오. 클릭 한 번 또는 CLI와 API를 통해 손상된 변경 사항을 쉽게 롤백할 수 있습니다.

Doppler를 사용하면 더 열심히 일할 필요 없이 더 효율적으로 작업할 수 있으며, 비밀 관리 소프트웨어를 무료로 이용할 수 있습니다. 더 많은 기능과 혜택을 원하는 경우에는 월 6달러/시트의 스타터 팩을 사용해 보세요.

결론

위의 내용이 애플리케이션 자격 증명을 관리하는 데 도움이 되는 최고의 소프트웨어에 대한 아이디어를 제공했기를 바랍니다.

다음으로는 디지털 자산 인벤토리 및 모니터링 솔루션에 대해 알아보겠습니다.