좋은 질문이십니다 정우님 👌
amqp_login() 함수에서 사용하는 "admin", "admin123"은 단순히 RabbitMQ 서버에 등록된 계정 정보일 뿐이고,
반드시 admin 계정만 사용해야 하는 건 아닙니다.
RabbitMQ는 사용자 계정을 여러 개 만들 수 있고,
각 계정마다 접근 권한(vhost, exchange, queue 등)을 다르게 줄 수 있습니다.
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에 생성된 계정만 입력하면 됩니다.
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");
| 구분 | 명령 | 설명 |
|---|---|---|
| 사용자 생성 | 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 접근 가능 |
| 역할 | 계정 | 권한 |
|---|---|---|
| 관리자 UI | admin | 모든 vhost 접근 |
| ffmpeg 변환기 | ffmpegd | /media vhost 접근만 허용 |
| 웹 API 서버 | api | /api vhost 접근만 허용 |
이렇게 하면 서비스별로 권한이 완전히 분리되어
보안·운영 측면에서 매우 안정적입니다.
요약하자면:
🔹
amqp_login()은 admin 전용이 아니다.
🔹 RabbitMQ에 생성된 임의의 사용자 계정으로 로그인 가능하다.
🔹 ffmpegd 전용 계정을 만들어 vhost를 제한하는 것이 실무적으로 권장된다.
원하신다면 정우님 ffmpegd 전용 계정 구성을 위한
RabbitMQ user + vhost 설정 스크립트를 함께 만들어드릴까요?
(rabbitmqctl 기반, 도커 컨테이너 안에서 실행 가능)