diff --git a/config/custom-environment-variables.yml b/config/custom-environment-variables.yml index dcdf4a2e85c6b100c065983fa6b06d8f68bdc833..352d72dd4c2db8f0d8f091c62a9985356dc2ffce 100644 --- a/config/custom-environment-variables.yml +++ b/config/custom-environment-variables.yml @@ -6,7 +6,6 @@ public: metrics: prometheus: enabled: 'METRICS_PROMETHEUS_ENABLED' - allowedIps: 'METRICS_PROMETHEUS_ALLOWED_IPS' ssl: isSecure: 'HTTPS' diff --git a/config/default.yml b/config/default.yml index 3774c444870ef2820c91af74757da0b63cc9c66c..7adbce874e3ec7da0d07156ef133200db5aee120 100644 --- a/config/default.yml +++ b/config/default.yml @@ -5,7 +5,6 @@ public: metrics: prometheus: enabled: false - allowedIps: [] ssl: isSecure: false diff --git a/core/server/prometheus-metrics.js b/core/server/prometheus-metrics.js index 1ea92427122f85bea53c57eeb2f4b4999bc987c1..939dd319444e681fbdcee8ee98b2cda7c904e8d2 100644 --- a/core/server/prometheus-metrics.js +++ b/core/server/prometheus-metrics.js @@ -2,19 +2,11 @@ const prometheus = require('prom-client') -class PrometheusMetrics { +module.exports = class PrometheusMetrics { constructor(config = {}) { this.enabled = config.enabled || false - const matchNothing = /(?!)/ - this.allowedIps = config.allowedIps - ? new RegExp(config.allowedIps) - : matchNothing if (this.enabled) { - console.log( - `Metrics are enabled. Access to /metrics resource is limited to IP addresses matching: ${ - this.allowedIps - }` - ) + console.log('Metrics are enabled.') } } @@ -28,16 +20,8 @@ class PrometheusMetrics { setRoutes(server, register) { server.route(/^\/metrics$/, (data, match, end, ask) => { - const ip = ask.req.socket.remoteAddress - if (this.allowedIps.test(ip)) { - ask.res.setHeader('Content-Type', register.contentType) - ask.res.end(register.metrics()) - } else { - ask.res.statusCode = 403 - ask.res.end() - } + ask.res.setHeader('Content-Type', register.contentType) + ask.res.end(register.metrics()) }) } } - -module.exports = PrometheusMetrics diff --git a/core/server/prometheus-metrics.spec.js b/core/server/prometheus-metrics.spec.js index e6d9759dcdcd40a1506502d651848addb0eac12d..e69f2eb0d8beefa6d0049821d6d4ed4bb3e6add2 100644 --- a/core/server/prometheus-metrics.spec.js +++ b/core/server/prometheus-metrics.spec.js @@ -43,50 +43,12 @@ describe('Prometheus metrics route', function() { expect(await res.text()).to.not.contains('nodejs_version_info') }) - it('returns metrics for allowed IP', async function() { - new Metrics({ - enabled: true, - allowedIps: '^(127\\.0\\.0\\.1|::1|::ffff:127\\.0\\.0\\.1)$', - }).initialize(camp) + it('returns metrics when enabled', async function() { + new Metrics({ enabled: true }).initialize(camp) const res = await fetch(`${baseUrl}/metrics`) expect(res.status).to.be.equal(200) expect(await res.text()).to.contains('nodejs_version_info') }) - - it('returns metrics for request from allowed remote address', async function() { - new Metrics({ - enabled: true, - allowedIps: '^(127\\.0\\.0\\.1|::1|::ffff:127\\.0\\.0\\.1)$', - }).initialize(camp) - - const res = await fetch(`${baseUrl}/metrics`) - - expect(res.status).to.be.equal(200) - expect(await res.text()).to.contains('nodejs_version_info') - }) - - it('returns 403 for not allowed IP', async function() { - new Metrics({ - enabled: true, - allowedIps: '^127\\.0\\.0\\.200$', - }).initialize(camp) - - const res = await fetch(`${baseUrl}/metrics`) - - expect(res.status).to.be.equal(403) - expect(await res.text()).to.not.contains('nodejs_version_info') - }) - - it('returns 403 for every request when list with allowed IPs not defined', async function() { - new Metrics({ - enabled: true, - }).initialize(camp) - - const res = await fetch(`${baseUrl}/metrics`) - - expect(res.status).to.be.equal(403) - expect(await res.text()).to.not.contains('nodejs_version_info') - }) }) diff --git a/core/server/server.js b/core/server/server.js index 903b5e71c16f91b48d8f68bd632416fbaa1210fb..898be6cf0fcbe2d7633649f395dacf7803f291f9 100644 --- a/core/server/server.js +++ b/core/server/server.js @@ -46,9 +46,6 @@ const publicConfigSchema = Joi.object({ metrics: { prometheus: { enabled: Joi.boolean().required(), - allowedIps: Joi.array() - .items(Joi.string().ip()) - .required(), }, }, ssl: {