Skip to content

Add simplified enrollment system design spec#4197

Open
chesterxgchen wants to merge 4 commits intoNVIDIA:mainfrom
chesterxgchen:enrollment_design_doc
Open

Add simplified enrollment system design spec#4197
chesterxgchen wants to merge 4 commits intoNVIDIA:mainfrom
chesterxgchen:enrollment_design_doc

Conversation

@chesterxgchen
Copy link
Collaborator

Summary

Add a comprehensive design document (docs/design/enrollment_design.md) for FLARE's simplified enrollment system. This replaces the centralized provisioning model with two CSR-based workflows where private keys are always generated locally and never transmitted.

Manual Workflow (5-10 participants)

  • Site Admin generates private key + CSR locally
  • Sends only the CSR to Project Admin for signing
  • Project Admin signs and returns cert + rootCA.pem + Server URI
  • Site Admin generates startup kit locally with nvflare package
  • No additional infrastructure required

Auto-Scale Workflow (10+ participants)

  • Same CSR model, automated via Certificate Service + enrollment tokens
  • Project Admin distributes tokens to invited participants only
  • Sites auto-generate CSR at startup, submit to Certificate Service
  • Token authorizes automatic CSR signing
  • Trade-off: requires deploying Certificate Service

Document contents

  • Executive summary with step-by-step workflow tables
  • CLI command specs: nvflare cert csr, nvflare cert sign, nvflare cert init, nvflare token, nvflare package
  • K8s deployment examples using K8s Secrets, ExternalSecret CRD, and ConfigMap
  • Certificate Service architecture, HTTP API, approval policies
  • Security analysis and threat model
  • Implementation details and component overview

Test plan

  • Documentation review: verify workflow steps are consistent across all sections
  • Code example review: CLI commands and K8s manifests are syntactically correct
  • No runtime impact -- documentation only, no code changes

Comprehensive design document for FLARE simplified enrollment system
covering two CSR-based workflows:

- Manual Workflow (5-10 participants): Site Admin generates private key
  + CSR locally, Project Admin signs and returns cert + Server URI.
  Private keys never leave the site. No infrastructure required.

- Auto-Scale Workflow (10+ participants): Same CSR model, automated via
  Certificate Service + enrollment tokens. Tokens authorize automatic
  CSR signing. Trade-off: requires Certificate Service deployment.

Includes CLI command specs (nvflare cert csr/sign/init, nvflare token,
nvflare package), K8s deployment examples with Secret Store patterns,
security analysis, approval policies, and implementation details.
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 15, 2026

Greptile Summary

This PR adds a comprehensive design specification for NVIDIA FLARE's simplified enrollment system. The document proposes replacing the centralized provisioning model with two CSR-based workflows where private keys are always generated locally and never transmitted:

Key changes:

  • Manual Workflow (5-10 participants): Site admins generate private keys and CSRs locally, project admins sign them and return certificates
  • Auto-Scale Workflow (10+ participants): Same CSR model but automated via Certificate Service with enrollment tokens
  • Complete CLI command specifications for nvflare cert, nvflare token, and nvflare package
  • Kubernetes deployment examples using Secrets, ConfigMaps, and ExternalSecret CRDs
  • Certificate Service architecture with HTTP API, approval policies, and security analysis
  • Integration points with existing FLARE components maintaining backward compatibility

The document is well-structured with clear workflow tables, code examples, architecture diagrams (ASCII), and comprehensive security considerations. All CLI commands appear consistent across sections, K8s manifests are syntactically correct, and the design maintains backward compatibility with existing provisioning workflows.

Confidence Score: 5/5

  • This PR is safe to merge - it's a documentation-only change with no code modifications
  • Documentation-only PR with no runtime impact. The design document is comprehensive, well-structured, and internally consistent. CLI commands are consistent across all sections, K8s examples are syntactically correct, and workflow descriptions align throughout the document. No security concerns as this only adds documentation.
  • No files require special attention

Important Files Changed

Filename Overview
docs/design/enrollment_design.md New comprehensive design document for simplified enrollment system with Manual and Auto-Scale CSR-based workflows

Last reviewed commit: 4802ac7

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 file reviewed, no comments

Edit Code Review Agent Settings | Greptile

- Add rootCA.pem to concerns table and complexity comparison for Manual
  Workflow deliverables
- Standardize Org Admin -> Site Admin terminology throughout
- Fix PostgreSQL schema to match SQLite: enrolled_sites -> enrolled_entities,
  site_name -> name, participant_type -> entity_type
- Add Trust Model note clarifying Manual (Project Admin holds root CA key)
  vs Auto-Scale (Certificate Service holds root CA key)
- Replace remaining bare env var K8s examples with Secret-based patterns
- Fix typos: 365\) -> 365), enrollment.token -> enrollment_token
- Fix grammar: Flare Dashboard run-on sentence
Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 file reviewed, no comments

Edit Code Review Agent Settings | Greptile

…re diagram

- Convert RST-style blocks to proper Markdown (code fences, bold labels)
- Fix HTTP API section with clean Request/Response and json blocks
- Fix Admin CLI, Configuration YAML, CertServiceApp/Starting/Recommended code blocks
- Fix Client/Server Auto-Enrollment Flow and Helper Functions Python blocks
- Fix SQLiteEnrollmentStore section (SELECT *, escapes, **keyword**)
- Redraw token-based enrollment architecture diagram (ASCII, PROJECT ADMIN -> Certificate Service -> FL Server/Clients)
- Normalize list bullets and remove duplicate code fences
- Diagram: align CERTIFICATE SERVICE box, CertService line, add spaces around mTLS arrow
- Normalize list bullets (* to -) in PKI and When to use separate keys
- Rewrite Policy Elements section from RST-style to clean Markdown lists
- Add colon to Design goals addressed for consistency with Key Benefits
Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 file reviewed, no comments

Edit Code Review Agent Settings | Greptile

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant