RabbitMQ 사용자별 권한

백엔드&인프라 추종자·2025년 11월 4일

좋은 질문이십니다 정우님 👌

amqp_login() 함수에서 사용하는 "admin", "admin123"단순히 RabbitMQ 서버에 등록된 계정 정보일 뿐이고,
반드시 admin 계정만 사용해야 하는 건 아닙니다.

RabbitMQ는 사용자 계정을 여러 개 만들 수 있고,
각 계정마다 접근 권한(vhost, exchange, queue 등)을 다르게 줄 수 있습니다.


🧩 1️⃣ amqp_login()의 기본 구조

amqp_login(conn,
           "/",                 // virtual host
           0,                   // channel_max (0 = default)
           131072,              // frame_max
           60,                  // heartbeat (초 단위)
           AMQP_SASL_METHOD_PLAIN,
           "admin",             // username
           "admin123");         // password

여기서 "admin", "admin123" 부분이 로그인에 사용되는 RabbitMQ 계정입니다.
즉, 미리 RabbitMQ에 생성된 계정만 입력하면 됩니다.


🧩 2️⃣ 일반 사용자 계정도 가능

RabbitMQ는 기본적으로 관리자(admin) 외에 여러 일반 사용자 계정을 지원합니다.

예를 들어, ffmpegd 전용 계정을 만들 수 있습니다.

# 사용자 생성
rabbitmqctl add_user ffmpegd ffmpeg123

# 권한 부여 (특정 vhost에만 접근 가능하도록)
rabbitmqctl set_permissions -p / ffmpegd ".*" ".*" ".*"

# 선택적으로 tag 지정 (관리자가 아닌 일반 사용자)
rabbitmqctl set_user_tags ffmpegd none

그 후 코드에서는 이렇게 로그인하면 됩니다 👇

amqp_login(conn, "/", 0, 131072, 60, AMQP_SASL_METHOD_PLAIN, "ffmpegd", "ffmpeg123");

🧩 3️⃣ 권한 모델 간단히 요약

구분명령설명
사용자 생성rabbitmqctl add_user <user> <password>계정 생성
사용자 삭제rabbitmqctl delete_user <user>계정 삭제
권한 설정rabbitmqctl set_permissions -p <vhost> <user> <conf> <write> <read>특정 vhost 내 권한
관리자 권한 부여rabbitmqctl set_user_tags <user> administrator관리 UI 접근 가능

🧩 4️⃣ 실무에서는 이렇게 분리합니다

역할계정권한
관리자 UIadmin모든 vhost 접근
ffmpeg 변환기ffmpegd/media vhost 접근만 허용
웹 API 서버api/api vhost 접근만 허용

이렇게 하면 서비스별로 권한이 완전히 분리되어
보안·운영 측면에서 매우 안정적입니다.


✅ 결론

요약하자면:

🔹 amqp_login()은 admin 전용이 아니다.
🔹 RabbitMQ에 생성된 임의의 사용자 계정으로 로그인 가능하다.
🔹 ffmpegd 전용 계정을 만들어 vhost를 제한하는 것이 실무적으로 권장된다.


원하신다면 정우님 ffmpegd 전용 계정 구성을 위한
RabbitMQ user + vhost 설정 스크립트를 함께 만들어드릴까요?
(rabbitmqctl 기반, 도커 컨테이너 안에서 실행 가능)

profile
AI 답변 글을 주로 올립니다.

0개의 댓글