Configure Client-Side Field Level Encryption on Confluent Platform

Client-side field level encryption (CSFLE) supports the following configuration parameters for the different rule executors. A rule executor is a component that performs field-level encryption transformations and is responsible for the following:

  • Executing encryption and decryption operations based on defined rules.
  • Determining which fields should be encrypted or decrypted.
  • Applying the appropriate encryption keys and algorithms according to your configuration.

The rule executor ensures that your encryption policies are consistently applied across your application without requiring manual encryption or decryption calls for each operation.

Configure CSFLE

You can configure CSFLE using either configuration parameters or environment variables. Both methods are supported across all rule executors, and you can choose the approach that best fits your security and deployment requirements.

Configuration Methods

Use configuration parameters

Specify parameters directly in your configuration file or application settings:

# AWS Example
rule.executors._default_.param.access.key.id=AKIAIOSFODNN7EXAMPLE
rule.executors._default_.param.secret.access.key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

# Azure Example
rule.executors._default_.param.tenant.id=your-tenant-id
rule.executors._default_.param.client.id=your-client-id
rule.executors._default_.param.client.secret=your-client-secret

Use environment variables

Set environment variables before running your application:

# AWS Example
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

# Azure Example
export AZURE_TENANT_ID=your-tenant-id
export AZURE_CLIENT_ID=your-client-id
export AZURE_CLIENT_SECRET=your-client-secret

# Google Cloud Example
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account-key.json

# HashiCorp Vault Example
export VAULT_TOKEN=your-token-value
export VAULT_NAMESPACE=your-namespace

Best Practices

Environment variables are generally preferred for sensitive credentials to:

  • Keep secrets out of configuration files
  • Reduce the risk of accidentally committing credentials to version control
  • Allow for easier credential rotation in containerized environments

For development and testing:

  • Use the Local CSFLE rule executor with a simple secret.
  • Generate a test secret: openssl rand -base64 16.
  • Set it using: export LOCAL_SECRET=generated-secret-value.

For production environments:

  • Use cloud provider default credential chains when possible.
  • Implement proper secret management and rotation procedures.
  • Consider using managed identity services where available.

Common Parameters

Use the following configuration parameters with all CSFLE rule executors.

Parameter Description
rule.executors._default_.param.preserve.source.fields For performance reasons, the fields of a message are updated during field-level transforms. For field-level encryption, this results in the field values being replaced with the encrypted field values. If the original field values should be retained in the message, then set this property to true.

AWS CSFLE rule executor

You can pass the following configuration parameters or specify the values using environment variables, such as the following:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_PROFILE
  • AWS_ROLE_ARN
  • AWS_ROLE_SESSION_NAME
  • AWS_ROLE_EXTERNAL_ID

If no configuration parameters are passed, the client uses the default credentials provider chain.

Parameter Description
rule.executors._default_.param.access.key.id The AWS access key identifier.
rule.executors._default_.param.secret.access.key The AWS secret access key.
rule.executors._default_.param.profile The AWS profile to use.
rule.executors._default_.param.role.arn The AWS role ARN to use.
rule.executors._default_.param.role.session.name The AWS role session name to use.
rule.executors._default_.param.role.external.id The AWS role external ID to use.

Azure CSFLE rule executor

You can pass the following configuration parameters or specify the values using environment variables, such as:

  • AZURE_TENANT_ID
  • AZURE_CLIENT_ID
  • AZURE_CLIENT_SECRET

If no configuration parameters are passed, the client uses the default credentials chain.

Parameter Description
rule.executors._default_.param.tenant.id The Azure tenant identifier.
rule.executors._default_.param.client.id The Azure client identifier.
rule.executors._default_.param.client.secret The Azure client secret.

Google Cloud CSFLE rule executor

You can pass the following configuration parameters or specify the values using the environment variable, such as GOOGLE_APPLICATION_CREDENTIALS.

If no configuration parameters are passed, the client uses the application default credentials.

Parameter Description
rule.executors._default_.param.account.type The Google Cloud account type.
rule.executors._default_.param.client.id The Google Cloud client identifier.
rule.executors._default_.param.client.email The Google Cloud client email address.
rule.executors._default_.param.private.key.id The Google Cloud private key identifier.
rule.executors._default_.param.private.key The Google Cloud private key.

HashiCorp Vault CSFLE rule executor

You can pass the following configuration parameters or specify the values using environment variables named:

  • VAULT_TOKEN
  • VAULT_NAMESPACE
Parameter Description
rule.executors._default_.param.token.id The token identifier for HashiCorp Vault.
rule.executors._default_.param.namespace (Optional) The namespace for HashiCorp Vault Enterprise.

Local CSFLE rule executor

For testing only, you can pass the following configuration parameter or specify the value using an environment variable named LOCAL_SECRET.

Parameter Description
rule.executors._default_.param.secret A randomly generated secret, such as one obtained by running openssl rand -base64 16quick.