ceph / ceph/ceph-csi

nvmeof: CSI Driver TLS/PSK Feature Implementation

Open
#5,717 4 comments 0 reactions 2 assignees Claimed by @nixpanic View on GitHub
component/nvme-of keepalive
Dominant language
Go
Stars
1.6k
Forks
617
Avg merge
5d 10h
Merged PRs (30d)
43

Description

# TLS-PSK Support for NVMe-oF CSI Driver

## Overview

Add TLS-PSK (Pre-Shared Key) support to enable encrypted NVMe-oF connections between Kubernetes nodes and Ceph gateways.

## Implementation Approach

### Key Storage (addressing @nixpanic feedback)

PSKs are stored using the existing DEKStore pattern, not Kubernetes Secrets:
- **Testing**: RBD image metadata
- **Production**: External KMS (Vault, AWS KMS, etc.)
- Keys are encrypted before storage using the SecurityKeyManager
- CSI-agnostic approach that works without Kubernetes

### Key Scope

**Per host-subsystem pair**
- Multiple volumes on the same host connecting to the same subsystem share one PSK
- Key ID format: `nvmeof-tls-psk--`

### Key Retrieval Pattern

Controller and node retrieve keys independently:
- Controller: Generates PSK during ControllerPublishVolume, stores in DEKStore
- Node: Retrieves same PSK during NodeStageVolume using identical key ID
- No secrets passed between controller and node

## Configuration

StorageClass parameter:
```yaml
parameters:
tlsPskMode: "enabled"
authenticationKMSID: "metadata" # or vault, aws-kms, etc.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.