Bird
Raised Fist0
Kafkadevops~10 mins

Encryption at rest in Kafka - Commands & Configuration

Choose your learning style10 modes available
Introduction
Encryption at rest protects your data stored on disk by converting it into a secret code. This stops unauthorized people from reading your data even if they get access to the storage.
When you want to protect sensitive messages stored in Kafka topics from being read by unauthorized users.
When your company policy requires all stored data to be encrypted for compliance reasons.
When you want to secure Kafka logs and data files on disk in case of server theft or hacking.
When running Kafka on shared infrastructure and you want to isolate your data from other tenants.
When you want to add an extra layer of security beyond network encryption for Kafka data.
Config File - server.properties
server.properties
log.dirs=/var/lib/kafka/data

# Enable encryption at rest using the file system encryption
# Kafka itself does not provide built-in encryption at rest,
# so this example assumes using OS-level encryption like dm-crypt or LUKS.

# Example configuration for SSL encryption for data in transit (not at rest):
ssl.keystore.location=/var/private/ssl/kafka.server.keystore.jks
ssl.keystore.password=changeit
ssl.key.password=changeit
ssl.truststore.location=/var/private/ssl/kafka.server.truststore.jks
ssl.truststore.password=changeit

# To ensure data is encrypted at rest, configure your disk or volume with encryption tools
# outside Kafka, such as LUKS on Linux or BitLocker on Windows.

# This file shows Kafka server properties; encryption at rest is handled by the OS or storage layer.

This configuration file sets Kafka server properties.

Kafka does not have built-in encryption at rest, so you must encrypt the disk or volume where Kafka stores data.

The file shows SSL settings for encrypting data in transit, which is different from encryption at rest.

To encrypt at rest, use operating system or hardware encryption tools on the Kafka data directory.

Commands
Check the block devices and their mount points to identify the disk where Kafka data is stored.
Terminal
lsblk -o NAME,MOUNTPOINT,TYPE,UUID
Expected OutputExpected
NAME MOUNTPOINT TYPE UUID sda disk 1234-5678 ├─sda1 / part 1234-5678 └─sda2 /var/lib/kafka/data part 8765-4321
Encrypt the Kafka data partition using LUKS to enable encryption at rest on the disk.
Terminal
sudo cryptsetup luksFormat /dev/sda2
Expected OutputExpected
WARNING: Device /dev/sda2 already contains a filesystem (ext4). Are you sure you want to overwrite it? (Type uppercase YES): YES Enter passphrase for /dev/sda2: Verify passphrase:
Open the encrypted partition to make it accessible as a decrypted device.
Terminal
sudo cryptsetup luksOpen /dev/sda2 kafka_data_enc
Expected OutputExpected
No output (command runs silently)
Format the decrypted device with ext4 filesystem to store Kafka data.
Terminal
sudo mkfs.ext4 /dev/mapper/kafka_data_enc
Expected OutputExpected
mke2fs 1.45.6 (20-Mar-2020) Creating filesystem with 1310720 4k blocks and 327680 inodes Filesystem UUID: 123e4567-e89b-12d3-a456-426614174000 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done
Mount the encrypted and formatted device to Kafka's data directory so Kafka stores data encrypted on disk.
Terminal
sudo mount /dev/mapper/kafka_data_enc /var/lib/kafka/data
Expected OutputExpected
No output (command runs silently)
Restart Kafka to ensure it uses the encrypted data directory for storing data.
Terminal
systemctl restart kafka
Expected OutputExpected
No output (command runs silently)
Key Concept

Encryption at rest means protecting stored data by encrypting the disk or volume where Kafka saves its data, usually handled outside Kafka itself.

Common Mistakes
Trying to enable encryption at rest only by configuring Kafka server properties.
Kafka does not provide built-in encryption at rest; it only supports encryption in transit via SSL/TLS.
Use operating system or hardware disk encryption tools like LUKS or BitLocker to encrypt the Kafka data directory.
Encrypting the disk but not mounting it to Kafka's data directory.
Kafka will continue writing to the unencrypted directory, leaving data unprotected.
After encrypting and formatting the disk, mount it to the Kafka data directory before starting Kafka.
Not restarting Kafka after changing the data directory mount.
Kafka may not recognize the new encrypted storage and continue using old paths.
Always restart Kafka after mounting the encrypted volume to ensure it uses the encrypted storage.
Summary
Kafka does not have built-in encryption at rest; use OS-level disk encryption to protect stored data.
Encrypt the disk or partition where Kafka stores data using tools like LUKS, then mount it to Kafka's data directory.
Restart Kafka after mounting the encrypted disk to ensure data is stored securely.

Practice

(1/5)
1. What does encryption at rest mean in the context of Kafka?
easy
A. Encrypting data while it is being sent between Kafka brokers
B. Protecting stored Kafka data by making it unreadable without a key
C. Compressing Kafka messages to save disk space
D. Authenticating users before they access Kafka topics

Solution

  1. Step 1: Understand encryption at rest

    Encryption at rest means data stored on disk is encrypted to prevent unauthorized reading.
  2. Step 2: Differentiate from other security concepts

    Encryption in transit protects data moving between systems, not stored data.
  3. Final Answer:

    Protecting stored Kafka data by making it unreadable without a key -> Option B
  4. Quick Check:

    Encryption at rest = Protect stored data [OK]
Hint: Encryption at rest means stored data is unreadable without keys [OK]
Common Mistakes:
  • Confusing encryption at rest with encryption in transit
  • Thinking compression is encryption
  • Mixing authentication with encryption
2. Which of the following is the correct way to enable encryption at rest in Kafka?
easy
A. Use disk-level encryption or external tools since Kafka does not encrypt data on disk by default
B. Add encryption.at.rest=true in the Kafka topic configuration
C. Set ssl.enabled=true in the Kafka broker configuration
D. Configure kafka.security.encryption=true in the producer settings

Solution

  1. Step 1: Check Kafka's default encryption behavior

    Kafka does not encrypt data on disk by default; it requires external disk encryption or tools.
  2. Step 2: Review configuration options

    Options A, B, and D are not valid Kafka configurations for encryption at rest.
  3. Final Answer:

    Use disk-level encryption or external tools since Kafka does not encrypt data on disk by default -> Option A
  4. Quick Check:

    Kafka disk encryption = external tools [OK]
Hint: Kafka needs external disk encryption for data at rest [OK]
Common Mistakes:
  • Assuming SSL enables encryption at rest
  • Trying to set non-existent Kafka config keys
  • Confusing topic or producer configs with disk encryption
3. Given the following Kafka broker configuration snippet, what is the effect on data security?
listeners=PLAINTEXT://:9092
ssl.enabled.protocols=TLSv1.2,TLSv1.3
ssl.keystore.location=/var/private/keystore.jks
ssl.keystore.password=changeit
medium
A. Data is encrypted both on disk and during transmission
B. Data is encrypted on disk but not during transmission
C. Data is encrypted during transmission but not on disk
D. No encryption is enabled

Solution

  1. Step 1: Analyze the configuration

    The listeners are set to PLAINTEXT://:9092, which means connections are not encrypted (no SSL/TLS in transit). The SSL keystore settings are present but not activated for this listener.
  2. Step 2: Confirm no encryption at rest

    There are no settings for disk encryption; data on disk is unencrypted.
  3. Final Answer:

    Data is encrypted during transmission but not on disk -> Option C
  4. Quick Check:

    PLAINTEXT listener + no disk encryption = no encryption at rest, but SSL settings indicate encryption possible if listener changed [OK]
Hint: PLAINTEXT listener means no encryption in transit or at rest [OK]
Common Mistakes:
  • Assuming SSL encrypts data on disk
  • Ignoring the PLAINTEXT listener setting
  • Confusing keystore with disk encryption
4. You want to enable encryption at rest for Kafka data. You added the following to your broker config:
encryption.at.rest=true
But it does not work. What is the likely problem?
medium
A. You need to restart the Kafka producer, not the broker
B. The config key is case sensitive and should be Encryption.At.Rest
C. You must set ssl.enabled=true instead
D. Kafka does not support encryption.at.rest config; disk encryption must be external

Solution

  1. Step 1: Verify Kafka config support

    Kafka does not have a built-in encryption.at.rest configuration option.
  2. Step 2: Understand how to enable encryption at rest

    Encryption at rest requires external disk encryption tools or file system encryption.
  3. Final Answer:

    Kafka does not support encryption.at.rest config; disk encryption must be external -> Option D
  4. Quick Check:

    No native encryption at rest config in Kafka [OK]
Hint: Kafka needs external disk encryption, no native config key [OK]
Common Mistakes:
  • Trying to use non-existent Kafka config keys
  • Restarting wrong components
  • Confusing SSL with encryption at rest
5. You want to ensure Kafka data is encrypted at rest on a Linux server. Which approach correctly applies encryption at rest while keeping Kafka running smoothly?
hard
A. Use Linux LUKS disk encryption on the Kafka data directory and configure Kafka normally
B. Enable SSL in Kafka broker config to encrypt data on disk
C. Set Kafka topic config encryption.enabled=true to encrypt data at rest
D. Use Kafka producer encryption settings to encrypt data before writing to disk

Solution

  1. Step 1: Identify how to encrypt data at rest on Linux

    Linux LUKS provides full disk encryption, protecting Kafka data on disk transparently.
  2. Step 2: Confirm Kafka compatibility

    Kafka works normally on encrypted disks without special config; SSL and topic configs do not encrypt at rest.
  3. Final Answer:

    Use Linux LUKS disk encryption on the Kafka data directory and configure Kafka normally -> Option A
  4. Quick Check:

    Disk encryption tool + normal Kafka = encryption at rest [OK]
Hint: Use OS-level disk encryption for Kafka data at rest [OK]
Common Mistakes:
  • Thinking SSL encrypts data on disk
  • Expecting Kafka topic configs to encrypt data at rest
  • Trying to encrypt data only at producer level
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard