Skip to content

Projects

Projects let you group cloud resources into logical units — teams, environments, or business units — within your organisation. Many platform resources (KMS keys, secrets, DNS zones, VPCs, Kubernetes clusters, and others) can be scoped to a project when you set a project context on API calls.

Project-scoped IAM policies build on projects: they define who can do what on which resources within a specific project.

Projects require the projects feature gate on your organisation.

Getting started

Availability and prerequisites

RequirementCustomer impact
Organisation feature gate: projectsMust be enabled. If disabled, project and IAM policy APIs return 403
At least one projectIAM policies are defined per project
Organisation membershipCallers must be authenticated organisation members, service accounts, or OIDC clients with appropriate org access

Dependency chain:

  → projects feature gate enabled
    → at least one project created
      → IAM policies can be defined and bound
        → principals use X-Project-Identity on resource APIs

Organisation vs project

LayerPurposeAPI / header
OrganisationBilling, membership, org-wide rolesX-Organisation-Identity
ProjectLogical grouping of resources; optional parent/child tree/v1/projects
IAM policyProject-scoped RBAC (rules + bindings + conditions)/v1/projects/iam/policies
Organisation roleOrg-wide RBAC (unchanged model)/v1/iam/roles — see RBAC roles

Project hierarchy

Projects support a single parent per project with unlimited depth. Build the tree client-side from the flat project list using each project’s parentProject reference.

Organisation
└── Project "platform"
    ├── Project "team-a"
    └── Project "team-b"
        └── Project "team-b-staging"

Use projects to mirror teams, environments, or business units. A child project inherits replicated IAM policies from ancestor projects when configured — see Policy replication.

Creating a project

When you create a project, the platform provisions default system IAM policies and binds the creating principal to the admin policy.

Side effectDescription
Default system IAM policiesPlatform-managed policies mirroring organisation default role templates (including admin)
Creator bindingThe creating principal is automatically bound to the project admin policy
Ancestor replicationIf a parent project is set, replicated policies from ancestor projects are synced into the new project

Parent project

  • Optional at create via parentProjectIdentity
  • Can be changed or cleared on update
  • Parent must exist in the same organisation; cycles are rejected

Project context on resource APIs

Many platform resources are project-scoped when X-Project-Identity is set (or an OIDC project claim / ?project= query parameter is provided). IAM policy bindings on that project then contribute to permission checks.

ContextBehaviour
With project contextOrganisation roles still apply, plus IAM policy bindings on the active project
Without project contextOnly organisation-scoped resources and organisation roles apply

Project resolution order: OIDC claim projectX-Project-Identity?project= query parameter.

Deleting a project

Delete returns 400 if the project still has dependent resources. Remove or migrate resources before deleting the project.

Related documentation