Hardware Key Support

As of v1.5.0 the Floating Server supports using hardware keys (Yubikey) as a license protection method. If a license requires the usage of a hardware key a valid provisioned key must be accessible from the Pod running the floating server.

Limitations

  • Only one replica running at the same time - no HA support as of now

  • The pod running the floating server is tied to the node which has the key connected

Requirements

General

Getting the udev information for the device.

1

Identify the device on the USB bus

First get the device bus and device ID with lsusb.

2

Build the device path

Combine them into /dev/bus/usb/<bus_id>/<device_id>.

3

Query udev attributes

Using udevadm get the attributes for the device:

udevadm info --attribute-walk --path=$(udevadm info --query=path /dev/bus/usb/<bus_id>/<device_id>)

Usually for Yubikeys these attributes are enough. But results may vary depending on system.

Example attribute match: SUBSYSTEM=="usb", ATTR{idProduct}=="0407", ATTR{idVendor}=="1050"

Setting up the floating server helm chart for use with a hardware key

  • Set .Values.hardwareKeySupport = true — disables replicas, values for .Values.replica will be ignored and set to 1

Example - Akri plugin

1

Install and configure Akri with udev discovery: https://docs.akri.sh/user-guide/getting-started

2

Add a udev rule for Yubikey as a separate configuration or as part of the helm chart values. (Examples below)

3

Add the akri flags to .Values.resources.limits and .Values.resources.requirments

Example 1 - akri configmap

Example 2 - setting udev rules via helm values - akri chart

Example 3 - resource values for floating server chart

Was this helpful?