Repository navigation
Replies: 5 comments
Update: outcome of the 19 Oct design syncWe refined option 3 ("a project is a root organization unit") in a design sync. This comment records what we agreed and what is still open. Agreed1. A project is a first-class record, backed by one root OU.
2. Control plane APIs take a project ID.
3. The data plane takes OU IDs only.
4. One codebase, plane-specific behavior.
5. Project access is decided per request.
6. Listings are scoped automatically, without an
7. Resources that are not OU-bound stay outside projects for now.
8. Option 4 remains the long-term direction. (One project can have resources directly without the OU and it also can have OUs)
Still open
Next steps
|
Proposed UI for the projectsProject List
Project switch
Project creation wizard
Project details
Delete confirmation
@jeradrutnam @savindi7 @NipuniBhagya Appreciate your feedback on this. |
|
Hey @Malith-19 , Let's use the components coming from Oxygen UI once the project feature related components are finalized.. |










Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Related Feature Issue
#5861
Related: #2645 (B2B support), #3346 (common resource architecture), #3310 (resource modeling first principles), #5511 (resource sharing specification)
Problem Summary
ThunderID has no way to group identity configuration by product. Inside one deployment, every application, resource server, role, flow and connection sits in one pool, so teams building several products cannot manage, promote or later delegate them separately. Developer platforms commonly organize work as organization > project, with dev, stage and prod environments as siblings of the project. Platforms that integrate with ThunderID in this way have nowhere to place the identities they create for a project, so they fall back on the default OU and encode the project in resource names.
This discussion proposes the smallest model that gives ThunderID projects without changing its core resource model, and asks for input on the open points listed at the end.
High-Level Approach
A project is a root organization unit.
ouId; no new column is added.Why a root OU and not a new construct: in ThunderID an OU is already the unit that owns resources, and the B2B work is making every resource OU-bound (#3310, #3346). The root OU is where a solution starts: nothing else in the tree can be created without it. Calling that starting point a project gives a grouping that every OU-bound resource, current and future, inherits without being changed. Platforms that run workloads often define a project as a runtime namespace; this is the equivalent definition from ThunderID's resource model.
Architecture Overview
How the concepts map
DEPLOYMENT_IDouIdis in the project's subtreeSecurity Considerations
Root OU creation becomes privileged. Only the project API, used by a root administrator or a trusted management client, can create a root OU. This also stops an OU administrator from creating a sibling tree.
Externally supplied project IDs are accepted only from the control plane, through an authenticated, root-privileged client. The ID must be a valid UUID that is not already used by any OU.
The project boundary is enforced at configuration time only. At runtime there is no project boundary; for example, a role assignment grants its permissions regardless of project. This is the same as today, but must be documented clearly so a project is not mistaken for runtime isolation. Hard isolation remains an environment (deployment) concern.
Cross-project references. Until a sharing model exists, management APIs should refuse a reference from a resource in one project to a resource in another, for example an app in project A using a role or user type of project B.
Runtime exposure. Projects can surface at runtime as root OUs:
ouId,ouNameandouHandletoken claims;Project names should not be considered secret, and deployments that do not use B2B features may want to hide these surfaces (see question 6).
Admin scoping. Until B2B delegated administration lands, most resource types (applications, resource servers, roles, flows) need root permission. A project does not yet restrict what an administrator can see.
Impacted Areas
sysauthz): project-scoped administration, together with B2BAlternatives Considered
Option 1: a project label on resources. A project ID column is added to every resource, and a project may contain several root OUs.
Option 2: a label with exactly one root OU per project. The project still carries resources that are not OU-bound.
Option 3: project = root OU (proposed).
Option 4: a project as a first-class construct.
Earlier variants also considered:
PROJECT_IDscoping dimension next toDEPLOYMENT_ID. It largely duplicates OU ownership once B2B lands.Questions for Community Input
All reactions