RabbitMQ 시크릿 엔진

RabbitMQ 시크릿 엔진

RabbitMQ 시크릿 엔진은 구성된 권한과 가상 호스트에 따라 사용자 크레덴셜을 동적으로 생성해요. 즉 가상 호스트에 접근해야 하는 서비스는 더 이상 크레덴셜을 하드코딩할 필요가 없어요.

모든 서비스가 고유 크레덴셜로 메시지 큐에 접근하면, 의심스러운 데이터 접근이 발견됐을 때 감사가 훨씬 쉬워져요. RabbitMQ 사용자 이름을 기반으로 서비스의 특정 인스턴스까지 문제를 쉽게 추적할 수 있어요.

Vault는 자체 내부 폐기 시스템과 RabbitMQ 사용자 생성 시 해당 사용자 삭제를 모두 사용해서, 리스가 만료된 후 합리적인 시간 안에 사용자가 무효화되도록 보장해요.

출처: 문서

본문

설정 (Setup)

대부분의 시크릿 엔진은 본래 기능을 수행하기 전에 미리 설정을 해 둬야 해요. 이 단계들은 보통 운영자나 설정 관리 도구가 수행해요.

1. RabbitMQ 시크릿 엔진을 활성화합니다.

$ vault secrets enable rabbitmq
Success! Enabled the rabbitmq secrets engine at: rabbitmq/

기본적으로 시크릿 엔진은 엔진 이름과 같은 경로에 마운트돼요. 다른 경로에 활성화하려면 -path 인자를 사용하면 됩니다.

2. Vault가 RabbitMQ와 통신할 때 사용할 크레덴셜을 구성합니다.

$ vault write rabbitmq/config/connection \
    connection_uri="http://localhost:15672" \
    username="admin" \
    password="password"
Success! Data written to: rabbitmq/config/connection

Vault 사용자가 사용자를 관리할 관리자 권한을 가져야 한다는 것이 중요해요.

3. Vault의 이름을 가상 호스트 권한에 매핑하는 역할(Role)을 구성합니다.

$ vault write rabbitmq/roles/my-role \
    vhosts='{"/":{"write": ".*", "read": ".*"}}'
Success! Data written to: rabbitmq/roles/my-role

roles/my-role 경로에 쓰기(write)를 하면 my-role 역할을 정의하는 것이에요. 이 역할은 주어진 vhosts, vhost_topics, tags 문장을 평가해 생성됩니다. 기본적으로 역할에는 태그, 가상 호스트 또는 토픽 권한이 할당되지 않아요. 토픽 권한이 정의되지 않고 기본 인증 백엔드가 사용되면, 토픽 교환에 게시하거나 토픽에서 소비하는 것이 항상 승인돼요. RabbitMQ 관리 태그RabbitMQ 토픽 인증에 대해 더 알아볼 수 있어요.

사용법 (Usage)

시크릿 엔진이 설정되고 사용자/머신이 적절한 권한을 가진 Vault 토큰을 갖게 되면 크레덴셜을 생성할 수 있어요.

1. 역할 이름으로 /creds 엔드포인트를 읽어 새 크레덴셜을 생성합니다.

$ vault read rabbitmq/creds/my-role
Key                Value
---                -----
lease_id           rabbitmq/creds/my-role/I39Hu8XXOombof4wiK5bKMn9
lease_duration     768h
lease_renewable    true
password           3yNDBikgQvrkx2VA2zhq5IdSM7IWk1RyMYJr
username           root-39669250-3894-8032-c420-3d58483ebfc4

ACL을 사용하면 신뢰할 수 있는 운영자가 역할 정의를 관리하고, 사용자와 애플리케이션이 읽을 수 있는 크레덴셜이 제한되도록 rabbitmq 시크릿 엔진 사용을 제한할 수 있어요.

API

RabbitMQ 시크릿 엔진은 완전한 HTTP API를 제공해요. 자세한 내용은 RabbitMQ 시크릿 엔진 API 문서를 참고해 주세요.

Terraform

Vault Terraform 프로바이더로 RabbitMQ 시크릿 리소스를 프로그래밍 방식으로 관리할 수 있어요. 자세한 내용은 Terraform Registry 문서를 참고하세요.

더 알아보기 (Learn more)

  • Vault RabbitMQ 시크릿 엔진 전체 API는 RabbitMQ API 문서를 확인하세요.
  • RabbitMQ 권한 모델에 대한 자세한 내용은 RabbitMQ 문서를 참고하세요.