Skip to content

mjmac/DAOS 18783 pr7 ftest - #18731

Draft
mjmac wants to merge 7 commits into
masterfrom
mjmac/DAOS-18783-pr7-ftest
Draft

mjmac/DAOS 18783 pr7 ftest#18731
mjmac wants to merge 7 commits into
masterfrom
mjmac/DAOS-18783-pr7-ftest

Conversation

@mjmac

@mjmac mjmac commented Jul 28, 2026

Copy link
Copy Markdown
Contributor
  • DAOS-18783 pool: add pool_ca and cert_watermarks byteval properties
  • DAOS-18783 pool: wire changes for pool connect and gRPC
  • DAOS-18783 control: per-pool node cert security library
  • DAOS-18783 client: request and attach per-pool node certs
  • DAOS-18783 control: enforce per-pool node cert at connect
  • DAOS-18783 control: dmg pool admin surface for node auth
  • DAOS-18783 test: ftest coverage for per-pool node authentication

@github-actions

Copy link
Copy Markdown

Errors are component not formatted correctly,Ticket number prefix incorrect,PR title is malformatted. See https://daosio.atlassian.net/wiki/spaces/DC/pages/11133911069/Commit+Comments,Unable to load ticket data
https://daosio.atlassian.net/browse/mjmac/DAOS

@mjmac
mjmac force-pushed the mjmac/DAOS-18783-pr7-ftest branch from 7285602 to 042850c Compare July 28, 2026 15:35
mjmac added 7 commits July 28, 2026 14:03
Flesh out support for byteval pool properties, and add new properties
for per-pool CA bundle and CN revocation watermarks. Manually tested
for upgrade/downgrade support without requiring a pool version bump
or explicit pool upgrade. Older servers ignore the unknown properties,
and newer servers gracefully handle unset optional properties.

Patch: 1/7
Features: pool
Signed-off-by: Michael MacDonald <github@macdonald.cx>
Pack all of the RPC and protobuf changes into a single commit
for easier review. Subsequent patches in the stack will make
use of them to enable new functionality.

Major changes:
  * Add v8 pool_connect RPC with optional per-pool node certs
  * Add Pool cert management RPCs to mgmt protobufs
  * Add PoP (Proof of Possession) proto message

Patch: 2/7
Features: pool
Signed-off-by: Michael MacDonald <github@macdonald.cx>
Extend the security package with new types and utility methods
for managing per-pool node certificates. When per-pool auth
is enabled, clients must present a signed proof-of-possession
which is validated by the server before allowing a connection.

Subsequent commits will build on this infrastructure to
implement the full feature.

Patch: 3/7
Signed-off-by: Michael MacDonald <github@macdonald.cx>
When connecting to a v8 server, the client asks the agent for a
per-pool node cert and proof-of-possession along with the user
credential, and attaches them to the pool connect request. Old
servers cost nothing: the cert request is skipped entirely when the
negotiated protocol cannot carry it.

On the agent, the feature is gated by explicit configuration rather
than cert-file presence, and requires transport security. A pool
with no deployed cert is passed through for the server to judge;
any other cert failure fails the credential request with BadCert so
misconfiguration surfaces at the client instead of as an opaque
server-side rejection.

Adds two new daos_agent credential_config parameters:
  * pool_auth_enabled: (true|default false)
  * node_cert_dir: defaults to /etc/daos/certs/<system_name>/node_certs/

Patch: 4/7
Features: daos_agent
Signed-off-by: Michael MacDonald <github@macdonald.cx>
When a pool has a CA installed, the engine forwards the presented
node cert and proof-of-possession to the control plane over dRPC,
where the security library validates it; the connect is rejected
unless the presentation checks out. Pools without a CA behave
exactly as before. The control-plane handler is a thin adapter:
sentinel-error-to-status mapping and a bounded replay cache keyed
on the proof's (pool, handle) binding.

Adds a pool_cert_max_clock_skew transport config option to widen
the PoP freshness window for deployments with sloppy clocks.

Patch: 5/7
Features: pool
Signed-off-by: Michael MacDonald <github@macdonald.cx>
Add dmg subcommands and Control API for managing per-pool CAs
and client certificates.

Patch: 6/7
Signed-off-by: Michael MacDonald <github@macdonald.cx>
Add ftest scenarios for the node-cert lifecycle (set-cert, get-cert,
add-client, delete-cert) and for revocation (revoke-client must evict
active handles and prevent reconnect with the old cert).

Patch: 7/7
Features: pool_cert
Signed-off-by: Michael MacDonald <github@macdonald.cx>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant