Skip to content

Commit eb37aad

Browse files
feat(fips): disable otel components pulling in x/crypto deps (#7548) (#7590)
* feat(fips): disable otel components pulling in x/crypto deps some otel components are pulling several x/crypto packages under the hood disable them in fips mode * Update components_fips.go * Update components_nofips.go * Update components.go (cherry picked from commit 041f827) Co-authored-by: kruskall <[email protected]>
1 parent 61c8edf commit eb37aad

File tree

3 files changed

+65
-10
lines changed

3 files changed

+65
-10
lines changed

internal/pkg/otel/components.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@ import (
2020
jmxreceiver "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver"
2121
k8sclusterreceiver "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver"
2222
k8sobjectsreceiver "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sobjectsreceiver"
23-
kafkareceiver "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver"
2423
kubeletstatsreceiver "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver"
2524
nginxreceiver "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nginxreceiver"
26-
prometheusreceiver "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver"
2725
receivercreator "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/receivercreator"
2826
redisreceiver "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver"
2927
zipkinreceiver "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver"
@@ -52,7 +50,6 @@ import (
5250
// Exporters:
5351
"github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter"
5452
fileexporter "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter" // for e2e tests
55-
kafkaexporter "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter"
5653
"github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter"
5754
debugexporter "go.opentelemetry.io/collector/exporter/debugexporter" // for dev
5855
"go.opentelemetry.io/collector/exporter/otlpexporter"
@@ -78,15 +75,14 @@ func components(extensionFactories ...extension.Factory) func() (otelcol.Factori
7875
factories := otelcol.Factories{}
7976

8077
// Receivers
81-
factories.Receivers, err = receiver.MakeFactoryMap(
78+
receivers := []receiver.Factory{
8279
otlpreceiver.NewFactory(),
8380
filelogreceiver.NewFactory(),
8481
kubeletstatsreceiver.NewFactory(),
8582
k8sclusterreceiver.NewFactory(),
8683
hostmetricsreceiver.NewFactory(),
8784
httpcheckreceiver.NewFactory(),
8885
k8sobjectsreceiver.NewFactory(),
89-
prometheusreceiver.NewFactory(),
9086
receivercreator.NewFactory(),
9187
redisreceiver.NewFactory(),
9288
nginxreceiver.NewFactory(),
@@ -95,9 +91,12 @@ func components(extensionFactories ...extension.Factory) func() (otelcol.Factori
9591
fbreceiver.NewFactory(),
9692
mbreceiver.NewFactory(),
9793
jmxreceiver.NewFactory(),
98-
kafkareceiver.NewFactory(),
9994
nopreceiver.NewFactory(),
100-
)
95+
}
96+
// some receivers should only be available when
97+
// not in fips mode due to restrictions on crypto usage
98+
receivers = addNonFipsReceivers(receivers)
99+
factories.Receivers, err = receiver.MakeFactoryMap(receivers...)
101100
if err != nil {
102101
return otelcol.Factories{}, err
103102
}
@@ -122,15 +121,18 @@ func components(extensionFactories ...extension.Factory) func() (otelcol.Factori
122121
}
123122

124123
// Exporters
125-
factories.Exporters, err = exporter.MakeFactoryMap(
124+
exporters := []exporter.Factory{
126125
otlpexporter.NewFactory(),
127126
debugexporter.NewFactory(),
128127
fileexporter.NewFactory(),
129128
elasticsearchexporter.NewFactory(),
130129
loadbalancingexporter.NewFactory(),
131130
otlphttpexporter.NewFactory(),
132-
kafkaexporter.NewFactory(),
133-
)
131+
}
132+
// some exporters should only be available when
133+
// not in fips mode due to restrictions on crypto usage
134+
exporters = addNonFipsExporters(exporters)
135+
factories.Exporters, err = exporter.MakeFactoryMap(exporters...)
134136
if err != nil {
135137
return otelcol.Factories{}, err
136138
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
2+
// or more contributor license agreements. Licensed under the Elastic License 2.0;
3+
// you may not use this file except in compliance with the Elastic License 2.0.
4+
5+
//go:build requirefips
6+
7+
package otel
8+
9+
import (
10+
"go.opentelemetry.io/collector/exporter"
11+
"go.opentelemetry.io/collector/receiver"
12+
)
13+
14+
func addNonFipsReceivers(receivers []receiver.Factory) []receiver.Factory {
15+
// do not add non fips receivers in fips mode
16+
return receivers
17+
}
18+
19+
func addNonFipsExporters(exporters []exporter.Factory) []exporter.Factory {
20+
// do not add non fips exporters in fips mode
21+
return exporters
22+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
2+
// or more contributor license agreements. Licensed under the Elastic License 2.0;
3+
// you may not use this file except in compliance with the Elastic License 2.0.
4+
5+
//go:build !requirefips
6+
7+
package otel
8+
9+
import (
10+
kafkaexporter "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter"
11+
kafkareceiver "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver"
12+
prometheusreceiver "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver"
13+
"go.opentelemetry.io/collector/exporter"
14+
"go.opentelemetry.io/collector/receiver"
15+
)
16+
17+
func addNonFipsReceivers(receivers []receiver.Factory) []receiver.Factory {
18+
receivers = append(receivers,
19+
kafkareceiver.NewFactory(),
20+
prometheusreceiver.NewFactory(),
21+
)
22+
23+
return receivers
24+
}
25+
26+
func addNonFipsExporters(exporters []exporter.Factory) []exporter.Factory {
27+
exporters = append(exporters,
28+
kafkaexporter.NewFactory(),
29+
)
30+
return exporters
31+
}

0 commit comments

Comments
 (0)