如何保护rabbitmq密码时,使用流氓配置文件在nodejs

tyg4sfes  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(2)|浏览(361)

我正在尝试实现一个NodeJS微服务,我需要它来使用RabbitMQ。对于rabbit集成,我使用'racks'(https://github.com/guidesmiths/rascal),因为它解决了我的很多问题。我注意到racks是由一个配置文件驱动的,在该文件中您声明了rabbit URL、用户名、密码等。
我的问题是,保护流氓配置文件中的这些密码的最佳实践是什么,这样它将
a)不被推到git
b)不易暴露

q3aa0525

q3aa05251#

我建议将secret作为环境变量加载。Rascal配置也可以定义为JavaScript文件(see the example from Rascal's repository),而不是JSON。然后,secret可以在运行时通过**process.env.**在配置文件内部访问<SECRET_NAME>。

dldeef67

dldeef672#

使用amqplib npm模块在nodejs上使用一个rabbitmq集成。我给出了rabbitmq上的示例发布消费代码。

发布代码:

var amqp = require('amqplib/callback_api');

amqp.connect('amqp://username:password@localhost:5672', function(err, connection) {
    if (err) throw err;

    connection.createChannel(function(err, channel) {
        if (err) throw err;
        var exchange = 'data';

        var msg = "Welcome to Node and rabbitMQ";

        channel.assertExchange(exchange, 'fanout', {
            durable: false
        })
        channel.publish(exchange, '', Buffer.from(msg));
        console.log(msg)
    })

})

冲减代码

var amqp = require('amqplib/callback_api');

amqp.connect('amqp://username:password@localhost:5672', function(err0, connection) {
    if (err0) throw err0;
    connection.createChannel(function(err1, channel) {
        if (err1) throw err1;
        var exchange = 'data';
        channel.assertExchange(exchange, 'fanout', { durable: false })
        channel.assertQueue('', {
            exclusive: true
        }, function(err2, value) {
            channel.bindQueue(value.queue, exchange, '');

            channel.consume(value.queue, function(msg) {
                console.log("message:", msg.content.toString())

            }, { noAck: true })
        })
    })
})

相关问题