Barbican

김유경·2025년 8월 9일
1

들어가며

클라우드 환경에서는 TLS 인증서, 암호화 키, API 토큰과 같은 민감 정보가 필수적으로 사용됩니다. 이러한 데이터는 안전하게 보관하고, 필요할 때만 접근할 수 있도록 하는 것이 보안의 핵심입니다.

Barbican은 OpenStack 환경에서 이러한 역할을 전담하는 Key Management Service(KMS)입니다. Kubernetes의 Secret이 클러스터 내부 민감 정보를 관리한다면, Barbican은 OpenStack 전역을 대상으로 민감 정보를 관리합니다.


Barbican이란?

Barbican은 OpenStack 전반에서 민감 정보를 안전하게 관리하는 중앙 집중형 서비스입니다.

특징

  • Nova, Cinder, Octavia 등 다른 OpenStack 서비스와 연동 가능
  • 데이터는 항상 암호화된 상태로 저장
  • REST API를 통해 외부 시스템과도 연계 가능

구성 요소

  • Secret: 암호화된 객체 (예: 비밀번호, 인증서, 키)
  • Container: 여러 개의 Secret을 하나의 컨테이너로 묶어서 관리
  • Order: 비밀 정보를 생성/요청하는 작업 (예: 암호화 키 발급)
  • ACL: Secret에 대한 접근 권한 부여 및 제어

Secret 저장 예시

다음 명령어는 my-secret이라는 이름으로 비밀번호를 Barbican에 저장하는 예시입니다.

openstack secret store \
--name "my-secret" \
--payload "my-secret-password" \
--payload-content-type text/plain

--name : 시크릿 이름
--payload : 저장할 실제 데이터
--payload-content-type : 데이터 타입


Container로 Secret 그룹화

Barbican의 Container는 관련된 Secret을 하나의 그룹으로 관리할 수 있도록 합니다.

Generic 타입

단순히 여러 Secret을 묶어서 관리하는 용도로 사용됩니다.

openstack secret container create --name "yukyung-container" \
  --type generic \
  --secret "my_key_1=<Secret URL>" \
  --secret "my_key_2=<Secret URL>"

–type generic : 구조를 인식하지 않고 단순 묶음

Certificate 타입

TLS/SSL 인증서 세트를 구조적으로 묶어서 관리하는 용도로 사용됩니다.

openstack secret container create --name "yukyung-container" \
  --type certificate \
  --secret "certificate=<Secret URL>" \
  --secret "private_key=<Secret URL>"

–type certificate : 인증서 구조 인식

고정 슬롯

  • certificate : 서버 인증서
  • private_key : 인증서의 개인키
  • intermediates : 중간 CA 인증서 (옵션)
  • private_key_passphrase : 개인키 비밀번호 (옵션)

Octavia 연동

Certificate 타입 컨테이너는 로드밸런서 HTTPS 리스너 설정 시 직접 지정할 수 있습니다.

openstack loadbalancer listener create \
  --name my-https-listener \
  --protocol HTTPS \
  --protocol-port 443 \
  --default-tls-container-ref <컨테이너 href> \
  <로드밸런서 ID>

0개의 댓글