Integrate MIAF and WFM identity profile SUPs - #194
Conversation
Replace the Management Interface security model with
the MIAF and WFM Identity Profile SUPs: add the Identity
and Authorization section, switch to mTLS with X.509-SVIDs,
drop {clientId} from routes, and remove the onboarding,
certificate, and RFC 9421 payload-signing paths.
Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
phil-abb
left a comment
There was a problem hiding this comment.
Here's some preliminary feedback.
Rework the Trust Bundle retrieval endpoint to return a single SPIFFE bundle (a JWK Set) per the SPIFFE Federation bundle- endpoint model, instead of a SPIFFE Bundle Map. Scope federation as future work and state that a verifier validates SVIDs against its own Trust Domain. Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
…uirements-and-security.md Co-authored-by: Philip Presson <philip.presson@us.abb.com> Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
…rations.md Co-authored-by: Philip Presson <philip.presson@us.abb.com> Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Co-authored-by: Philip Presson <philip.presson@us.abb.com> Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
…rations.md Co-authored-by: Philip Presson <philip.presson@us.abb.com> Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
…rations.md Co-authored-by: Philip Presson <philip.presson@us.abb.com> Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Co-authored-by: Philip Presson <philip.presson@us.abb.com> Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Co-authored-by: Philip Presson <philip.presson@us.abb.com> Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Co-authored-by: Philip Presson <philip.presson@us.abb.com> Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Prefix every link to a page in the same folder with "./" to force the Fumadocs resolving the link as a relative link (solves the 404 issue) Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
The published site (Fumadocs, at docs.margo.org) builds its sidebar from a meta.json in each folder; with none present it falls back to alphabetical order, which scrambles the intended reading sequence. Add a meta.json for each specification section that sets the section title and lists its pages in the order given by mkdocs.yml, so the rendered site matches the local mkdocs preview. Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
This comment was marked as outdated.
This comment was marked as outdated.
…ification into feat/miaf-integration Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
d78526e to
401255a
Compare
Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Co-authored-by: Philip Presson <philip.presson@us.abb.com> Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
This comment was marked as resolved.
This comment was marked as resolved.
Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
6ca5769 to
3415662
Compare
…rator The Trust Domain can be derived from the provisioned SVID alone by inspecting the SPIFFE ID in the cert's URI SAN. Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
…rt pinning) Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
|
|
||
| ## X.509-SVID Profile | ||
|
|
||
| MIAF adopts the [SPIFFE X.509-SVID specification](https://github.com/spiffe/spiffe/blob/main/standards/X509-SVID.md) by reference. X.509-SVID is the SVID representation used throughout MIAF. |
There was a problem hiding this comment.
Maybe would be good to mention if it pinned to a specific version. And how future versions are handled
There was a problem hiding this comment.
Good point, this is already covered here.
| | **RSA (≥3072 + SHA-256)** | Modulus MUST be at least 3072 bits; signatures MUST use SHA-256. RSASSA-PSS (`PS256`, [RFC 8017](https://datatracker.ietf.org/doc/html/rfc8017)) is RECOMMENDED. RSASSA-PKCS#1 v1.5 (`RS256`) MAY be used only for X.509 certificate and CSR signatures (today the only RSA signatures in MIAF), for compatibility with issuing CAs that cannot produce PSS signatures (its use there remains sanctioned by [NIST SP 800-131A Rev 2](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-131Ar2.pdf)). Any other RSA signature MIAF defines later MUST use PSS. | | ||
|
|
||
| - **ECDSA P-256 with SHA-256 is mandatory to implement.** Every MIAF component MUST implement it, for both presenting and validating SVIDs, so that any two components always share at least one algorithm. | ||
| - A component MAY additionally implement EdDSA (Ed25519), RSA, or both. Because a principal presents a single SVID bound to one signature algorithm, an SVID issued with a non-mandatory algorithm can be validated only by peers that implement that algorithm; a peer that does not will fail to validate it. Selecting an SVID signature algorithm that is supported across the Trust Domain is therefore the operator's responsibility at issuance (see [operator provisioning playbook](./identity-lifecycle.md#operator-provisioning-playbook)). ECDSA P-256 with SHA-256 is always a safe choice. |
There was a problem hiding this comment.
"Because a principal presents a single SVID bound to one signature algorithm" is technically imprecise. An SVID has:
- a subject public-key algorithm
- a CA certificate-signature algorithm
A MIAF profile could require the issuing CA to use the same algorithm family and parameters as the principal.
There was a problem hiding this comment.
Agreed, the wording was imprecise and could mislead people reading the spec. I have reworded that paragraph so that it now covers the signature algorithm of each certificate in the chain and the public-key algorithm of the leaf key.
A MIAF profile could require the issuing CA to use the same algorithm family and parameters as the principal.
I'd rather not add this requirement. An enterprise root CA using RSA with leaf certificates using EC is a common enough pattern, so I'd be concerned to over-constrain here. We'll also need mixed chains for post quantum transition. The updated wording puts the responsibility on the operator. So if an operator wants to be on the safe side, they can always choose ECDSA P-256 with SHA-256 throughout the chain.
There was a problem hiding this comment.
Maybe not the complete chain but at least the Issuing CA of the SVID?
There was a problem hiding this comment.
Mh, I'm not sure what that would buy us. Suppose we have an RSA root with an EC intermediate issuing EC leaf certificates. The verifier still needs RSA because the intermediate's certificate is signed with the root's RSA key. The set of algorithms the verifier must implement doesn't shrink. Meanwhile the constraint would tie the issuing CA's key to the leaf's algorithm family. So I'd leave this as operator guidance.
Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Signed-off-by: Matthias Lechner <matlec.public@gmail.com>
Description
Integrates the two voted MIAF SUPs into the normative specification:
What changes
PayloadSignaturescheme are removed.{clientId}from every route. Caller identity now comes from the authenticated SPIFFE ID. Retained endpoints gain a403for local-policy denial andCache-Control: private.mutualTLSscheme and nullable typing require.Deliberate deviations from the SUPs
wfm-id, so there is no separate target-identifier config item (which simplifies configuration and operations).spiffe_sequencewith fail-closed on an empty bundle, refresh driven byspiffe_refresh_hint, and RFC 9440 section 4 spoof-proofing for the forwardedClient-Certheader.Issues Addressed
Change Type
Please select the relevant options:
Checklist