Skip to content

[all][meta] Make existing sensitive configuration fields opaque #17273

Closed
@mx-psi

Description

@mx-psi

Overview

As part of open-telemetry/opentelemetry-collector#6851 and with the goal of creating a system to query the Collector's configuration, the configopaque.String type alias has been added to the core Collector library to be used on fields that contain sensitive information.

To ensure that no sensitive information is leaked on existing components' configuration, we need to audit their configuration schema and change the type on sensitive fields to use configopaque.String.

This issue intends to list all components where such a change is needed.

To generate the initial list, I searched for instances of "Token", "Key", "Password" and "Secret" on any file named config.go on this repository.

How to make the change

Changing a field type is a breaking change and should be noted as such on the changelog. Codeowners of a given component can choose to make this change with or without a deprecation, depending on how many users a component has as a Go module:

My expectation is that for most fields we can do this without deprecation since usage of the Go API is minimal/nonexistent.

List of subtasks

Receivers

  • [receiver/aerospike] Use configopaque for password field
  • [receiver/awsfirehose] Change the type of Config.AccessKey to be configopaque.String #23829
  • [receiver/bigip] Use configopaque for password field
  • [receiver/cloudfoundry] Change the type of Config.UAA.Password to be configopaque.String #23832
  • [receiver/couchdb] Use configopaque for password field
  • [receiver/elasticsearch] Use configopaque for password field
  • [receiver/jmx] Use configopaque for password, keystore_password, truststore_password fields
  • [receiver/mongodbatlas] Use configopaque for private_key and secret fields
  • [receiver/mongodb] Use configopaque for password field
  • [receiver/mysql] Use configopaque for password field
  • [receiver/nsxt] Use configopaque for password field
  • [receiver/podman] Use configopaque for ssh_passphrase field
  • [receiver/postgresql] Use configopaque for password field
  • [receiver/pulsar] Use configopaque for auth::Token::Token and auth::athenz::private_key fields
  • [receiver/rabbitmq] Use configopaque for password field
  • [receiver/redis] Use configopaque for password field
  • [receiver/riak] Use configopaque for password field
  • [receiver/saphana] Use configopaque for password field
  • [receiver/snmp] Use configopaque for auth_password and privacy_password fields
  • [receiver/snowflake] Use configopaque for password field
  • [receiver/solace] Use configopaque for password field
  • [receiver/vcenter] Use configopaque for password field

Processors

Exporters

Extensions

  • [extension/asapauth] Use configopaque for private_key field
  • [extension/basicauth] Use configopaque for client_auth::password field
  • [extension/bearertokenauth] Use configopaque for token field
  • [extension/oauth2clientauth] Use configopaque for client_secret field

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions