feat(spec): add ADR-0021 to support multiple identities via alsoKnownAs - #91
feat(spec): add ADR-0021 to support multiple identities via alsoKnownAs#91ramizpolic wants to merge 7 commits into
alsoKnownAs#91Conversation
|
Preview: https://ai-catalog.io/pr/91/spec/ This comment is updated automatically while the pull request preview is available. |
alsoKnownAsalsoKnownAs
|
I feel there is inconsistency with type discovery for If we don't want to remove |
|
thanks for raising this @kthota-g. i have patched the spec to include details around type inference for alias identities, hope it addresses your concerns. |
|
@ramizpolic Can you clarify why we don't need identityType? Can we also clarify if the purpose is both to be an alternative identify, and a record of a rename. i.e. the "alsoKnownAs" includes "formerlyKnownAs". |
| resolve — for example, using a DID alias for DID-based discovery when | ||
| its tooling cannot resolve a canonical SPIFFE ID. |
There was a problem hiding this comment.
The example's consumer can't resolve the canonical SPIFFE ID, but key resolution is based on identity. So it can't verify the signature the alias depends on. Would a case where identity resolves fit better?
There was a problem hiding this comment.
Good catch, thanks @yangbaechu! Added a fix to the spec to state explicitly that signature verification always resolves the key from the canonical identity (so a consumer that can't resolve it can't rely on any alias) and patched the examples.
|
This is something that would be valuable to my use case. We would like to have the flexibility to issue a DID and SPIFFE id. There different preferences depending on the use and who is using the ai-catalog that may require DID or SPIFFE and I've heard requests for each. |
| "trustManifest": { | ||
| "identity": "spiffe://acme.com/ns/finance/sa/finance-agent-pod", | ||
| "identityType": "spiffe", | ||
| "alsoKnownAs": [ |
There was a problem hiding this comment.
does this need a type or at least the possibility of a type?
Perhaps:
"alsoKnownAs" : [
{
"identity": "did:web:acme-corp.com:agent:finance",
"identityType": "did:web",
}
]
There was a problem hiding this comment.
Thanks for raising this @jdamick. I patched the spec to use an array of Identity Alias objects mirroring the canonical identity/identityType pair. This also covers your use case as consumers can pick the alias by explicit type rather than inferring from schemes (which is not always possible as described in #91 (comment)).
Signed-off-by: Ramiz Polic <rpolic@cisco.com>
Signed-off-by: Ramiz Polic <rpolic@cisco.com>
Signed-off-by: Ramiz Polic <rpolic@cisco.com>
Signed-off-by: Ramiz Polic <rpolic@cisco.com>
Signed-off-by: Ramiz Polic <rpolic@cisco.com>
Signed-off-by: Ramiz Polic <rpolic@cisco.com>
5c09f35 to
2496185
Compare
Signed-off-by: Ramiz Polic <rpolic@cisco.com>
alsoKnownAsalsoKnownAs
Good points @darrelmiller, addressed both of the questions in the spec:
|
|
Proposal: Registry-scoped identity + The Pattern: Make identity deterministic from registry. Let artifacts declare schemes within each registry: Same artifact, different canonical identities per registry. Within each, the artifact declares which schemes it recognizes. Why Together:
Media-Types are definitive, yet No Media-Types Required: You don't need IANA registration to implement registry-scoped identity. You need:
Lower bar, same problem solved. |
I'm not sure I understand this proposal because the entries or the trustManifest have the identifier, not the registry. Why would you promote the identifier to the registry level? I don't see how that addresses what is being discussed here? |
|
You're right. The trustManifest has the identifier; the signature covers it. alsoKnownAs with manifest signature already solves the multi-scheme problem. I was proposing a registry-level constraint where you already have one. |
|
An artifact's identity has no bearing on the catalog that's hosted in. For example: A finance-agent published by acme.com and its Although catalog host's identity itself can be verified via |
Summary
This PR resolves #52 (support for multiple identities per artifact) by adding an
OPTIONAL
alsoKnownAsmember to the Trust Manifest, following the approachfavored in the issue discussion and AI Catalog meeting over an
identities[]array.Real artifacts frequently hold more than one verifiable identity at the same
time, for example a SPIFFE ID for runtime workload identity and a DID for
publisher-anchored organizational identity. Today there is no first-class
place to declare them, forcing publishers to embed secondary identities
through
attestations[]ormetadata, where consumers cannot discover orverify them.
Changes Included
ADR-0019: Documents the decision to declare alternative identitiesthrough an
alsoKnownAsURI array inside the Trust Manifest (rather thanon the Catalog Entry), so aliases are covered by the existing manifest
signature and remain verifiable through the trust bundle.
ai-catalog.md:alsoKnownAsmember to the Trust Manifest optional members,with normative rules (canonical
identity, no duplicates,domain-alignment applies only to
identity).verifying the manifest
signatureverifies every listed alias, noper-alias proof mechanism is required.
Motivation
Consumers can programmatically discover and pin alternate identities of the
same subject using whichever identity scheme their tooling resolves, while
identityremains the single canonical identifier for referencing andequivalence checking. Because
alsoKnownAslives inside the signed manifestcontent, no new signing mechanism is needed and the field is tamper-proof
under the catalog-poisoning threat model.