Consistent decisions
Every product service asks the same subject, action, object, and tenant question.
Authz centralizes tenant, role, resource, relationship, and conditional access decisions for every service that needs a reliable answer.
Inspect the published API contractAuthz domain
Deny-by-default decision boundary
Product boundary
Subject
User, group, or service identity
Action
The operation being requested
Object
Resource type and identifier
Context
Tenant, attributes, and consistency
Product outcome
Scattered role flags and local permission tables drift as the product grows. A dedicated Authz boundary gives services one deny-by-default decision contract while keeping policy logic visible, versioned, and adaptable in source.
Every product service asks the same subject, action, object, and tenant question.
Roles, bindings, relationships, and conditions evolve behind a stable runtime check.
Policy data, consistency behaviour, and caller authentication can be inspected by the owning team.
01 / Domain capabilities
Roles, bindings, relationships, and runtime checks remain inside an explicit customer policy namespace.
Grant actions through reusable roles or focused subject-to-resource relationships.
Represent parent and child resources so policy can follow the product hierarchy without duplicated grants.
Evaluate documented CEL conditions against request context and policy attributes where static roles are insufficient.
02 / Product workflow
Name the product operation in a vocabulary shared by callers and policy owners.
Connect a user, group, or service to a role or focused resource relationship.
Send subject, action, object, tenant context, and optional consistency requirements.
The calling service continues only after an explicit allow result and records the relevant context.
03 / Technical depth
POST /authz.v1.AuthorizationService/CheckPermission
Authorization: Bearer $TOKEN
Content-Type: application/json
{
"subject": { "user_id": "user_42" },
"action": { "name": "project.update" },
"object": { "type": "project", "id": "project_18" },
"context": { "tenant_id": "company_72" }
}Durable roles, bindings, object edges, conditions, and policy revision state.
Policy mutations can return a token for subsequent checks that require the documented revision behaviour.
Revision-ordered changes can feed reviewed caches and downstream policy consumers.
04 / Where it fits
Customer administrators manage roles and bindings inside their tenant while application services use one decision API.
Company, workspace, folder, and project relationships carry policy through a product hierarchy.
Conditions and time-bounded bindings support focused operational access without permanent global roles.
Ownership model
The source license, update term, support boundary, and customer-cloud responsibilities remain explicit. Missing domain work can be scoped as a custom module instead of hidden in a roadmap promise.
Licensed Go source for the authorization domain
Published REST and Connect/gRPC contract
Customer-controlled policy data and deployment
Custom policy adapters and domain actions can be scoped
Authz architecture review
Everything you need to know about integrating and hosting this Launch Rail service.